diff options
author | Laxman Dewangan <ldewangan@nvidia.com> | 2014-04-21 12:44:08 +0530 |
---|---|---|
committer | Mandar Padmawar <mpadmawar@nvidia.com> | 2014-05-07 01:16:21 -0700 |
commit | fcc70bdef0421ca438c981155d2ddcd6f02a5124 (patch) | |
tree | 2f8d1d673b0072326589a3afaf2dc4479f4f85f5 /drivers/power | |
parent | bbd4234a669bffe1e424dbab839d5047507b7cf5 (diff) |
power: bq2419x: toggle CE bit when safety timer expire
When safety timer expire then it is required to toggle the
CE bit from 1 to 0 and then 0 to 1 to restart the timer again.
Just setting 0 to 1 will not rstart the timer.
bug 1503606
Change-Id: Ic842da3cdaaaea0cfc99f9441b6aa31ef2110e67
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-on: http://git-master/r/398768
Reviewed-on: http://git-master/r/405639
GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'drivers/power')
-rw-r--r-- | drivers/power/bq2419x-charger.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/drivers/power/bq2419x-charger.c b/drivers/power/bq2419x-charger.c index 796977d633e3..4e5f0d7d7a65 100644 --- a/drivers/power/bq2419x-charger.c +++ b/drivers/power/bq2419x-charger.c @@ -626,7 +626,6 @@ static void bq2419x_wdt_restart_wq(struct work_struct *work) static int bq2419x_handle_safety_timer_expire(struct bq2419x_chip *bq2419x) { struct device *dev = bq2419x->dev; - unsigned int val; int ret; /* Reset saftty timer by setting 0 and then making 1 */ @@ -644,21 +643,18 @@ static int bq2419x_handle_safety_timer_expire(struct bq2419x_chip *bq2419x) return ret; } - /* Reenable charging if get disabled */ - ret = regmap_read(bq2419x->regmap, BQ2419X_PWR_ON_REG, &val); + /* Need to toggel the Charging-enable bit from 1 to 0 to 1 */ + ret = regmap_update_bits(bq2419x->regmap, BQ2419X_PWR_ON_REG, + BQ2419X_ENABLE_CHARGE_MASK, 0); if (ret < 0) { - dev_err(dev, "PWR_ON_REG read failed %d", ret); + dev_err(dev, "PWR_ON_REG update failed %d\n", ret); return ret; } - - if ((val & BQ2419X_ENABLE_CHARGE_MASK) == BQ2419X_DISABLE_CHARGE) { - ret = regmap_update_bits(bq2419x->regmap, BQ2419X_PWR_ON_REG, - BQ2419X_ENABLE_CHARGE_MASK, - BQ2419X_ENABLE_CHARGE); - if (ret < 0) { - dev_err(dev, "PWR_ON_REG update failed %d\n", ret); - return ret; - } + ret = regmap_update_bits(bq2419x->regmap, BQ2419X_PWR_ON_REG, + BQ2419X_ENABLE_CHARGE_MASK, BQ2419X_ENABLE_CHARGE); + if (ret < 0) { + dev_err(dev, "PWR_ON_REG update failed %d\n", ret); + return ret; } return ret; } |