Esempio n. 1
0
static int p61_remove(struct spi_device *spi)
{
    struct p61_dev *p61_dev = p61_get_data(spi);
    P61_DBG_MSG("Entry : %s\n", __FUNCTION__);

#ifdef P61_HARD_RESET
    if (p61_regulator != NULL)
    {
        regulator_disable(p61_regulator);
        regulator_put(p61_regulator);
    }
    else
    {
        P61_ERR_MSG("ERROR %s p61_regulator not enabled \n", __FUNCTION__);
    }
#endif
    gpio_free(p61_dev->rst_gpio);


#ifdef P61_IRQ_ENABLE
    free_irq(p61_dev->spi->irq, p61_dev);
    gpio_free(p61_dev->irq_gpio);
#endif

    mutex_destroy(&p61_dev->read_mutex);
    misc_deregister(&p61_dev->p61_device);

    if(p61_dev != NULL)
        kfree(p61_dev);
    P61_DBG_MSG("Exit : %s\n", __FUNCTION__);
    return 0;
}
Esempio n. 2
0
static int __devexit p61_remove(struct spi_device *spi)
{
	struct p61_dev *p61_dev = p61_get_data(spi);
	NFC_DBG_MSG("Entry : %s\n", __FUNCTION__);
	NFC_DBG_MSG(KERN_INFO  " %s ::  name : %s ", __FUNCTION__, p61_dev ->p61_device.name  );

	free_irq(p61_dev->spi->irq, p61_dev);
	mutex_destroy(&p61_dev->read_mutex);
	misc_deregister(&p61_dev->p61_device);
	gpio_free(P61_IRQ);
	gpio_free(P61_RST);
    if(p61_dev != NULL)
		kfree(p61_dev);
	NFC_DBG_MSG("Exit : %s\n", __FUNCTION__);
	return 0;
}