aboutsummaryrefslogtreecommitdiff
path: root/plat/hisilicon/poplar/bl2_plat_setup.c
diff options
context:
space:
mode:
authorVictor Chong <victor.chong@linaro.org>2018-02-01 00:35:39 +0900
committerVictor Chong <victor.chong@linaro.org>2018-02-08 02:14:46 +0900
commitf3d522be8e567bb42663d0abd69f89715c58e591 (patch)
tree2aafe120fe6215c4c67ddd455ded05b620cec17c /plat/hisilicon/poplar/bl2_plat_setup.c
parent0d8052a4eacc73aa808bf4b242f9f64b62875b9d (diff)
downloadtrusted-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.c26
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