diff options
author | Mike Lee <mike5@huaqin.corp-partner.google.com> | 2020-11-26 09:30:07 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-12-22 09:09:14 +0000 |
commit | 99a7217bd4bf3462316a0ac80e6712e0133a0e38 (patch) | |
tree | adc53e257f0bef5f471b756dc8d54b9d80db33d4 /board/fennel/board.c | |
parent | a80ebff20a6ee09377f3a296ea17ebf05ec0f39d (diff) | |
download | chrome-ec-99a7217bd4bf3462316a0ac80e6712e0133a0e38.tar.gz |
Fennel: Add battery quick charge mode in S3/S5/G3
Set normal charge mode in S0,and set quick charge mode in S3/S5/G3.
BUG=b:172798331
BRANCH=firmware-kukui-12573.B
TEST=make build all pass and test the quick charge solution is normal
Signed-off-by: Mike Lee <mike5@huaqin.corp-partner.google.com>
Change-Id: I0e094e6a5eb7b49ee44388b941d970347182dad9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2560391
Reviewed-by: Chen-Tsung Hsieh <chentsung@chromium.org>
Commit-Queue: Chen-Tsung Hsieh <chentsung@chromium.org>
Diffstat (limited to 'board/fennel/board.c')
-rw-r--r-- | board/fennel/board.c | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/board/fennel/board.c b/board/fennel/board.c index 6ea102d886..425abe9685 100644 --- a/board/fennel/board.c +++ b/board/fennel/board.c @@ -444,12 +444,41 @@ bool board_has_kb_backlight(void) /* Default enable keyboard backlight */ return true; } +#endif /* !VARIANT_KUKUI_NO_SENSORS */ + +/* Battery functions */ +#define SB_SMARTCHARGE 0x26 +/* Quick charge enable bit */ +#define SMART_QUICK_CHARGE 0x02 +/* Quick charge support bit */ +#define MODE_QUICK_CHARGE_SUPPORT 0x01 + +static void sb_quick_charge_mode(int enable) +{ + int val, rv; + + rv = sb_read(SB_SMARTCHARGE, &val); + if (rv || !(val & MODE_QUICK_CHARGE_SUPPORT)) + return; + + if (enable) + val |= SMART_QUICK_CHARGE; + else + val &= ~SMART_QUICK_CHARGE; + + sb_write(SB_SMARTCHARGE, val); +} /* Called on AP S0iX -> S0 transition */ static void board_chipset_resume(void) { +#ifndef VARIANT_KUKUI_NO_SENSORS if (board_has_kb_backlight()) ioex_set_level(IOEX_KB_BL_EN, 1); +#endif + + /* Normal charge mode */ + sb_quick_charge_mode(0); } DECLARE_HOOK(HOOK_CHIPSET_RESUME, board_chipset_resume, HOOK_PRIO_DEFAULT); DECLARE_HOOK(HOOK_INIT, board_chipset_resume, HOOK_PRIO_DEFAULT); @@ -457,13 +486,16 @@ DECLARE_HOOK(HOOK_INIT, board_chipset_resume, HOOK_PRIO_DEFAULT); /* Called on AP S0 -> S0iX transition */ static void board_chipset_suspend(void) { +#ifndef VARIANT_KUKUI_NO_SENSORS if (board_has_kb_backlight()) ioex_set_level(IOEX_KB_BL_EN, 0); +#endif + + /* Quick charge mode */ + sb_quick_charge_mode(1); } DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, board_chipset_suspend, HOOK_PRIO_DEFAULT); -#endif /* !VARIANT_KUKUI_NO_SENSORS */ - /* Called on AP S5 -> S3 transition */ static void board_chipset_startup(void) { |