diff options
author | Laxman Dewangan <ldewangan@nvidia.com> | 2014-04-14 15:30:36 +0530 |
---|---|---|
committer | Mandar Padmawar <mpadmawar@nvidia.com> | 2014-05-07 01:15:57 -0700 |
commit | 7181ddb1abd732a3f2c2e1e2000d1e2fc79c51e4 (patch) | |
tree | 81ffade2ce92abcb0223be78ad050420cf028629 | |
parent | 8033a8b67e3828244f918e070580d63005f1f4d2 (diff) |
power: bq2419x: remove duplication of code for safty timer handling
There is duplication of codes for handling the safety timer expire.
Move this code to function and use this function from different
location.
Change-Id: I8a11055bf0dfbe5b40b487a403e806b6d221c354
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-on: http://git-master/r/395809
Reviewed-on: http://git-master/r/405637
GVS: Gerrit_Virtual_Submit
-rw-r--r-- | drivers/power/bq2419x-charger.c | 84 |
1 files changed, 34 insertions, 50 deletions
diff --git a/drivers/power/bq2419x-charger.c b/drivers/power/bq2419x-charger.c index 7b52e07f0862..ee410c6d73af 100644 --- a/drivers/power/bq2419x-charger.c +++ b/drivers/power/bq2419x-charger.c @@ -623,21 +623,43 @@ static void bq2419x_wdt_restart_wq(struct work_struct *work) } -static int bq2419x_reset_safety_timer(struct bq2419x_chip *bq2419x) +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 */ ret = regmap_update_bits(bq2419x->regmap, BQ2419X_TIME_CTRL_REG, BQ2419X_EN_SFT_TIMER_MASK, 0); if (ret < 0) { - dev_err(bq2419x->dev, "TIME_CTRL_REG update failed: %d\n", ret); + dev_err(dev, "TIME_CTRL_REG update failed: %d\n", ret); return ret; } ret = regmap_update_bits(bq2419x->regmap, BQ2419X_TIME_CTRL_REG, BQ2419X_EN_SFT_TIMER_MASK, BQ2419X_EN_SFT_TIMER_MASK); - if (ret < 0) - dev_err(bq2419x->dev, "TIME_CTRL_REG update failed: %d\n", ret); + if (ret < 0) { + dev_err(dev, "TIME_CTRL_REG update failed: %d\n", ret); + return ret; + } + + /* Reenable charging if get disabled */ + ret = regmap_read(bq2419x->regmap, BQ2419X_PWR_ON_REG, &val); + if (ret < 0) { + dev_err(dev, "PWR_ON_REG read failed %d", 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; + } + } return ret; } @@ -697,30 +719,11 @@ static irqreturn_t bq2419x_irq(int irq, void *data) break; case BQ2419x_FAULT_CHRG_SAFTY: bq_chg_err(bq2419x, "Safety timer expiration\n"); - ret = bq2419x_reset_safety_timer(bq2419x); + ret = bq2419x_handle_safety_timer_expire(bq2419x); if (ret < 0) { - dev_err(bq2419x->dev, "Reset safety timer failed %d\n", - ret); - return ret; - } - - ret = regmap_read(bq2419x->regmap, BQ2419X_PWR_ON_REG, &val); - if (ret < 0) { - dev_err(bq2419x->dev, "PWR_ON_REG read failed %d", - 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(bq2419x->dev, - "PWR_ON_REG update failed, %d\n", ret); - return ret; - } + dev_err(bq2419x->dev, + "Handling of safty timer expire failed: %d\n", + ret); } check_chg_state = 1; break; @@ -1804,32 +1807,13 @@ static int bq2419x_resume(struct device *dev) dev_err(bq2419x->dev, "Reset WDT failed: %d\n", ret); } - if(val & BQ2419x_FAULT_CHRG_SAFTY) { + if (val & BQ2419x_FAULT_CHRG_SAFTY) { bq_chg_err(bq2419x, "Safety timer Expired\n"); - ret = bq2419x_reset_safety_timer(bq2419x); + ret = bq2419x_handle_safety_timer_expire(bq2419x); if (ret < 0) { dev_err(bq2419x->dev, - "Reset safety timer failed %d\n", ret); - return ret; - } - - ret = regmap_read(bq2419x->regmap, BQ2419X_PWR_ON_REG, &val); - if (ret < 0) { - dev_err(bq2419x->dev, - "PWR_ON_REG read failed %d", 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(bq2419x->dev, - "PWR_ON_REG update failed, %d\n", ret); - return ret; - } + "Handling of safty timer expire failed: %d\n", + ret); } } |