summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/board_config.h10
-rw-r--r--include/config.h6
-rw-r--r--power/intel_x86.c4
3 files changed, 20 insertions, 0 deletions
diff --git a/include/board_config.h b/include/board_config.h
index 18f7d93fb6..6682d8f9f4 100644
--- a/include/board_config.h
+++ b/include/board_config.h
@@ -50,6 +50,16 @@ void board_config_post_gpio_init(void);
void board_before_rsmrst(int rsmrst);
#endif
+#ifdef CONFIG_BOARD_HAS_AFTER_RSMRST
+/**
+ * Configure board after RSMRST# state change
+ *
+ * Similar to board_before_rsmrst, except this is called after passing RSMRST#
+ * to the AP.
+ */
+void board_after_rsmrst(int rsmrst);
+#endif
+
/**
* Configure chip early in main(), just after board_config_pre_init().
*
diff --git a/include/config.h b/include/config.h
index 7560d7509d..e876b41bb3 100644
--- a/include/config.h
+++ b/include/config.h
@@ -635,6 +635,12 @@
#undef CONFIG_BOARD_HAS_RTC_RESET
/*
+ * Call board_after_rsmrst(state) after passing RSMRST# to the AP. This is for
+ * board workarounds that are required just after RSMRST is passed to the AP.
+ */
+#undef CONFIG_BOARD_HAS_AFTER_RSMRST
+
+/*
* Call board_before_rsmrst(state) before passing RSMRST# to the AP.
* This is for board workarounds that are required after rails are up
* but before the AP is out of reset.
diff --git a/power/intel_x86.c b/power/intel_x86.c
index 334a9367ca..89bc477640 100644
--- a/power/intel_x86.c
+++ b/power/intel_x86.c
@@ -628,6 +628,10 @@ void common_intel_x86_handle_rsmrst(enum power_state state)
gpio_set_level(GPIO_PCH_RSMRST_L, rsmrst_in);
CPRINTS("Pass through GPIO_RSMRST_L_PGOOD: %d", rsmrst_in);
+
+#ifdef CONFIG_BOARD_HAS_AFTER_RSMRST
+ board_after_rsmrst(rsmrst_in);
+#endif
}
#ifdef CONFIG_POWER_TRACK_HOST_SLEEP_STATE