diff options
author | Victor Chong <victor.chong@linaro.org> | 2017-08-16 13:53:56 +0900 |
---|---|---|
committer | Victor Chong <victor.chong@linaro.org> | 2017-09-01 22:48:10 +0900 |
commit | b16bb16e3b6423929c2b2a7c23486ef538cca6aa (patch) | |
tree | 0e7b16528f2c4a88fb6216a5cef7e37b49f1170d /plat/hisilicon/hikey/hikey_bl2_setup.c | |
parent | 2de0c5cc4fac47dcc5df295bd1eaf3a6da528424 (diff) | |
download | trusted-firmware-a-b16bb16e3b6423929c2b2a7c23486ef538cca6aa.tar.gz |
hikey*: Support Trusted OS extra image (OP-TEE header) parsing
Signed-off-by: Victor Chong <victor.chong@linaro.org>
Diffstat (limited to 'plat/hisilicon/hikey/hikey_bl2_setup.c')
-rw-r--r-- | plat/hisilicon/hikey/hikey_bl2_setup.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/plat/hisilicon/hikey/hikey_bl2_setup.c b/plat/hisilicon/hikey/hikey_bl2_setup.c index c977fb68d7..968da9bd63 100644 --- a/plat/hisilicon/hikey/hikey_bl2_setup.c +++ b/plat/hisilicon/hikey/hikey_bl2_setup.c @@ -17,6 +17,11 @@ #include <hisi_mcu.h> #include <hisi_sram_map.h> #include <mmio.h> +#if LOAD_IMAGE_V2 +#ifdef SPD_opteed +#include <optee_utils.h> +#endif +#endif #include <platform_def.h> #include <sp804_delay_timer.h> #include <string.h> @@ -161,11 +166,29 @@ int hikey_bl2_handle_post_image_load(unsigned int image_id) { int err = 0; bl_mem_params_node_t *bl_mem_params = get_bl_mem_params_node(image_id); +#ifdef SPD_opteed + bl_mem_params_node_t *pager_mem_params = NULL; + bl_mem_params_node_t *paged_mem_params = NULL; +#endif assert(bl_mem_params); switch (image_id) { #ifdef AARCH64 case BL32_IMAGE_ID: +#ifdef SPD_opteed + pager_mem_params = get_bl_mem_params_node(BL32_EXTRA1_IMAGE_ID); + assert(pager_mem_params); + + paged_mem_params = get_bl_mem_params_node(BL32_EXTRA2_IMAGE_ID); + assert(paged_mem_params); + + err = parse_optee_header(&bl_mem_params->ep_info, + &pager_mem_params->image_info, + &paged_mem_params->image_info); + if (err != 0) { + WARN("OPTEE header parse error.\n"); + } +#endif bl_mem_params->ep_info.spsr = hikey_get_spsr_for_bl32_entry(); break; #endif |