summaryrefslogtreecommitdiff
path: root/zephyr/subsys/ap_pwrseq/x86_non_dsx_common_pwrseq_sm_handler.c
diff options
context:
space:
mode:
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.c32
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);