summaryrefslogtreecommitdiff
path: root/board/samus
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2019-03-08 10:38:03 -0800
committerchrome-bot <chrome-bot@chromium.org>2019-03-28 19:04:16 -0700
commita029c7a27f3bd1a1066db9c167c6166688fe4ef3 (patch)
treec619eee562bbc8af7cddeda7b602e41a8b086ded /board/samus
parent9c7428ea97fb6606979607457a86a1ebf8ec9b19 (diff)
downloadchrome-ec-a029c7a27f3bd1a1066db9c167c6166688fe4ef3.tar.gz
power: Allow board to take custom action on G3 timer expiration
This patch introduces board_system_is_idle callback function. It's called when system is in G3. A board can customize its action taken when system is idle in G3 using battery thresholds, expiration timer, etc. determined at runtime. Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> BUG=none BRANCH=nami,strago,coral TEST=Verify Vayne cut off battery on G3 idle expiration while other Nami's hibernate. Change-Id: I6118a074ac7d844b99d9c0f3eb638b72d5894008 Reviewed-on: https://chromium-review.googlesource.com/1512623 Commit-Ready: Daisuke Nojiri <dnojiri@chromium.org> Tested-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Aseda Aboagye <aaboagye@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Diffstat (limited to 'board/samus')
-rw-r--r--board/samus/board.c21
-rw-r--r--board/samus/board.h2
2 files changed, 21 insertions, 2 deletions
diff --git a/board/samus/board.c b/board/samus/board.c
index 9f5bcf743a..6c948459a5 100644
--- a/board/samus/board.c
+++ b/board/samus/board.c
@@ -461,3 +461,24 @@ enum ec_error_list keyboard_scancode_callback(uint16_t *make_code,
}
return EC_SUCCESS;
}
+
+/*
+ * Use to define going in to hibernate early if low on battery.
+ * HIBERNATE_BATT_PCT specifies the low battery threshold
+ * for going into hibernate early, and HIBERNATE_BATT_SEC defines
+ * the minimum amount of time to stay in G3 before checking for low
+ * battery hibernate.
+ */
+#define HIBERNATE_BATT_PCT 10
+#define HIBERNATE_BATT_SEC (3600 * 24)
+
+enum critical_shutdown board_system_is_idle(uint64_t last_shutdown_time,
+ uint64_t *target, uint64_t now)
+{
+ if (charge_get_percent() <= HIBERNATE_BATT_PCT) {
+ uint64_t t = last_shutdown_time + HIBERNATE_BATT_SEC * SEC_UL;
+ *target = MIN(*target, t);
+ }
+ return now > *target ?
+ CRITICAL_SHUTDOWN_HIBERNATE : CRITICAL_SHUTDOWN_IGNORE;
+}
diff --git a/board/samus/board.h b/board/samus/board.h
index ac76ff0d4c..2bfb1574c8 100644
--- a/board/samus/board.h
+++ b/board/samus/board.h
@@ -64,8 +64,6 @@
#define CONFIG_GESTURE_SAMPLING_INTERVAL_MS 5
#undef CONFIG_HIBERNATE_DELAY_SEC
#define CONFIG_HIBERNATE_DELAY_SEC (3600 * 24 * 7)
-#define CONFIG_HIBERNATE_BATT_PCT 10
-#define CONFIG_HIBERNATE_BATT_SEC (3600 * 24)
#define CONFIG_HOSTCMD_PD
#define CONFIG_HOSTCMD_PD_CHG_CTRL
#define CONFIG_HOSTCMD_PD_PANIC