From b0e0f785f5ea0130da531008d6c801ef4d0c5385 Mon Sep 17 00:00:00 2001 From: Ting Shen Date: Tue, 12 Apr 2022 16:05:58 +0800 Subject: krabby: disable charger ADC when no AC To save G3 power as suggested in b:228574354 BUG=b:228574354 TEST=measure G3 power BRANCH=none Signed-off-by: Ting Shen Change-Id: I4862a10c025289ce75471bb105a68819d4147374 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3583742 Reviewed-by: Eric Yilun Lin Commit-Queue: Ting Shen Tested-by: Ting Shen --- driver/charger/rt9490.c | 2 +- driver/charger/rt9490.h | 4 ++++ zephyr/projects/corsola/src/krabby/hooks.c | 12 ++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/driver/charger/rt9490.c b/driver/charger/rt9490.c index e2d2b76b0b..e3eee4ebad 100644 --- a/driver/charger/rt9490.c +++ b/driver/charger/rt9490.c @@ -264,7 +264,7 @@ static inline int rt9490_enable_jeita(int chgnum, bool en) en ? MASK_CLR : MASK_SET); } -static inline int rt9490_enable_adc(int chgnum, bool en) +int rt9490_enable_adc(int chgnum, bool en) { return rt9490_update8(chgnum, RT9490_REG_ADC_CTRL, RT9490_ADC_EN, en ? MASK_SET : MASK_CLR); diff --git a/driver/charger/rt9490.h b/driver/charger/rt9490.h index 0ea7746d8e..a6ace8c1eb 100644 --- a/driver/charger/rt9490.h +++ b/driver/charger/rt9490.h @@ -4,6 +4,8 @@ * * Richtek 5A 1-4 cell buck-boost switching battery charger driver. */ +#include + #ifndef __CROS_EC_RT9490_H #define __CROS_EC_RT9490_H @@ -241,4 +243,6 @@ extern const struct bc12_drv rt9490_bc12_drv; void rt9490_interrupt(int port); +int rt9490_enable_adc(int chgnum, bool en); + #endif /* __CROS_EC_RT9490_H */ diff --git a/zephyr/projects/corsola/src/krabby/hooks.c b/zephyr/projects/corsola/src/krabby/hooks.c index 1cc9b82219..e91993be10 100644 --- a/zephyr/projects/corsola/src/krabby/hooks.c +++ b/zephyr/projects/corsola/src/krabby/hooks.c @@ -7,6 +7,9 @@ #include #include +#include "charger.h" +#include "driver/charger/rt9490.h" +#include "extpower.h" #include "gpio.h" #include "hooks.h" @@ -76,3 +79,12 @@ static int install_suspend_handler(const struct device *unused) } SYS_INIT(install_suspend_handler, APPLICATION, 1); + +static void board_hook_ac_change(void) +{ + if (system_get_board_version() >= 1) { + rt9490_enable_adc(CHARGER_SOLO, extpower_is_present()); + } +} +DECLARE_HOOK(HOOK_AC_CHANGE, board_hook_ac_change, HOOK_PRIO_DEFAULT); +DECLARE_HOOK(HOOK_INIT, board_hook_ac_change, HOOK_PRIO_LAST); -- cgit v1.2.1