summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTing Shen <phoenixshen@google.com>2022-04-28 16:24:14 +0800
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-05-12 10:44:56 +0000
commitd1b1f0e60dd901a27d34b4a6dfd9df7c22d47bba (patch)
tree0e8573c9d87a1a7f7ab3a6b2d4f896b975c7e9a7
parente0b1b73469d097591a154fa6c5e1b0117c27651b (diff)
downloadchrome-ec-d1b1f0e60dd901a27d34b4a6dfd9df7c22d47bba.tar.gz
Krabby: add charger EOC deglitch workaround
Vendor provided workaround, see b/230442545#comment3 BUG=b:230442545 TEST=make BRANCH=none Signed-off-by: Ting Shen <phoenixshen@google.com> Change-Id: I86c9dd0d615c5ebff82429a2dbc11a4bd2f37fc2 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3613148 Commit-Queue: Ting Shen <phoenixshen@chromium.org> Reviewed-by: Eric Yilun Lin <yllin@google.com> Tested-by: Ting Shen <phoenixshen@chromium.org>
-rw-r--r--driver/charger/rt9490.h1
-rw-r--r--zephyr/projects/corsola/src/krabby/charger_workaround.c15
2 files changed, 16 insertions, 0 deletions
diff --git a/driver/charger/rt9490.h b/driver/charger/rt9490.h
index ffc7f4089d..2fd0edbac2 100644
--- a/driver/charger/rt9490.h
+++ b/driver/charger/rt9490.h
@@ -235,6 +235,7 @@ struct rt9490_init_setting {
/* ADD CTRL0 */
#define RT9490_AUTO_AICR BIT(5)
+#define RT9490_TD_EOC BIT(4)
#define RT9490_AUTO_MIVR BIT(2)
#define RT9490_JEITA_COLD_HOT BIT(0)
diff --git a/zephyr/projects/corsola/src/krabby/charger_workaround.c b/zephyr/projects/corsola/src/krabby/charger_workaround.c
index 576ea65bc7..373917db56 100644
--- a/zephyr/projects/corsola/src/krabby/charger_workaround.c
+++ b/zephyr/projects/corsola/src/krabby/charger_workaround.c
@@ -72,10 +72,25 @@ static void pwm_freq_workaround(void)
rt9490_enable_pwm_1mhz(CHARGER_SOLO, true);
}
+static void eoc_deglitch_workaround(void)
+{
+ if (system_get_board_version() != 1) {
+ return;
+ }
+
+ /* set end-of-charge deglitch time to 2ms */
+ i2c_update8(chg_chips[CHARGER_SOLO].i2c_port,
+ chg_chips[CHARGER_SOLO].i2c_addr_flags,
+ RT9490_REG_ADD_CTRL0,
+ RT9490_TD_EOC,
+ MASK_CLR);
+}
+
static void board_rt9490_workaround(void)
{
ibus_adc_workaround();
i2c_speed_workaround();
pwm_freq_workaround();
+ eoc_deglitch_workaround();
}
DECLARE_HOOK(HOOK_INIT, board_rt9490_workaround, HOOK_PRIO_DEFAULT);