From afa6df2236ed4abb7e610907f57c4671062f5979 Mon Sep 17 00:00:00 2001 From: Silvano di Ninno Date: Mon, 19 Nov 2018 17:53:05 +0100 Subject: TEE-329-1: OP-TEE: Add support for i.MX 8QxP reuse Trusty support for OP-TEE Signed-off-by: Silvano di Ninno (cherry picked from commit 6e2885a262b94bdeb8face851012f58ed32e86a9) --- plat/imx/imx8qxp/imx8qxp_bl31_setup.c | 22 ++++++++++++---------- plat/imx/imx8qxp/include/platform_def.h | 4 ++-- plat/imx/imx8qxp/platform.mk | 4 ++++ 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/plat/imx/imx8qxp/imx8qxp_bl31_setup.c b/plat/imx/imx8qxp/imx8qxp_bl31_setup.c index 5b508f94..73bc834e 100644 --- a/plat/imx/imx8qxp/imx8qxp_bl31_setup.c +++ b/plat/imx/imx8qxp/imx8qxp_bl31_setup.c @@ -165,7 +165,7 @@ void imx8_partition_resources(void) bool owned; sc_faddr_t start, end, reg_end; int i; -#ifdef SPD_trusty +#ifdef TEE_IMX8 sc_rm_mr_t mr_tee = 64; bool mr_tee_atf_same = false; sc_faddr_t reg_start; @@ -205,7 +205,7 @@ void imx8_partition_resources(void) if (BL31_BASE >= start && (BL31_LIMIT - 1) <= end) { mr_record = mr; /* Record the mr for ATF running */ } -#ifdef SPD_trusty +#ifdef TEE_IMX8 else if (BL32_BASE >= start && (BL32_LIMIT -1) <= end) { mr_tee = mr; } @@ -219,7 +219,7 @@ void imx8_partition_resources(void) } } -#ifdef SPD_trusty +#ifdef TEE_IMX8 if (mr_tee != 64) { err = sc_rm_get_memreg_info(ipc_handle, mr_tee, &start, &end); if (err) { @@ -251,7 +251,7 @@ void imx8_partition_resources(void) #endif if (mr_record != 64) { err = sc_rm_get_memreg_info(ipc_handle, mr_record, &start, &end); -#ifdef SPD_trusty +#ifdef TEE_IMX8 if (BL32_BASE >= start && (BL32_LIMIT - 1) <= end) mr_tee_atf_same = true; #endif @@ -260,7 +260,7 @@ void imx8_partition_resources(void) ERROR("Memreg get info failed, %u\n", mr_record); } else { if ((BL31_LIMIT - 1) < end) { -#ifdef SPD_trusty +#ifdef TEE_IMX8 if ((end > BL32_BASE) && mr_tee_atf_same) reg_end = BL32_BASE - 1; #endif @@ -273,17 +273,17 @@ void imx8_partition_resources(void) ERROR("Memreg assign failed, 0x%lx -- 0x%lx\n", (sc_faddr_t)BL31_LIMIT, reg_end); } } -#ifdef SPD_trusty +#ifdef TEE_IMX8 if (mr_tee_atf_same) { if ((BL32_LIMIT - 1) < end) { reg_start = BL32_LIMIT; err = sc_rm_memreg_alloc(ipc_handle, &mr, reg_start, end); if (err) { - ERROR("sc_rm_memreg_alloc failed, 0x%lx -- 0x%lx\n", reg_start, reg_end); + ERROR("sc_rm_memreg_alloc failed, 0x%lx -- 0x%lx\n", reg_start, end); } else { err = sc_rm_assign_memreg(ipc_handle, os_part, mr); if (err) - ERROR("Memreg assign failed, 0x%lx -- 0x%lx\n", reg_start, reg_end); + ERROR("Memreg assign failed, 0x%lx -- 0x%lx\n", reg_start, end); } } } @@ -395,13 +395,15 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1, */ bl33_image_ep_info.pc = PLAT_NS_IMAGE_OFFSET; bl33_image_ep_info.spsr = get_spsr_for_bl33_entry(); -#ifdef SPD_trusty +#ifdef TEE_IMX8 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; +#ifdef SPD_trusty bl32_image_ep_info.args.arg0 = BL32_SIZE; bl32_image_ep_info.args.arg1 = BL32_BASE; +#endif #endif SET_SECURITY_STATE(bl33_image_ep_info.h.attr, NON_SECURE); } @@ -420,7 +422,7 @@ void bl31_plat_arch_setup(void) mmap_add_region(IMX_REG_BASE, IMX_REG_BASE, IMX_REG_SIZE, MT_DEVICE | MT_RW); -#ifdef SPD_trusty +#ifdef TEE_IMX8 mmap_add_region(BL32_BASE, BL32_BASE, BL32_SIZE, MT_MEMORY | MT_RW); #endif diff --git a/plat/imx/imx8qxp/include/platform_def.h b/plat/imx/imx8qxp/include/platform_def.h index fa6d2709..8dd40b47 100644 --- a/plat/imx/imx8qxp/include/platform_def.h +++ b/plat/imx/imx8qxp/include/platform_def.h @@ -28,7 +28,7 @@ #define BL31_BASE 0x80000000 #define BL31_LIMIT 0x80020000 -#ifdef SPD_trusty +#ifdef TEE_IMX8 #define BL32_BASE 0xfe000000 #define BL32_SIZE 0x00200000 #define BL32_LIMIT 0x100000000 @@ -67,7 +67,7 @@ #define SC_CONSOLE 0 #define DEBUG_CONSOLE 0 -#ifdef SPD_trusty +#ifdef TEE_IMX8 #define DEBUG_CONSOLE_A35 1 #else #define DEBUG_CONSOLE_A35 0 diff --git a/plat/imx/imx8qxp/platform.mk b/plat/imx/imx8qxp/platform.mk index 42626bcd..79e9eef5 100644 --- a/plat/imx/imx8qxp/platform.mk +++ b/plat/imx/imx8qxp/platform.mk @@ -66,3 +66,7 @@ RESET_TO_BL31 := 1 ERROR_DEPRECATED := 1 ARM_GIC_ARCH := 3 A53_DISABLE_NON_TEMPORAL_HINT := 0 + +ifneq (${SPD},none) +$(eval $(call add_define,TEE_IMX8)) +endif -- cgit v1.2.3