summaryrefslogtreecommitdiff
path: root/zephyr/subsys
diff options
context:
space:
mode:
authorBernardo Perez Priego <bernardo.perez.priego@intel.com>2022-05-23 19:18:50 -0700
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-07-26 06:50:48 +0000
commite7d8c9f84a65f389f4fda5d000b243c8b56e0ea5 (patch)
treeb3a9ff6aa3528786c84e21096a10fbb46d6fa72d /zephyr/subsys
parent7608cbfab72edd940146264b7d3abcd02eeba89d (diff)
downloadchrome-ec-e7d8c9f84a65f389f4fda5d000b243c8b56e0ea5.tar.gz
zephyr: ap_pwrseq: Handle low battery charge
This will prevent AP power up when battery charge is too low and power up AP automatically as soon as battery charge level becomes acceptable. BUG=b:234049176 BRANCH=None TEST=Build, flash, boot and follow steps: 1. Discharge battery to ~2% 2. Press power button Board should not boot 3. Connect AC adapter Board should boot automatically Signed-off-by: Bernardo Perez Priego <bernardo.perez.priego@intel.com> Change-Id: Ida4f6557c998e3e6059d68a66672e35890b13046 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3662701 Reviewed-by: Andrew McRae <amcrae@google.com>
Diffstat (limited to 'zephyr/subsys')
-rw-r--r--zephyr/subsys/ap_pwrseq/ap_power_interface.c7
-rw-r--r--zephyr/subsys/ap_pwrseq/x86_non_dsx_common_pwrseq_sm_handler.c6
2 files changed, 13 insertions, 0 deletions
diff --git a/zephyr/subsys/ap_pwrseq/ap_power_interface.c b/zephyr/subsys/ap_pwrseq/ap_power_interface.c
index 6186e299dd..d6ab898d4f 100644
--- a/zephyr/subsys/ap_pwrseq/ap_power_interface.c
+++ b/zephyr/subsys/ap_pwrseq/ap_power_interface.c
@@ -118,3 +118,10 @@ void ap_power_exit_hardoff(void)
void ap_power_init_reset_log(void)
{
}
+
+#if !defined(CONFIG_CHARGER)
+bool ap_power_is_ok_to_power_up(void)
+{
+ return true;
+}
+#endif
diff --git a/zephyr/subsys/ap_pwrseq/x86_non_dsx_common_pwrseq_sm_handler.c b/zephyr/subsys/ap_pwrseq/x86_non_dsx_common_pwrseq_sm_handler.c
index b7009cab88..4fcd52f2d4 100644
--- a/zephyr/subsys/ap_pwrseq/x86_non_dsx_common_pwrseq_sm_handler.c
+++ b/zephyr/subsys/ap_pwrseq/x86_non_dsx_common_pwrseq_sm_handler.c
@@ -249,6 +249,12 @@ static int common_pwr_sm_run(int state)
break;
case SYS_POWER_STATE_G3S5:
+ if (!ap_power_is_ok_to_power_up()) {
+ LOG_INF("Power up inhibited!");
+ ap_power_force_shutdown(
+ AP_POWER_SHUTDOWN_BATTERY_INHIBIT);
+ return SYS_POWER_STATE_G3;
+ }
if ((power_get_signals() & PWRSEQ_G3S5_UP_SIGNAL) ==
PWRSEQ_G3S5_UP_VALUE)
return SYS_POWER_STATE_S5;