Reapply "soc/mediatek/mt8196: Call fsp_init via boot state"

This reverts commit 292d7b9d3d.

The resume failure is caused by the improper DEVAPC setting in fsp_init
for DM/PM and SPM. If fsp_init runs prior to dpm_init and spm_init, it
requires AP to grant the access to DM/PM and SPM from DEVAPC. The fix is
done in CB:90756.

BUG=b:474254985
TEST=Run suspend/resume test

Change-Id: Id21327f6d65d31659cdb8b4bda3b0a0510c438e8
Signed-off-by: Yidi Lin <yidilin@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/90757
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Chen-Tsung Hsieh <chentsung@google.com>
Reviewed-by: Yu-Ping Wu <yupingso@google.com>
This commit is contained in:
Yidi Lin 2026-01-13 18:29:23 +08:00
commit 00fbc08b76

View file

@ -1,6 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <bootmem.h>
#include <bootstate.h>
#include <device/device.h>
#include <device/pci.h>
#include <soc/booker.h>
@ -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();