diff options
Diffstat (limited to 'drivers/power/wm97xx_battery.c')
| -rw-r--r-- | drivers/power/wm97xx_battery.c | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/drivers/power/wm97xx_battery.c b/drivers/power/wm97xx_battery.c index 156559e56fa..58f7348e6c2 100644 --- a/drivers/power/wm97xx_battery.c +++ b/drivers/power/wm97xx_battery.c @@ -25,9 +25,8 @@ #include <linux/irq.h> #include <linux/slab.h> -static DEFINE_MUTEX(bat_lock); static struct work_struct bat_work; -static struct mutex work_lock; +static DEFINE_MUTEX(work_lock); static int bat_status = POWER_SUPPLY_STATUS_UNKNOWN; static enum power_supply_property *prop; @@ -147,7 +146,7 @@ static irqreturn_t wm97xx_chrg_irq(int irq, void *data) #ifdef CONFIG_PM static int wm97xx_bat_suspend(struct device *dev) { - flush_work_sync(&bat_work); + flush_work(&bat_work); return 0; } @@ -163,7 +162,7 @@ static const struct dev_pm_ops wm97xx_bat_pm_ops = { }; #endif -static int __devinit wm97xx_bat_probe(struct platform_device *dev) +static int wm97xx_bat_probe(struct platform_device *dev) { int ret = 0; int props = 1; /* POWER_SUPPLY_PROP_PRESENT */ @@ -181,8 +180,6 @@ static int __devinit wm97xx_bat_probe(struct platform_device *dev) if (dev->id != -1) return -EINVAL; - mutex_init(&work_lock); - if (!pdata) { dev_err(&dev->dev, "No platform_data supplied\n"); return -EINVAL; @@ -196,7 +193,7 @@ static int __devinit wm97xx_bat_probe(struct platform_device *dev) if (ret) goto err2; ret = request_irq(gpio_to_irq(pdata->charge_gpio), - wm97xx_chrg_irq, IRQF_DISABLED, + wm97xx_chrg_irq, 0, "AC Detect", dev); if (ret) goto err2; @@ -215,8 +212,10 @@ static int __devinit wm97xx_bat_probe(struct platform_device *dev) props++; /* POWER_SUPPLY_PROP_VOLTAGE_MIN */ prop = kzalloc(props * sizeof(*prop), GFP_KERNEL); - if (!prop) + if (!prop) { + ret = -ENOMEM; goto err3; + } prop[i++] = POWER_SUPPLY_PROP_PRESENT; if (pdata->charge_gpio >= 0) @@ -264,7 +263,7 @@ err: return ret; } -static int __devexit wm97xx_bat_remove(struct platform_device *dev) +static int wm97xx_bat_remove(struct platform_device *dev) { struct wm97xx_pdata *wmdata = dev->dev.platform_data; struct wm97xx_batt_pdata *pdata = wmdata->batt_pdata; @@ -288,21 +287,10 @@ static struct platform_driver wm97xx_bat_driver = { #endif }, .probe = wm97xx_bat_probe, - .remove = __devexit_p(wm97xx_bat_remove), + .remove = wm97xx_bat_remove, }; -static int __init wm97xx_bat_init(void) -{ - return platform_driver_register(&wm97xx_bat_driver); -} - -static void __exit wm97xx_bat_exit(void) -{ - platform_driver_unregister(&wm97xx_bat_driver); -} - -module_init(wm97xx_bat_init); -module_exit(wm97xx_bat_exit); +module_platform_driver(wm97xx_bat_driver); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Marek Vasut <marek.vasut@gmail.com>"); |
