summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Murthy <arun.murthy@stericsson.com>2011-07-15 12:57:40 +0530
committerUlf Hansson <ulf.hansson@stericsson.com>2011-09-19 16:00:11 +0200
commitf23196926b303c365253ff0407dd2d5b02938440 (patch)
treec921f7f55695698a5bc3b0d66ac2cb678b318b75
parent6b2909bd11074814129b33746378d7416d707f1a (diff)
power: ab5500-charger: update the watchdog rekick seq
In AB5500 there exist no charger watchdog, instead all the charging registers that are written during enabling charging are to be re-written which acts as a watchdog re-kick. Even though its usb charging DCIOCURRENT register has to be written in order to kick charging, else charging is not started. ST-Ericsson Linux next: Not Tested ST-Ericsson ID: WP257120 ST-Ericsson FOSS-OUT ID: Trivial Change-Id: Iad283349e21027908df8aec560c9f44f2861f0ee Signed-off-by: Arun Murthy <arun.murthy@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/27220 Reviewed-by: Johan PALSSON <johan.palsson@stericsson.com> Reviewed-by: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com>
-rw-r--r--drivers/power/ab5500_charger.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/power/ab5500_charger.c b/drivers/power/ab5500_charger.c
index 69b808f06d7..b30f00a57f9 100644
--- a/drivers/power/ab5500_charger.c
+++ b/drivers/power/ab5500_charger.c
@@ -825,6 +825,21 @@ static int ab5500_charger_usb_en(struct ux500_charger *charger,
__func__, __LINE__);
return ret;
}
+
+ /*
+ * Register DCIOCURRENT is one among the charging watchdog
+ * rekick sequence, hence irrespective of usb charging this
+ * register will have to be written.
+ */
+ ret = abx500_set_register_interruptible(di->dev,
+ AB5500_BANK_CHG, AB5500_DCIOCURRENT,
+ RESET);
+ if (ret) {
+ dev_err(di->dev, "%s write failed %d\n",
+ __func__, __LINE__);
+ return ret;
+ }
+
di->usb.charger_online = 1;
} else {
/* ChVoltLevel: max voltage upto which battery can be charged */
@@ -946,6 +961,19 @@ static int ab5500_charger_watchdog_kick(struct ux500_charger *charger)
dev_err(di->dev, "%s write failed %d\n", __func__, __LINE__);
return ret;
}
+ /*
+ * Register DCIOCURRENT is one among the charging watchdog
+ * rekick sequence, hence irrespective of usb charging this
+ * register will have to be written.
+ */
+ ret = abx500_set_register_interruptible(di->dev,
+ AB5500_BANK_CHG, AB5500_DCIOCURRENT,
+ RESET);
+ if (ret) {
+ dev_err(di->dev, "%s write failed %d\n", __func__, __LINE__);
+ return ret;
+ }
+
return ret;
}