static int __devexit rt5033_regulator_remove(struct platform_device *pdev) { struct regulator_dev *rdev = platform_get_drvdata(pdev); const struct rt5033_pmic_irq_handler *irq_handler = NULL; int irq_handler_size = 0; switch (pdev->id) { case RT5033_ID_LDO_SAFE: irq_handler = rt5033_pmic_safeldo_irq_handlers; irq_handler_size = ARRAY_SIZE(rt5033_pmic_safeldo_irq_handlers); break; case RT5033_ID_LDO1: irq_handler = rt5033_pmic_ldo_irq_handlers; irq_handler_size = ARRAY_SIZE(rt5033_pmic_ldo_irq_handlers); break; case RT5033_ID_DCDC1: irq_handler = rt5033_pmic_buck_irq_handlers; irq_handler_size = ARRAY_SIZE(rt5033_pmic_buck_irq_handlers); break; default: pr_err("Error : invalid ID\n"); } unregister_irq(pdev, rdev, irq_handler, irq_handler_size); platform_set_drvdata(pdev, NULL); regulator_unregister(rdev); return 0; }
static int rt5033_fled_remove(struct platform_device *pdev) { struct rt5033_fled_info *fled_info; RT5033_FLED_INFO("Richtek RT5033 FlashLED driver removing...\n"); fled_info = platform_get_drvdata(pdev); unregister_irq(pdev, fled_info); platform_device_unregister(&rt_fled_pdev); mutex_destroy(&fled_info->led_lock); kfree(fled_info); return 0; }