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 <put...@chromium.org>
Reviewed-by: David Riley <davidri...@chromium.org>
Reviewed-by: Benson Leung <ble...@chromium.org>
---
 drivers/power/bq27x00_battery.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c
index e3bacfe..7ab3de0 100644
--- a/drivers/power/bq27x00_battery.c
+++ b/drivers/power/bq27x00_battery.c
@@ -493,10 +493,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;
 }
-- 
2.1.0.rc2.206.gedb03e5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to