From 14a7a2315e722ef83b567d1918d7990eb83a451c Mon Sep 17 00:00:00 2001 From: Yidi Lin Date: Wed, 31 Dec 2025 15:22:27 +0800 Subject: [PATCH] soc/mediatek/mt8196: Call fsp_init via boot state Refactor fsp_init to be called as a boot state entry (BS_DEV_INIT, BS_ON_ENTRY) instead of directly from soc_init. This ensures fsp initialization occurs at the appropriate boot stage. This change is necessary for FW logo rendering in the ramstage. fsp_init must be run before FW display starts rendering the logo. BUG=b:471111147 TEST=Check FW logo Change-Id: I41b32229d4c582d84afac5c336eb98b1b1274ba8 Signed-off-by: Yidi Lin Reviewed-on: https://review.coreboot.org/c/coreboot/+/90686 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel Reviewed-by: Yu-Ping Wu Reviewed-by: Chen-Tsung Hsieh --- src/soc/mediatek/mt8196/soc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/soc/mediatek/mt8196/soc.c b/src/soc/mediatek/mt8196/soc.c index 24077a0fbc..e988a76926 100644 --- a/src/soc/mediatek/mt8196/soc.c +++ b/src/soc/mediatek/mt8196/soc.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0-only */ #include +#include #include #include #include @@ -56,7 +57,7 @@ static void mte_setup(void) booker_mte_init(mte_start); } -static void fsp_init(void) +static void fsp_init(void *arg) { uint32_t storage_type = mainboard_get_storage_type(); @@ -67,6 +68,8 @@ static void fsp_init(void) mtk_fsp_load_and_run(); } +BOOT_STATE_INIT_ENTRY(BS_DEV_INIT, BS_ON_ENTRY, fsp_init, NULL); + static void soc_init(struct device *dev) { mtk_mmu_disable_l2c_sram(); @@ -76,7 +79,6 @@ static void soc_init(struct device *dev) if (spm_init()) printk(BIOS_ERR, "spm init failed, Suspend may not work\n"); - fsp_init(); sspm_init(); gpueb_init(); mcupm_init();