From d1b1f0e60dd901a27d34b4a6dfd9df7c22d47bba Mon Sep 17 00:00:00 2001 From: Ting Shen Date: Thu, 28 Apr 2022 16:24:14 +0800 Subject: 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 Change-Id: I86c9dd0d615c5ebff82429a2dbc11a4bd2f37fc2 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3613148 Commit-Queue: Ting Shen Reviewed-by: Eric Yilun Lin Tested-by: Ting Shen --- driver/charger/rt9490.h | 1 + zephyr/projects/corsola/src/krabby/charger_workaround.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) 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); -- cgit v1.2.1