soc/mediatek/mt8188: Support loading OP-TEE via an SMC
This patch adds compilation flags to BL31 to support loading
OP-TEE via an SMC from rootfs. This patch also reserves 80MB memory
space for running the OP-TEE image.
BUG=b:246837563
TEST=emerge-geralt coreboot
Change-Id: Ic38c8beb59c090ae56c5be6821dd8625435609e9
Signed-off-by: Kiwi Liu <kiwi.liu@mediatek.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/78801
Reviewed-by: Kiwi Liu <kiwi.liu@mediatek.corp-partner.google.com>
Reviewed-by: Yidi Lin <yidilin@google.com>
Reviewed-by: Yu-Ping Wu <yupingso@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/src/soc/mediatek/mt8188/Kconfig b/src/soc/mediatek/mt8188/Kconfig
index 0568cd6..7de64aa 100644
--- a/src/soc/mediatek/mt8188/Kconfig
+++ b/src/soc/mediatek/mt8188/Kconfig
@@ -22,6 +22,7 @@
select VBOOT_STARTS_IN_BOOTBLOCK
select VBOOT_SEPARATE_VERSTAGE
select VBOOT_RETURN_FROM_VERSTAGE
+ select VBOOT_DEFINE_WIDEVINE_COUNTERS
config DPM_DM_FIRMWARE
string
diff --git a/src/soc/mediatek/mt8188/Makefile.inc b/src/soc/mediatek/mt8188/Makefile.inc
index 1426b83..6a643b0 100644
--- a/src/soc/mediatek/mt8188/Makefile.inc
+++ b/src/soc/mediatek/mt8188/Makefile.inc
@@ -58,7 +58,8 @@
ramstage-y += ../common/tps65132s.c
ramstage-y += ../common/usb.c usb.c
-BL31_MAKEARGS += PLAT=mt8188
+BL31_MAKEARGS += PLAT=mt8188 SPD=opteed
+BL31_MAKEARGS += OPTEE_ALLOW_SMC_LOAD=1 PLAT_XLAT_TABLES_DYNAMIC=1
CPPFLAGS_common += -Isrc/soc/mediatek/mt8188/include
CPPFLAGS_common += -Isrc/soc/mediatek/common/dp/include
diff --git a/src/soc/mediatek/mt8188/soc.c b/src/soc/mediatek/mt8188/soc.c
index c63b5ca..d0a29c5 100644
--- a/src/soc/mediatek/mt8188/soc.c
+++ b/src/soc/mediatek/mt8188/soc.c
@@ -14,10 +14,14 @@
#include <soc/sspm.h>
#include <symbols.h>
+#define OPTEE_ADDRESS 0x43000000
+#define OPTEE_SIZE (80 * MiB)
+
void bootmem_platform_add_ranges(void)
{
if (CONFIG(MTK_DFD))
bootmem_add_range(DFD_DUMP_ADDRESS, DFD_DUMP_SIZE, BM_MEM_RESERVED);
+ bootmem_add_range(OPTEE_ADDRESS, OPTEE_SIZE, BM_MEM_RESERVED);
}
static void soc_read_resources(struct device *dev)