diff options
author | Bernardo Perez Priego <bernardo.perez.priego@intel.com> | 2022-05-23 19:18:50 -0700 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-07-26 06:50:48 +0000 |
commit | e7d8c9f84a65f389f4fda5d000b243c8b56e0ea5 (patch) | |
tree | b3a9ff6aa3528786c84e21096a10fbb46d6fa72d /zephyr/subsys | |
parent | 7608cbfab72edd940146264b7d3abcd02eeba89d (diff) | |
download | chrome-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.c | 7 | ||||
-rw-r--r-- | zephyr/subsys/ap_pwrseq/x86_non_dsx_common_pwrseq_sm_handler.c | 6 |
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; |