diff options
author | Victor Chong <victor.chong@linaro.org> | 2018-02-01 00:35:39 +0900 |
---|---|---|
committer | Victor Chong <victor.chong@linaro.org> | 2018-02-08 02:14:46 +0900 |
commit | f3d522be8e567bb42663d0abd69f89715c58e591 (patch) | |
tree | 2aafe120fe6215c4c67ddd455ded05b620cec17c /plat/hisilicon/poplar/bl2_plat_setup.c | |
parent | 0d8052a4eacc73aa808bf4b242f9f64b62875b9d (diff) | |
download | trusted-firmware-a-f3d522be8e567bb42663d0abd69f89715c58e591.tar.gz |
poplar: Support Trusted OS extra image (OP-TEE header) parsing
Signed-off-by: Victor Chong <victor.chong@linaro.org>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Diffstat (limited to 'plat/hisilicon/poplar/bl2_plat_setup.c')
-rw-r--r-- | plat/hisilicon/poplar/bl2_plat_setup.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/plat/hisilicon/poplar/bl2_plat_setup.c b/plat/hisilicon/poplar/bl2_plat_setup.c index a338396fa2..177630b035 100644 --- a/plat/hisilicon/poplar/bl2_plat_setup.c +++ b/plat/hisilicon/poplar/bl2_plat_setup.c @@ -15,6 +15,7 @@ #include <errno.h> #include <generic_delay_timer.h> #include <mmio.h> +#include <optee_utils.h> #include <partition/partition.h> #include <platform.h> #include <string.h> @@ -142,12 +143,37 @@ int poplar_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"); + } + + /* + * OP-TEE expect to receive DTB address in x2. + * This will be copied into x2 by dispatcher. + * Set this (arg3) if necessary + */ + /* bl_mem_params->ep_info.args.arg3 = PLAT_HIKEY_DT_BASE; */ +#endif bl_mem_params->ep_info.spsr = poplar_get_spsr_for_bl32_entry(); break; #endif |