Browse Source

feat(imx8mm): enable Trusty OS on imx8mm

Add trusty support for imx8mm, default load address
and size of trusty are 0xbe000000 anx 0x2000000.

Signed-off-by: Ji Luo <ji.luo@nxp.com>
Signed-off-by: Jacky Bai <ping.bai@nxp.com>
Change-Id: I3f8b1adc08933e38a39f1ab1723947319d19a703
pull/1985/head
Ji Luo 5 years ago
committed by Jacky Bai
parent
commit
ff3acfe3cc
  1. 20
      plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c

20
plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c

@ -29,6 +29,8 @@
#include <imx8m_csu.h> #include <imx8m_csu.h>
#include <plat_imx8.h> #include <plat_imx8.h>
#define TRUSTY_PARAMS_LEN_BYTES (4096*2)
static const mmap_region_t imx_mmap[] = { static const mmap_region_t imx_mmap[] = {
MAP_REGION_FLAT(IMX_GIC_BASE, IMX_GIC_SIZE, MT_DEVICE | MT_RW), MAP_REGION_FLAT(IMX_GIC_BASE, IMX_GIC_SIZE, MT_DEVICE | MT_RW),
MAP_REGION_FLAT(IMX_AIPS_BASE, IMX_AIPS_SIZE, MT_DEVICE | MT_RW), /* AIPS map */ MAP_REGION_FLAT(IMX_AIPS_BASE, IMX_AIPS_SIZE, MT_DEVICE | MT_RW), /* AIPS map */
@ -143,13 +145,17 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
bl33_image_ep_info.spsr = get_spsr_for_bl33_entry(); bl33_image_ep_info.spsr = get_spsr_for_bl33_entry();
SET_SECURITY_STATE(bl33_image_ep_info.h.attr, NON_SECURE); SET_SECURITY_STATE(bl33_image_ep_info.h.attr, NON_SECURE);
#ifdef SPD_opteed #if defined(SPD_opteed) || defined(SPD_trusty)
/* Populate entry point information for BL32 */ /* Populate entry point information for BL32 */
SET_PARAM_HEAD(&bl32_image_ep_info, PARAM_EP, VERSION_1, 0); SET_PARAM_HEAD(&bl32_image_ep_info, PARAM_EP, VERSION_1, 0);
SET_SECURITY_STATE(bl32_image_ep_info.h.attr, SECURE); SET_SECURITY_STATE(bl32_image_ep_info.h.attr, SECURE);
bl32_image_ep_info.pc = BL32_BASE; bl32_image_ep_info.pc = BL32_BASE;
bl32_image_ep_info.spsr = 0; 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
/* Pass TEE base and size to bl33 */ /* Pass TEE base and size to bl33 */
bl33_image_ep_info.args.arg1 = BL32_BASE; bl33_image_ep_info.args.arg1 = BL32_BASE;
bl33_image_ep_info.args.arg2 = BL32_SIZE; bl33_image_ep_info.args.arg2 = BL32_SIZE;
@ -169,6 +175,9 @@ void bl31_plat_arch_setup(void)
(BL_COHERENT_RAM_END - BL_COHERENT_RAM_BASE), (BL_COHERENT_RAM_END - BL_COHERENT_RAM_BASE),
MT_DEVICE | MT_RW | MT_SECURE); MT_DEVICE | MT_RW | MT_SECURE);
#endif #endif
/* Map TEE memory */
mmap_add_region(BL32_BASE, BL32_BASE, BL32_SIZE, MT_MEMORY | MT_RW);
mmap_add(imx_mmap); mmap_add(imx_mmap);
init_xlat_tables(); init_xlat_tables();
@ -203,3 +212,12 @@ unsigned int plat_get_syscnt_freq2(void)
{ {
return COUNTER_FREQUENCY; return COUNTER_FREQUENCY;
} }
#ifdef SPD_trusty
void plat_trusty_set_boot_args(aapcs64_params_t *args)
{
args->arg0 = BL32_SIZE;
args->arg1 = BL32_BASE;
args->arg2 = TRUSTY_PARAMS_LEN_BYTES;
}
#endif

Loading…
Cancel
Save