[PATCH 12/14] x86: Convert arch_fsp_init() to use events

Simon Glass sjg at chromium.org
Tue Aug 22 05:16:59 CEST 2023


Convert this to use events instead of calling a function directly in the
init sequence.

Rename it to arch_fsp_init_f() to distinguish it from the one that happens
after relocation.

For FSPv2 nothing needs to be done here, so drop the empty function.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

 arch/x86/lib/fsp1/fsp_common.c |  1 +
 arch/x86/lib/fsp2/fsp_common.c |  5 -----
 common/board_f.c               |  4 +---
 common/event.c                 |  1 +
 include/event.h                |  9 +++++++++
 include/init.h                 | 11 -----------
 6 files changed, 12 insertions(+), 19 deletions(-)

diff --git a/arch/x86/lib/fsp1/fsp_common.c b/arch/x86/lib/fsp1/fsp_common.c
index 20926171822d..df18f4767562 100644
--- a/arch/x86/lib/fsp1/fsp_common.c
+++ b/arch/x86/lib/fsp1/fsp_common.c
@@ -101,3 +101,4 @@ int arch_fsp_init(void)
 
 	return 0;
 }
+EVENT_SPY_SIMPLE(EVT_FSP_INIT_F, arch_fsp_init);
diff --git a/arch/x86/lib/fsp2/fsp_common.c b/arch/x86/lib/fsp2/fsp_common.c
index 20c3f6406adf..d802a86967d5 100644
--- a/arch/x86/lib/fsp2/fsp_common.c
+++ b/arch/x86/lib/fsp2/fsp_common.c
@@ -8,11 +8,6 @@
 #include <init.h>
 #include <asm/fsp/fsp_support.h>
 
-int arch_fsp_init(void)
-{
-	return 0;
-}
-
 void board_final_cleanup(void)
 {
 	u32 status;
diff --git a/common/board_f.c b/common/board_f.c
index a485ba62fa17..46008bac6595 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -855,9 +855,7 @@ static const init_fnc_t init_sequence_f[] = {
 #if defined(CONFIG_CONSOLE_RECORD_INIT_F)
 	console_record_init,
 #endif
-#if defined(CONFIG_HAVE_FSP)
-	arch_fsp_init,
-#endif
+	INITCALL_EVENT(EVT_FSP_INIT_F),
 	arch_cpu_init,		/* basic arch cpu dependent setup */
 	mach_cpu_init,		/* SoC/machine dependent CPU setup */
 	initf_dm,
diff --git a/common/event.c b/common/event.c
index 55f6932ef62c..8a6190888845 100644
--- a/common/event.c
+++ b/common/event.c
@@ -35,6 +35,7 @@ const char *const type_name[] = {
 
 	/* init hooks */
 	"misc_init_f",
+	"fsp_init_r",
 
 	/* Fpga load hook */
 	"fpga_load",
diff --git a/include/event.h b/include/event.h
index b2cfd65c9f8b..85269aa317aa 100644
--- a/include/event.h
+++ b/include/event.h
@@ -32,6 +32,15 @@ enum event_t {
 	/* Init hooks */
 	EVT_MISC_INIT_F,
 
+	/*
+	 * Emitted before relocation to set up Firmware Support Package
+	 *
+	 * Where U-Boot relies on binary blobs to handle part of the system
+	 * init, this event can be used to set up the blobs. This is used on
+	 * some Intel platforms
+	 */
+	EVT_FSP_INIT_F,
+
 	/* Fpga load hook */
 	EVT_FPGA_LOAD,
 
diff --git a/include/init.h b/include/init.h
index 3bf30476a2e0..1bf76e4eff72 100644
--- a/include/init.h
+++ b/include/init.h
@@ -57,17 +57,6 @@ int arch_cpu_init(void);
  */
 int mach_cpu_init(void);
 
-/**
- * arch_fsp_init() - perform firmware support package init
- *
- * Where U-Boot relies on binary blobs to handle part of the system init, this
- * function can be used to set up the blobs. This is used on some Intel
- * platforms.
- *
- * Return: 0
- */
-int arch_fsp_init(void);
-
 /**
  * arch_fsp_init() - perform post-relocation firmware support package init
  *
-- 
2.42.0.rc1.204.g551eb34607-goog



More information about the U-Boot mailing list