power: bq2419x: Cleanup in error path
-Cleanup in error path of wdt reset.
-Return error in suspend callback if i2c writes fails.
Bug 1240114
Change-Id: I568e35d12d42c73bd20fafe9187373589d6e313d
Signed-off-by: Pradeep Goudagunta <pgoudagunta@nvidia.com>
Signed-off-by: Syed Rafiuddin <srafiuddin@nvidia.com>
Reviewed-on: http://git-master/r/209455
(cherry picked from commit df17d17de7250628633cd51b22db2fbc0d745185)
Reviewed-on: http://git-master/r/216090
Reviewed-by: Hyong Bin Kim <hyongbink@nvidia.com>
Tested-by: Hyong Bin Kim <hyongbink@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
GVS: Gerrit_Virtual_Submit
diff --git a/drivers/power/bq2419x-charger.c b/drivers/power/bq2419x-charger.c
index f3ee4ba..213bf7c 100644
--- a/drivers/power/bq2419x-charger.c
+++ b/drivers/power/bq2419x-charger.c
@@ -333,14 +333,13 @@
static int bq2419x_reset_wdt(struct bq2419x_chip *bq2419x, const char *from)
{
- int ret;
+ int ret = 0;
unsigned int reg01;
mutex_lock(&bq2419x->mutex);
- if (bq2419x->suspended) {
- mutex_unlock(&bq2419x->mutex);
- return 0;
- }
+ if (bq2419x->suspended)
+ goto scrub;
+
dev_info(bq2419x->dev, "%s() from %s()\n", __func__, from);
/* Clear EN_HIZ */
@@ -348,15 +347,13 @@
BQ2419X_INPUT_SRC_REG, BQ2419X_EN_HIZ, 0);
if (ret < 0) {
dev_err(bq2419x->dev, "INPUT_SRC_REG update failed:%d\n", ret);
- mutex_unlock(&bq2419x->mutex);
- return ret;
+ goto scrub;
}
ret = regmap_read(bq2419x->regmap, BQ2419X_PWR_ON_REG, ®01);
if (ret < 0) {
dev_err(bq2419x->dev, "PWR_ON_REG read failed: %d\n", ret);
- mutex_unlock(&bq2419x->mutex);
- return ret;
+ goto scrub;
}
reg01 |= BIT(6);
@@ -365,15 +362,15 @@
ret = regmap_write(bq2419x->regmap, BQ2419X_PWR_ON_REG, reg01);
if (ret < 0) {
dev_err(bq2419x->dev, "PWR_ON_REG write failed: %d\n", ret);
- mutex_unlock(&bq2419x->mutex);
- return ret;
+ goto scrub;
}
ret = regmap_write(bq2419x->regmap, BQ2419X_PWR_ON_REG, reg01);
if (ret < 0) {
dev_err(bq2419x->dev, "PWR_ON_REG write failed: %d\n", ret);
- mutex_unlock(&bq2419x->mutex);
- return ret;
+ goto scrub;
}
+
+scrub:
mutex_unlock(&bq2419x->mutex);
return ret;
}
@@ -943,13 +940,17 @@
mutex_unlock(&bq2419x->mutex);
disable_irq(bq2419x->irq);
ret = bq2419x_charger_enable(bq2419x);
- if (ret < 0)
+ if (ret < 0) {
dev_err(bq2419x->dev, "Charger enable failed %d", ret);
+ return ret;
+ }
/* Configure charging current to 500mA */
ret = regmap_write(bq2419x->regmap, BQ2419X_INPUT_SRC_REG, 0x32);
- if (ret < 0)
+ if (ret < 0) {
dev_err(bq2419x->dev, "INPUT_SRC_REG write failed %d\n", ret);
+ return ret;
+ }
return 0;
}