diff options
author | HongMin Son <hongmin.son@samsung.com> | 2012-10-05 13:22:31 +0900 |
---|---|---|
committer | Nitin Garg <nitin.garg@freescale.com> | 2014-04-21 22:35:03 -0500 |
commit | 506409472a36f5d882280240f6ac2731328ecd78 (patch) | |
tree | 382a55cc5a36a4968629745e20c6560381940628 /drivers/power | |
parent | 1e11515ba3bf90cac6e5cbab5eaedf239ffae4c1 (diff) |
power: android-battery: Fix battery alarm timer not modified at suspend
- Alarm Timer driver is suspended before battery driver, so alarm
timer was not changed to slow poll speed at suspend. Use PM
notifiers instead.
- If charger is connected, keep 1 min alarm timer.
Signed-off-by: HongMin Son <hongmin.son@samsung.com>
Signed-off-by: Todd Poynor <toddpoynor@google.com>
Change-Id: Id0f3bda5d0749fd90f1964073bc30c1a73fc317f
Diffstat (limited to 'drivers/power')
-rw-r--r-- | drivers/power/android_battery.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/power/android_battery.c b/drivers/power/android_battery.c index d7682d69e3ab..5001bba28f91 100644 --- a/drivers/power/android_battery.c +++ b/drivers/power/android_battery.c @@ -700,21 +700,24 @@ static int android_bat_suspend(struct device *dev) struct android_bat_data *battery = dev_get_drvdata(dev); cancel_work_sync(&battery->monitor_work); - android_bat_monitor_set_alarm(battery, SLOW_POLL); + android_bat_monitor_set_alarm( + battery, + battery->charge_source == CHARGE_SOURCE_NONE ? + SLOW_POLL : FAST_POLL); return 0; } -static int android_bat_resume(struct device *dev) +static void android_bat_resume(struct device *dev) { struct android_bat_data *battery = dev_get_drvdata(dev); android_bat_monitor_set_alarm(battery, FAST_POLL); - return 0; + return; } static const struct dev_pm_ops android_bat_pm_ops = { - .suspend = android_bat_suspend, - .resume = android_bat_resume, + .prepare = android_bat_suspend, + .complete = android_bat_resume, }; static struct platform_driver android_bat_driver = { |