diff options
author | Li Feng <li1.feng@intel.com> | 2022-05-06 23:36:09 -0700 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-05-12 05:45:14 +0000 |
commit | f550485ca9ac264bcac9a0b4ba0d951d60cc8e61 (patch) | |
tree | a2956e103efc339c4270c0ca8ec2dc4d53466fed | |
parent | e626edc57887a4d4956c3f311838d88b578fd701 (diff) | |
download | chrome-ec-f550485ca9ac264bcac9a0b4ba0d951d60cc8e61.tar.gz |
zephyr: check power rails is platform specific
BUG=none
BRANCH=none
TEST=zmake build nivviks, flash, boot up.
Signed-off-by: Li Feng <li1.feng@intel.com>
Change-Id: I991569d50728e0c07292bc134dffa433e36a66a4
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3633268
Reviewed-by: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Reviewed-by: Peter Marheine <pmarheine@chromium.org>
4 files changed, 22 insertions, 11 deletions
diff --git a/zephyr/projects/nissa/src/board_power.c b/zephyr/projects/nissa/src/board_power.c index b4906179ad..8180b2c8af 100644 --- a/zephyr/projects/nissa/src/board_power.c +++ b/zephyr/projects/nissa/src/board_power.c @@ -129,6 +129,13 @@ int board_ap_power_assert_pch_power_ok(void) return 0; } +bool board_ap_power_check_power_rails_enabled(void) +{ + return power_signal_get(PWR_EN_PP3300_A) && + power_signal_get(PWR_EN_PP5000_A) && + power_signal_get(PWR_EC_SOC_DSW_PWROK); +} + int board_power_signal_get(enum power_signal signal) { switch (signal) { diff --git a/zephyr/subsys/ap_pwrseq/include/ap_power_override_functions.h b/zephyr/subsys/ap_pwrseq/include/ap_power_override_functions.h index 6dae924d5a..229bfb7e60 100644 --- a/zephyr/subsys/ap_pwrseq/include/ap_power_override_functions.h +++ b/zephyr/subsys/ap_pwrseq/include/ap_power_override_functions.h @@ -65,6 +65,14 @@ void board_ap_power_action_s0(void); int board_ap_power_assert_pch_power_ok(void); /** + * @brief Check board power rails enabled or not + * + * @return true Enabled + * @return false Not enabled + */ +bool board_ap_power_check_power_rails_enabled(void); + +/** * @brief macro to access configuration properties from DTS */ #define AP_PWRSEQ_DT_VALUE(p) \ 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 5639e719a9..2f38c36684 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 @@ -76,16 +76,6 @@ static inline bool signals_valid_and_off(power_signal_mask_t signals) return signals_valid(signals) && power_signals_off(signals); } -static int check_power_rails_enabled(void) -{ - int out = 1; - - out &= power_signal_get(PWR_EN_PP3300_A); - out &= power_signal_get(PWR_EN_PP5000_A); - out &= power_signal_get(PWR_EC_SOC_DSW_PWROK); - return out; -} - enum power_states_ndsx pwr_sm_get_state(void) { return pwrseq_ctx.power_state; @@ -225,7 +215,8 @@ static int common_pwr_sm_run(int state) case SYS_POWER_STATE_S5: /* In S5 make sure no more signal lost */ /* If A-rails are stable then move to higher state */ - if (check_power_rails_enabled() && rsmrst_power_is_good()) { + if (board_ap_power_check_power_rails_enabled() + && rsmrst_power_is_good()) { /* rsmrst is intact */ rsmrst_pass_thru_handler(); if (signals_valid_and_off(IN_PCH_SLP_S5)) { diff --git a/zephyr/test/ap_power/src/board.c b/zephyr/test/ap_power/src/board.c index 5745f4008e..96b30d21d3 100644 --- a/zephyr/test/ap_power/src/board.c +++ b/zephyr/test/ap_power/src/board.c @@ -78,6 +78,11 @@ void board_ap_power_action_s0(void) { } +bool board_ap_power_check_power_rails_enabled(void) +{ + return false; +} + int extpower_is_present(void) { return 0; |