plat-imx: mx6: support for TZASC on 6UL/ULL
The i.MX6UL/ULL processors support only one instance of the TZC380 IP.
Use only one to setup the firewall mappings.
Signed-off-by: Rouven Czerwinski <r.czerwinski@pengutronix.de>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Acked-by: Etienne Carriere <etienne.carriere@linaro.org>
diff --git a/core/arch/arm/plat-imx/drivers/tzc380.c b/core/arch/arm/plat-imx/drivers/tzc380.c
index b9139f6..3d4762f 100644
--- a/core/arch/arm/plat-imx/drivers/tzc380.c
+++ b/core/arch/arm/plat-imx/drivers/tzc380.c
@@ -6,22 +6,39 @@
* Rouven Czerwinski <entwicklung@pengutronix.de>
*/
+#include <config.h>
#include <drivers/tzc380.h>
#include <imx-regs.h>
#include <imx.h>
#include <mm/core_memprot.h>
#include <mm/generic_ram_layout.h>
+/*
+ * TZASC2_BASE is asserted non null when used.
+ * This is needed to compile the code for i.MX6UL/L
+ * and i.MX8MQ.
+ */
+#ifndef TZASC2_BASE
+#define TZASC2_BASE 0
+#endif
+
void imx_configure_tzasc(void)
{
- int i;
+ int i = 0;
+ int end = 1;
vaddr_t addr[2] = {0};
addr[0] = core_mmu_get_va(TZASC_BASE, MEM_AREA_IO_SEC);
- addr[1] = core_mmu_get_va(TZASC2_BASE, MEM_AREA_IO_SEC);
- for (i = 0; i < 2; i++) {
+ if (IS_ENABLED(CFG_MX6Q) || IS_ENABLED(CFG_MX6D) ||
+ IS_ENABLED(CFG_MX6DL)) {
+ assert(TZASC2_BASE != 0);
+ addr[1] = core_mmu_get_va(TZASC2_BASE, MEM_AREA_IO_SEC);
+ end = 2;
+ }
+
+ for (i = 0; i < end; i++) {
uint8_t region = 1;
tzc_init(addr[i]);