diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-21 20:36:20 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-21 20:36:20 +0100 |
commit | 03d11a0e458d7008192585124e4c3313c2829046 (patch) | |
tree | 8e9f5141e53d2d4bf435fbd56f8ae96790304b7f /drivers/power/gpio-charger.c | |
parent | Merge tag 'mfd-3.14-1' of git://git.linaro.org/people/ljones/mfd (diff) | |
parent | MAINTAINERS: Pick up power supply maintainership (diff) | |
download | linux-03d11a0e458d7008192585124e4c3313c2829046.tar.xz linux-03d11a0e458d7008192585124e4c3313c2829046.zip |
Merge tag 'for-v3.14' of git://git.infradead.org/battery-2.6
Pull battery updates from Dmitry Eremin-Solenikov:
"I'm picking up power supply maintainership from Anton Vorontov. Could
you please pull battery-2.6 git tree changes prepared for the v3.14
release.
Highlights:
- Power supply notifier
- Several drivers gained DT support
- Added Maxim 14577 driver
- Change of maintainer"
* tag 'for-v3.14' of git://git.infradead.org/battery-2.6:
MAINTAINERS: Pick up power supply maintainership
max17042_battery: Add IRQF_ONESHOT flag to use default irq handler
gpio-charger: Support wakeup events
power_supply: Add charger support for Maxim 14577
dt: Binding documentation for isp1704 charger
isp1704_charger: Add DT support
charger-manager: of_cm_parse_desc() should be static
bq2415x_charger: Add DT support
power_supply: Add power_supply_get_by_phandle
bq2415x_charger: Use power_supply notifier for automode
power: reset: Add as3722 power-off driver
mfd: AS3722: Add dt node properties for system power controller
charger-manager: Support deivce tree in charger manager driver
charger-manager: Modify the way of checking battery's temperature
power_supply: Add power_supply notifier
Diffstat (limited to 'drivers/power/gpio-charger.c')
-rw-r--r-- | drivers/power/gpio-charger.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/power/gpio-charger.c b/drivers/power/gpio-charger.c index 4e858a23568f..a0024b252197 100644 --- a/drivers/power/gpio-charger.c +++ b/drivers/power/gpio-charger.c @@ -28,6 +28,7 @@ struct gpio_charger { const struct gpio_charger_platform_data *pdata; unsigned int irq; + bool wakeup_enabled; struct power_supply charger; }; @@ -136,6 +137,8 @@ static int gpio_charger_probe(struct platform_device *pdev) platform_set_drvdata(pdev, gpio_charger); + device_init_wakeup(&pdev->dev, 1); + return 0; err_gpio_free: @@ -159,18 +162,32 @@ static int gpio_charger_remove(struct platform_device *pdev) } #ifdef CONFIG_PM_SLEEP +static int gpio_charger_suspend(struct device *dev) +{ + struct gpio_charger *gpio_charger = dev_get_drvdata(dev); + + if (device_may_wakeup(dev)) + gpio_charger->wakeup_enabled = + enable_irq_wake(gpio_charger->irq); + + return 0; +} + static int gpio_charger_resume(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); struct gpio_charger *gpio_charger = platform_get_drvdata(pdev); + if (gpio_charger->wakeup_enabled) + disable_irq_wake(gpio_charger->irq); power_supply_changed(&gpio_charger->charger); return 0; } #endif -static SIMPLE_DEV_PM_OPS(gpio_charger_pm_ops, NULL, gpio_charger_resume); +static SIMPLE_DEV_PM_OPS(gpio_charger_pm_ops, + gpio_charger_suspend, gpio_charger_resume); static struct platform_driver gpio_charger_driver = { .probe = gpio_charger_probe, |