diff options
Diffstat (limited to 'zephyr/subsys/ap_pwrseq/x86_non_dsx_common_pwrseq_sm_handler.c')
-rw-r--r-- | zephyr/subsys/ap_pwrseq/x86_non_dsx_common_pwrseq_sm_handler.c | 32 |
1 files changed, 14 insertions, 18 deletions
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 34c3d5df18..bcc34bd32d 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 @@ -42,34 +42,26 @@ const char pwrsm_dbg[][25] = { #endif }; -#ifdef PWRSEQ_REQUIRE_ESPI - -void notify_espi_ready(bool ready) -{ - pwrseq_ctx.espi_ready = ready; -} -#endif - /* * Returns true if all signals in mask are valid. + * This is only done for virtual wire signals. */ static inline bool signals_valid(power_signal_mask_t signals) { -#ifdef PWRSEQ_REQUIRE_ESPI - if (!pwrseq_ctx.espi_ready) { #if defined(CONFIG_PLATFORM_EC_ESPI_VW_SLP_S3) - if (signals & POWER_SIGNAL_MASK(PWR_SLP_S3)) - return false; + if ((signals & POWER_SIGNAL_MASK(PWR_SLP_S3)) && + power_signal_get(PWR_SLP_S3) < 0) + return false; #endif #if defined(CONFIG_PLATFORM_EC_ESPI_VW_SLP_S4) - if (signals & POWER_SIGNAL_MASK(PWR_SLP_S3)) - return false; + if ((signals & POWER_SIGNAL_MASK(PWR_SLP_S4)) && + power_signal_get(PWR_SLP_S4) < 0) + return false; #endif #if defined(CONFIG_PLATFORM_EC_ESPI_VW_SLP_S5) - if (signals & POWER_SIGNAL_MASK(PWR_SLP_S3)) - return false; -#endif - } + if ((signals & POWER_SIGNAL_MASK(PWR_SLP_S5)) && + power_signal_get(PWR_SLP_S5) < 0) + return false; #endif return true; } @@ -526,4 +518,8 @@ static int pwrseq_init(const struct device *dev) return 0; } +/* + * The initialisation must occur after system I/O initialisation that + * the signals depend upon, such as GPIO, ADC etc. + */ SYS_INIT(pwrseq_init, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY); |