power: android-battery: Fix battery alarm timer not modified at suspend
authorHongMin Son <hongmin.son@samsung.com>
Fri, 5 Oct 2012 04:22:31 +0000 (13:22 +0900)
committerArve Hjønnevåg <arve@android.com>
Mon, 1 Jul 2013 21:16:10 +0000 (14:16 -0700)
     - 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

drivers/power/android_battery.c

index d7682d69e3abbb39e7c50b9c0cec5b8a14bebb97..5001bba28f91af89d5a7116800e3c45fda8ea86b 100644 (file)
@@ -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 = {