summaryrefslogtreecommitdiffstats
path: root/drivers/staging/nvec/nvec_power.c
diff options
context:
space:
mode:
authorMarc Dietrich <marvin24@gmx.de>2012-06-24 23:25:21 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-06-25 10:55:38 -0700
commit3cdde3a3d55e64e6d1ae3465701c8d9f226775f3 (patch)
treefa22619c8e6f81ac6d34c3affffeab0514046ce7 /drivers/staging/nvec/nvec_power.c
parentac562680577a28fa98ebecebff5e5097ccf9a9d2 (diff)
staging: nvec: add remove function to nvec childs
This patch cleanups registered devices on remove. Signed-off-by: Marc Dietrich <marvin24@gmx.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/nvec/nvec_power.c')
-rw-r--r--drivers/staging/nvec/nvec_power.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/staging/nvec/nvec_power.c b/drivers/staging/nvec/nvec_power.c
index 063f6d5e8ab..cc8ccd75e7f 100644
--- a/drivers/staging/nvec/nvec_power.c
+++ b/drivers/staging/nvec/nvec_power.c
@@ -407,8 +407,25 @@ static int __devinit nvec_power_probe(struct platform_device *pdev)
return power_supply_register(&pdev->dev, psy);
}
+static int __devexit nvec_power_remove(struct platform_device *pdev)
+{
+ struct nvec_power *power = platform_get_drvdata(pdev);
+
+ cancel_delayed_work_sync(&power->poller);
+ switch (pdev->id) {
+ case AC:
+ power_supply_unregister(&nvec_psy);
+ break;
+ case BAT:
+ power_supply_unregister(&nvec_bat_psy);
+ }
+
+ return 0;
+}
+
static struct platform_driver nvec_power_driver = {
.probe = nvec_power_probe,
+ .remove = __devexit_p(nvec_power_remove),
.driver = {
.name = "nvec-power",
.owner = THIS_MODULE,