]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/power/pda_power.c
drivers/power: fix platform driver hotplug/coldplug
[linux-2.6-omap-h63xx.git] / drivers / power / pda_power.c
index c8aa55b81fd86458f7c5dbcdcbc486a81c8cb5a7..0471ec743ab9561425d723482c986b809fbf1d9c 100644 (file)
@@ -209,6 +209,12 @@ static int pda_power_probe(struct platform_device *pdev)
 
        pdata = pdev->dev.platform_data;
 
+       if (pdata->init) {
+               ret = pdata->init(dev);
+               if (ret < 0)
+                       goto init_failed;
+       }
+
        update_status();
        update_charger();
 
@@ -298,6 +304,9 @@ ac_irq_failed:
        if (pdata->is_ac_online)
                power_supply_unregister(&pda_psy_ac);
 ac_supply_failed:
+       if (pdata->exit)
+               pdata->exit(dev);
+init_failed:
 wrongid:
        return ret;
 }
@@ -318,6 +327,8 @@ static int pda_power_remove(struct platform_device *pdev)
                power_supply_unregister(&pda_psy_usb);
        if (pdata->is_ac_online)
                power_supply_unregister(&pda_psy_ac);
+       if (pdata->exit)
+               pdata->exit(dev);
 
        return 0;
 }
@@ -351,6 +362,8 @@ static int pda_power_resume(struct platform_device *pdev)
 #define pda_power_resume NULL
 #endif /* CONFIG_PM */
 
+MODULE_ALIAS("platform:pda-power");
+
 static struct platform_driver pda_power_pdrv = {
        .driver = {
                .name = "pda-power",