diff options
author | Arun Murthy <arun.murthy@stericsson.com> | 2011-07-15 12:57:40 +0530 |
---|---|---|
committer | Ulf Hansson <ulf.hansson@stericsson.com> | 2011-09-19 16:00:11 +0200 |
commit | f23196926b303c365253ff0407dd2d5b02938440 (patch) | |
tree | c921f7f55695698a5bc3b0d66ac2cb678b318b75 | |
parent | 6b2909bd11074814129b33746378d7416d707f1a (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.c | 28 |
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; } |