bq27x00_battery: Call power_supply_changed only when capacity changed
authorPuthikorn Voravootivat <puthik@chromium.org>
Wed, 22 Oct 2014 01:15:37 +0000 (18:15 -0700)
committerSebastian Reichel <sre@kernel.org>
Wed, 21 Jan 2015 19:03:31 +0000 (20:03 +0100)
In current driver, power_supply_changed() is called whenever any of
the battery attribute changed. This causes kernel to increases the
'/sys/power/wakeup_count' and make suspend not working correctly.

This patch change this behavior to call power_supply_changed()
only when the battery capacity changed.

Signed-off-by: Puthikorn Voravootivat <puthik@chromium.org>
Reviewed-by: David Riley <davidriley@chromium.org>
Reviewed-by: Benson Leung <bleung@chromium.org>
Signed-off-by: Sebastian Reichel <sre@kernel.org>
drivers/power/bq27x00_battery.c

index baae2151cb9a72e4b3fcb97a9e43b8e08a560920..b72ba7c1bd69fd99365381414ca84305d5b20808 100644 (file)
@@ -497,10 +497,11 @@ static void bq27x00_update(struct bq27x00_device_info *di)
                        di->charge_design_full = bq27x00_battery_read_ilmd(di);
        }
 
-       if (memcmp(&di->cache, &cache, sizeof(cache)) != 0) {
-               di->cache = cache;
+       if (di->cache.capacity != cache.capacity)
                power_supply_changed(&di->bat);
-       }
+
+       if (memcmp(&di->cache, &cache, sizeof(cache)) != 0)
+               di->cache = cache;
 
        di->last_update = jiffies;
 }