summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan O'Donoghue <bryan.odonoghue@linaro.org>2019-05-30 11:35:59 +0100
committerBryan O'Donoghue <bryan.odonoghue@linaro.org>2019-05-30 13:39:58 +0100
commitade41668aa8159276d7fde9b30897096d78f0aa4 (patch)
tree85c768e801125d2377c49b42577f2156460b709c
parent1ff4456b226289c75157d8f8641a496ccbec26cf (diff)
plat: imx8m: Add support for exeucting a TEE
This patch adds support for handing off to a TEE BL32 prior to handing off to non-secure u-boot BL33. It is based on NXP's code from codeaurora.org Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
-rw-r--r--plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c14
-rw-r--r--plat/imx/imx8m/imx8mm/include/platform_def.h1
-rw-r--r--plat/imx/imx8m/imx8mm/platform.mk4
3 files changed, 19 insertions, 0 deletions
diff --git a/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c b/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c
index a541ed377..31cfba894 100644
--- a/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c
+++ b/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c
@@ -96,6 +96,20 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
bl33_image_ep_info.spsr = get_spsr_for_bl33_entry();
SET_SECURITY_STATE(bl33_image_ep_info.h.attr, NON_SECURE);
+#ifdef TEE_IMX8
+ /* Populate entry point information for BL32 */
+ SET_PARAM_HEAD(&bl32_image_ep_info, PARAM_EP, VERSION_1, 0);
+ SET_SECURITY_STATE(bl32_image_ep_info.h.attr, SECURE);
+ bl32_image_ep_info.pc = BL32_BASE;
+ bl32_image_ep_info.spsr = 0;
+
+ /* Pass TEE base and size to uboot */
+ bl33_image_ep_info.args.arg1 = BL32_BASE;
+
+ /* TEE size + RDC reserved memory = 0x2000000 + 0x2000000 + 0x30000000 */
+ bl33_image_ep_info.args.arg2 = BL32_LIMIT - BL32_BASE;
+#endif
+
bl31_tzc380_setup();
}
diff --git a/plat/imx/imx8m/imx8mm/include/platform_def.h b/plat/imx/imx8m/imx8mm/include/platform_def.h
index a95ab8303..b636bb98b 100644
--- a/plat/imx/imx8m/imx8mm/include/platform_def.h
+++ b/plat/imx/imx8m/imx8mm/include/platform_def.h
@@ -32,6 +32,7 @@
#define BL31_BASE U(0x920000)
#define BL31_LIMIT U(0x940000)
#define BL32_BASE U(0xbe000000)
+#define BL32_LIMIT U(0xc0000000)
/* non-secure uboot base */
#define PLAT_NS_IMAGE_OFFSET U(0x40200000)
diff --git a/plat/imx/imx8m/imx8mm/platform.mk b/plat/imx/imx8m/imx8mm/platform.mk
index 9f9ba922c..dca1598ef 100644
--- a/plat/imx/imx8m/imx8mm/platform.mk
+++ b/plat/imx/imx8m/imx8mm/platform.mk
@@ -35,6 +35,10 @@ BL31_SOURCES += plat/imx/common/imx8_helpers.S \
drivers/delay_timer/generic_delay_timer.c \
${IMX_GIC_SOURCES}
+ifneq (${SPD},none)
+$(eval $(call add_define,TEE_IMX8))
+endif
+
USE_COHERENT_MEM := 1
RESET_TO_BL31 := 1
A53_DISABLE_NON_TEMPORAL_HINT := 0