summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Lee <mike5@huaqin.corp-partner.google.com>2020-11-26 09:30:07 +0800
committerCommit Bot <commit-bot@chromium.org>2020-12-22 08:11:32 +0000
commita1a14e23346fb1a42b69f14f05e7cb8debdf5dec (patch)
tree9b06ea6714eef19061c431ea53d321b4b6f88666
parent7c0c0ebafc07e46f7ddb8672712d885597102378 (diff)
downloadchrome-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.c36
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)
{