diff --git a/src/soc/mediatek/mt8189/Kconfig b/src/soc/mediatek/mt8189/Kconfig index 430b868582..f8ba8e4d26 100644 --- a/src/soc/mediatek/mt8189/Kconfig +++ b/src/soc/mediatek/mt8189/Kconfig @@ -48,4 +48,10 @@ config SPM_FIRMWARE help The file name of the MediaTek SPM firmware. +config SSPM_FIRMWARE + string + default "sspm.bin" + help + The file name of the MediaTek SSPM firmware. + endif diff --git a/src/soc/mediatek/mt8189/Makefile.mk b/src/soc/mediatek/mt8189/Makefile.mk index fc1f8ff8f9..b8ff8bff29 100644 --- a/src/soc/mediatek/mt8189/Makefile.mk +++ b/src/soc/mediatek/mt8189/Makefile.mk @@ -46,6 +46,7 @@ ramstage-y += ../common/pmif_spmi.c pmif_spmi.c ramstage-y += ../common/rtc.c ../common/rtc_mt6359p.c ../common/rtc_osc_init.c ramstage-y += soc.c ramstage-y += ../common/spm.c ../common/spm_v2.c spm.c +ramstage-y += ../common/sspm.c ../common/sspm_sram.c ramstage-y += ../common/usb.c usb.c BL31_MAKEARGS += PLAT=mt8189 @@ -59,7 +60,8 @@ firmware-files := \ $(CONFIG_DPM_DM_FIRMWARE) \ $(CONFIG_DPM_PM_FIRMWARE) \ $(CONFIG_MCUPM_FIRMWARE) \ - $(CONFIG_SPM_FIRMWARE) + $(CONFIG_SPM_FIRMWARE) \ + $(CONFIG_SSPM_FIRMWARE) $(foreach fw, $(call strip_quotes,$(firmware-files)), \ $(eval $(fw)-file := $(MT8189_BLOB_DIR)/$(fw)) \ diff --git a/src/soc/mediatek/mt8189/include/soc/addressmap.h b/src/soc/mediatek/mt8189/include/soc/addressmap.h index 41d6557c7d..61999e03b0 100644 --- a/src/soc/mediatek/mt8189/include/soc/addressmap.h +++ b/src/soc/mediatek/mt8189/include/soc/addressmap.h @@ -117,6 +117,8 @@ enum { VLP_CK_BASE = IO_PHYS + 0x0C012000, PMICSPI_MST_BASE = IO_PHYS + 0x0C013000, DEVAPC_VLP_AO_BASE = IO_PHYS + 0x0C018000, + SSPM_SRAM_BASE = IO_PHYS + 0x0C300000, + SSPM_CFG_BASE = IO_PHYS + 0x0C340000, SCP_IIC_BASE = IO_PHYS + 0x0C80A000, SCP_BASE = IO_PHYS + 0x0CB21000, SPMI_MST_BASE = IO_PHYS + 0x0CC00000, diff --git a/src/soc/mediatek/mt8189/include/soc/spm.h b/src/soc/mediatek/mt8189/include/soc/spm.h index 1e47d3a21c..2dea849ddf 100644 --- a/src/soc/mediatek/mt8189/include/soc/spm.h +++ b/src/soc/mediatek/mt8189/include/soc/spm.h @@ -1030,6 +1030,7 @@ check_member(mtk_spm_regs, ssusb_pwr_con, 0x0EA8); check_member(mtk_spm_regs, cpueb_pwr_con, 0x0EB0); check_member(mtk_spm_regs, mfg0_pwr_con, 0x0EB4); check_member(mtk_spm_regs, mfg3_pwr_con, 0x0EC0); +check_member(mtk_spm_regs, sspm_sram_con, 0x0F04); check_member(mtk_spm_regs, pwr_status, 0x0F40); check_member(mtk_spm_regs, edp_tx_pwr_con, 0x0F70); diff --git a/src/soc/mediatek/mt8189/soc.c b/src/soc/mediatek/mt8189/soc.c index 93f6a4264c..697f4ddcf1 100644 --- a/src/soc/mediatek/mt8189/soc.c +++ b/src/soc/mediatek/mt8189/soc.c @@ -5,6 +5,7 @@ #include #include #include +#include #include void bootmem_platform_add_ranges(void) @@ -20,6 +21,7 @@ static void soc_read_resources(struct device *dev) static void soc_init(struct device *dev) { mcupm_init(); + sspm_init(); } static struct device_operations soc_ops = {