summaryrefslogtreecommitdiff
path: root/driver/charger/isl923x.c
diff options
context:
space:
mode:
authorAseda Aboagye <aaboagye@google.com>2017-11-06 17:12:58 -0800
committerchrome-bot <chrome-bot@chromium.org>2017-11-14 00:42:42 -0800
commit358e249916eeee0a6cf0aa8e5047b05dcdba9628 (patch)
tree11be79aadb0ace10886db38a05701021eec75860 /driver/charger/isl923x.c
parentadf00a969f099e2a1a8783130dd37d6b27ff7036 (diff)
downloadchrome-ec-358e249916eeee0a6cf0aa8e5047b05dcdba9628.tar.gz
isl9238: Don't reread PROG pin or reload ILIM.
The ISL9238 has a functionality where it will reload the adapter current limit from a strap which is read from the PROG pin. This is problematic when we decide to set the current limit prior to AC actually being inserted. This commit disables this functionality from the charger. It seems however that the charger will read the PROG pin and reload the ILIM at least once before respecting the bits. BUG=b:67120928, b:66017697 BRANCH=None TEST=Plug and unplug and then plug again AC. Verify that the default current limit is not set by the charger automatically. Change-Id: Ia8e8742843f6ceb286635b31e0fe5c070a2b6dfe Signed-off-by: Aseda Aboagye <aaboagye@google.com> Reviewed-on: https://chromium-review.googlesource.com/759693 Commit-Ready: Aseda Aboagye <aaboagye@chromium.org> Tested-by: Aseda Aboagye <aaboagye@chromium.org> Tested-by: Shamile Khan <shamile.khan@intel.corp-partner.google.com> Reviewed-by: Shawn N <shawnn@chromium.org>
Diffstat (limited to 'driver/charger/isl923x.c')
-rw-r--r--driver/charger/isl923x.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/driver/charger/isl923x.c b/driver/charger/isl923x.c
index 5dae530ef9..4924bc1f52 100644
--- a/driver/charger/isl923x.c
+++ b/driver/charger/isl923x.c
@@ -339,6 +339,24 @@ static void isl923x_init(void)
goto init_fail;
#endif /* defined(CONFIG_CHARGE_RAMP_HW) */
+#ifdef CONFIG_CHARGER_ISL9238
+ /*
+ * Don't reread the prog pin and don't reload the ILIM on ACIN.
+ */
+ if (raw_read16(ISL9238_REG_CONTROL3, &reg))
+ goto init_fail;
+ reg |= ISL9238_C3_NO_RELOAD_ACLIM_ON_ACIN |
+ ISL9238_C3_NO_REREAD_PROG_PIN;
+ if (raw_write16(ISL9238_REG_CONTROL3, reg))
+ goto init_fail;
+
+ /*
+ * Initialize the input current limit to the board's default.
+ */
+ if (charger_set_input_current(CONFIG_CHARGER_INPUT_CURRENT))
+ goto init_fail;
+#endif /* defined(CONFIG_CHARGER_ISL9238) */
+
return;
init_fail:
CPRINTF("isl923x_init failed!");