summaryrefslogtreecommitdiff
path: root/drivers/power
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2014-04-21 12:44:08 +0530
committerMandar Padmawar <mpadmawar@nvidia.com>2014-05-07 01:16:21 -0700
commitfcc70bdef0421ca438c981155d2ddcd6f02a5124 (patch)
tree2f8d1d673b0072326589a3afaf2dc4479f4f85f5 /drivers/power
parentbbd4234a669bffe1e424dbab839d5047507b7cf5 (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.c22
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;
}