summaryrefslogtreecommitdiff
path: root/board/fennel/board.c
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 09:09:14 +0000
commit99a7217bd4bf3462316a0ac80e6712e0133a0e38 (patch)
treeadc53e257f0bef5f471b756dc8d54b9d80db33d4 /board/fennel/board.c
parenta80ebff20a6ee09377f3a296ea17ebf05ec0f39d (diff)
downloadchrome-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.c36
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)
{