static int __devexit pm8901_remove(struct i2c_client *client) { struct pm8901_chip *chip; chip = i2c_get_clientdata(client); if (chip) { if (chip->pm_max_irq) { set_irq_wake(chip->dev->irq, 0); free_irq(chip->dev->irq, chip); } mfd_remove_devices(&chip->dev->dev); chip->dev = NULL; kfree(chip); } pmic8901_dbg_remove(); return 0; }
static int __devexit pm8901_remove(struct platform_device *pdev) { struct pm8901_chip *chip; chip = platform_get_drvdata(pdev); if (chip) { if (chip->pm_max_irq) { irq_set_irq_wake(chip->pdata.irq, 0); free_irq(chip->pdata.irq, chip); } mfd_remove_devices(chip->dev); chip->dev = NULL; kfree(chip); } pmic8901_dbg_remove(); return 0; }