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 08:11:32 +0000 |
commit | a1a14e23346fb1a42b69f14f05e7cb8debdf5dec (patch) | |
tree | 9b06ea6714eef19061c431ea53d321b4b6f88666 | |
parent | 7c0c0ebafc07e46f7ddb8672712d885597102378 (diff) | |
download | chrome-ec-a1a14e23346fb1a42b69f14f05e7cb8debdf5dec.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/+/2597130
Reviewed-by: Chen-Tsung Hsieh <chentsung@chromium.org>
Commit-Queue: Chen-Tsung Hsieh <chentsung@chromium.org>
-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 e2b17661f4..fb03665c55 100644 --- a/board/fennel/board.c +++ b/board/fennel/board.c @@ -424,12 +424,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); @@ -437,13 +466,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) { |