summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoanna Farley <joanna.farley@arm.com>2023-02-25 01:15:09 +0100
committerTrustedFirmware Code Review <review@review.trustedfirmware.org>2023-02-25 01:15:09 +0100
commit3d2da6f5d3a931d97e0294f0a565b1810a55ab98 (patch)
tree44834494e397d6c48e9b70bb1dbb72aeec0c620a
parent295f0d849807de7fe226f9a9c6434d3d5b75912f (diff)
parent70134000842cbc7c052031dd453bdec8f4cb73f1 (diff)
downloadarm-trusted-firmware-3d2da6f5d3a931d97e0294f0a565b1810a55ab98.tar.gz
Merge "feat(zynqmp): add hooks for mmap and early setup" into integration
-rw-r--r--plat/xilinx/zynqmp/bl31_zynqmp_setup.c6
-rw-r--r--plat/xilinx/zynqmp/custom_sip_svc.c8
-rw-r--r--plat/xilinx/zynqmp/include/custom_svc.h3
-rw-r--r--plat/xilinx/zynqmp/include/platform_def.h11
4 files changed, 27 insertions, 1 deletions
diff --git a/plat/xilinx/zynqmp/bl31_zynqmp_setup.c b/plat/xilinx/zynqmp/bl31_zynqmp_setup.c
index 6bc571669..1d963e82a 100644
--- a/plat/xilinx/zynqmp/bl31_zynqmp_setup.c
+++ b/plat/xilinx/zynqmp/bl31_zynqmp_setup.c
@@ -17,6 +17,7 @@
#include <plat/common/platform.h>
#include <lib/mmio.h>
+#include <custom_svc.h>
#include <plat_startup.h>
#include <plat_private.h>
#include <zynqmp_def.h>
@@ -129,6 +130,9 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
if (bl33_image_ep_info.pc != 0) {
VERBOSE("BL31: Non secure code at 0x%lx\n", bl33_image_ep_info.pc);
}
+
+ custom_early_setup();
+
}
#if ZYNQMP_WDT_RESTART
@@ -262,6 +266,8 @@ void bl31_plat_arch_setup(void)
{0}
};
+ custom_mmap_add();
+
setup_page_tables(bl_regions, plat_arm_get_mmap());
enable_mmu_el3(0);
}
diff --git a/plat/xilinx/zynqmp/custom_sip_svc.c b/plat/xilinx/zynqmp/custom_sip_svc.c
index 459aa39f2..fbb0a33f7 100644
--- a/plat/xilinx/zynqmp/custom_sip_svc.c
+++ b/plat/xilinx/zynqmp/custom_sip_svc.c
@@ -15,3 +15,11 @@ uint64_t custom_smc_handler(uint32_t smc_fid, uint64_t x1, uint64_t x2,
WARN("Unimplemented SiP Service Call: 0x%x\n", smc_fid);
SMC_RET1(handle, SMC_UNK);
}
+
+void custom_early_setup(void)
+{
+}
+
+void custom_mmap_add(void)
+{
+}
diff --git a/plat/xilinx/zynqmp/include/custom_svc.h b/plat/xilinx/zynqmp/include/custom_svc.h
index 389a7bcd7..ef0eb675c 100644
--- a/plat/xilinx/zynqmp/include/custom_svc.h
+++ b/plat/xilinx/zynqmp/include/custom_svc.h
@@ -13,4 +13,7 @@ uint64_t custom_smc_handler(uint32_t smc_fid, uint64_t x1, uint64_t x2,
uint64_t x3, uint64_t x4, void *cookie,
void *handle, uint64_t flags);
+void custom_early_setup(void);
+void custom_mmap_add(void);
+
#endif /* CUSTOM_SVC_H */
diff --git a/plat/xilinx/zynqmp/include/platform_def.h b/plat/xilinx/zynqmp/include/platform_def.h
index ffed0eee7..b46eb636e 100644
--- a/plat/xilinx/zynqmp/include/platform_def.h
+++ b/plat/xilinx/zynqmp/include/platform_def.h
@@ -89,13 +89,22 @@
#define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32)
#define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32)
+
+#ifndef MAX_MMAP_REGIONS
#if (BL31_LIMIT < PLAT_DDR_LOWMEM_MAX)
#define MAX_MMAP_REGIONS 8
-#define MAX_XLAT_TABLES 8
#else
#define MAX_MMAP_REGIONS 7
+#endif
+#endif
+
+#ifndef MAX_XLAT_TABLES
+#if (BL31_LIMIT < PLAT_DDR_LOWMEM_MAX)
+#define MAX_XLAT_TABLES 8
+#else
#define MAX_XLAT_TABLES 5
#endif
+#endif
#define CACHE_WRITEBACK_SHIFT 6
#define CACHE_WRITEBACK_GRANULE (1 << CACHE_WRITEBACK_SHIFT)