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)