summaryrefslogtreecommitdiff
path: root/board/fennel/board.c
diff options
context:
space:
mode:
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 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)
{