From: Greg Meiste Date: Wed, 3 Nov 2010 14:19:56 +0000 (-0500) Subject: power: ds2781: Fix for ACR 100% reset X-Git-Tag: firefly_0821_release~9834^2~379 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=a1cedd4864aac7df8caaa8972f01cdb807eb1526;p=firefly-linux-kernel-4.4.55.git 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 --- 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");