aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtur Rojek2023-10-18 16:00:57 +0200
committerEugen Hristev2023-10-23 17:07:06 +0300
commit6092ce50efa62806661e5488e0ad72050f0d9827 (patch)
treeaeca76dd72d391c9e88841517b33faa22a20fb1b
parentcd3dbb56874dbf0f85c4c36958e29c2515374a6b (diff)
event: add new EVT_SETTINGS_R event
Introduce EVT_SETTINGS_R, triggered post-relocation and before console init. This event gives an option to perform any platform-dependent setup, which needs to take place before show_board_info(). Usage examples include readout of EEPROM stored settings. Signed-off-by: Artur Rojek <artur@conclusive.pl> Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r--common/board_r.c1
-rw-r--r--common/event.c1
-rw-r--r--include/event.h9
3 files changed, 11 insertions, 0 deletions
diff --git a/common/board_r.c b/common/board_r.c
index 52786901be5..a7967849dc0 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -693,6 +693,7 @@ static init_fnc_t init_sequence_r[] = {
#if defined(CONFIG_ID_EEPROM)
mac_read_from_eeprom,
#endif
+ INITCALL_EVENT(EVT_SETTINGS_R),
INIT_FUNC_WATCHDOG_RESET
#if defined(CONFIG_PCI_INIT_R) && !defined(CONFIG_SYS_EARLY_PCI_INIT)
/*
diff --git a/common/event.c b/common/event.c
index 3080d9ed754..dc61b9672f3 100644
--- a/common/event.c
+++ b/common/event.c
@@ -37,6 +37,7 @@ const char *const type_name[] = {
/* init hooks */
"misc_init_f",
"fsp_init_r",
+ "settings_r",
"last_stage_init",
/* Fpga load hook */
diff --git a/include/event.h b/include/event.h
index c5646b713ad..a8f046da3c3 100644
--- a/include/event.h
+++ b/include/event.h
@@ -105,6 +105,15 @@ enum event_t {
EVT_FSP_INIT_F,
/**
+ * @EVT_SETTINGS_R:
+ * This event is triggered post-relocation and before console init.
+ * This gives an option to perform any platform-dependent setup, which
+ * needs to take place before show_board_info() (e.g. readout of EEPROM
+ * stored settings).
+ */
+ EVT_SETTINGS_R,
+
+ /**
* @EVT_LAST_STAGE_INIT:
* This event is triggered just before jumping to the main loop.
* Some boards need to perform initialisation immediately before control