From a1cedd4864aac7df8caaa8972f01cdb807eb1526 Mon Sep 17 00:00:00 2001 From: Greg Meiste Date: Wed, 3 Nov 2010 09:19:56 -0500 Subject: [PATCH] power: ds2781: Fix for ACR 100% reset Only do the reset if the percentage is valid. This fixes the scenario where the reset is incorrectly attempted on power up. Change-Id: If62de88bf10f363389127328d0f5448821e7beea Signed-off-by: Greg Meiste Signed-off-by: Dima Zavin --- drivers/power/ds2781_battery.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/power/ds2781_battery.c b/drivers/power/ds2781_battery.c index 519c6aa3ee2d..533c0c8a6f31 100644 --- a/drivers/power/ds2781_battery.c +++ b/drivers/power/ds2781_battery.c @@ -385,7 +385,9 @@ static void ds2781_battery_alarm(struct alarm *alarm) static void ds2781_reset_if_necessary(struct ds2781_device_info *di) { - if (di->status.percentage < 100) { + /* If we have read from the DS2781 and the percentage is not 100%, + * the ACR should be reset. */ + if (di->raw[DS2781_REG_RSNSP] && (di->status.percentage < 100)) { dev_err(di->dev, "Charge complete before 100 percent.\n"); dev_err(di->dev, "Resetting ACR registers to Full 40 value.\n"); -- 2.34.1