summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChromeOS Developer <dparker@chromium.org>2014-03-24 14:41:35 -0700
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-03-25 00:43:23 +0000
commitb0b57a581e8ed3e818a195f7d6f9695ed90287ee (patch)
treeabe063f525d94e6e53705dc807ee3fdfb917ff68
parente6eb3f2773bfaff40a2b817c681cbd87043fb947 (diff)
downloadchrome-ec-b0b57a581e8ed3e818a195f7d6f9695ed90287ee.tar.gz
Glimmer: Use HOOK_INIT to disable battery cuttoff
Previously the battery cutoff disable code was relying on an extra AC change event that was sent at power-on. BUG=None BRANCH=None TEST=Enable ship mode with "ectool batterycutoff" or "battcutoff" on the EC console. Disconnect AC power (if connected) to turn off. Pluc AC power back in for 1 second and unplug again. System should stay powered. Change-Id: Icb566fb0fecb350f3fc5d4ebcad134d2cc488925 Signed-off-by: Dave Parker <dparker@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/191297 Reviewed-by: Randall Spangler <rspangler@chromium.org>
-rw-r--r--board/glimmer/battery.c14
-rw-r--r--board/glimmer/board.h3
2 files changed, 15 insertions, 2 deletions
diff --git a/board/glimmer/battery.c b/board/glimmer/battery.c
index e679e75a42..1c5562af8f 100644
--- a/board/glimmer/battery.c
+++ b/board/glimmer/battery.c
@@ -43,7 +43,7 @@ const struct battery_info *battery_get_info(void)
return &info;
}
-static void wakeup(void)
+static void wakeup_deferred(void)
{
int d;
@@ -54,7 +54,17 @@ static void wakeup(void)
sb_write(SB_FET_OFF, SB_FETON_DATA2);
}
}
-DECLARE_HOOK(HOOK_AC_CHANGE, wakeup, HOOK_PRIO_DEFAULT);
+DECLARE_DEFERRED(wakeup_deferred);
+
+static void wakeup(void)
+{
+ /*
+ * The deferred call ensures that wakeup_deferred is called from a
+ * task. This is required to talk to the battery over I2C.
+ */
+ hook_call_deferred(wakeup_deferred, 0);
+}
+DECLARE_HOOK(HOOK_INIT, wakeup, HOOK_PRIO_DEFAULT);
static int cutoff(void)
{
diff --git a/board/glimmer/board.h b/board/glimmer/board.h
index ddd69615f2..0354674518 100644
--- a/board/glimmer/board.h
+++ b/board/glimmer/board.h
@@ -52,6 +52,9 @@
#define CONFIG_WIRELESS_SUSPEND \
(EC_WIRELESS_SWITCH_WLAN | EC_WIRELESS_SWITCH_WLAN_POWER)
+#undef DEFERRABLE_MAX_COUNT
+#define DEFERRABLE_MAX_COUNT 9
+
#ifndef __ASSEMBLER__
/* I2C ports */