aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorRouven Czerwinski <r.czerwinski@pengutronix.de>2019-03-18 10:49:40 +0100
committerJoakim Bech <joakim.bech@linaro.org>2019-04-15 15:30:30 +0700
commit5981d0341c0e7118fe3f2fbd205acf7d275588e5 (patch)
tree1b261bf5271277312a5d4ebe7555444c7253a2fb /core
parente8e7f1c5d978df640d073de4271ad87bc50b6879 (diff)
plat-imx: mx6: add support for the TZC380 to MX6Q
Use the generic RAM layout to configure the TZC380 according to the device configuration. Signed-off-by: Rouven Czerwinski <r.czerwinski@pengutronix.de> Acked-by: Etienne Carriere <etienne.carriere@linaro.org> Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Peng Fan <peng.fan@nxp.com>
Diffstat (limited to 'core')
-rw-r--r--core/arch/arm/plat-imx/drivers/sub.mk1
-rw-r--r--core/arch/arm/plat-imx/drivers/tzc380.c37
-rw-r--r--core/arch/arm/plat-imx/imx.h6
-rw-r--r--core/arch/arm/plat-imx/imx6.c2
-rw-r--r--core/arch/arm/plat-imx/sub.mk2
5 files changed, 48 insertions, 0 deletions
diff --git a/core/arch/arm/plat-imx/drivers/sub.mk b/core/arch/arm/plat-imx/drivers/sub.mk
new file mode 100644
index 00000000..b7354e06
--- /dev/null
+++ b/core/arch/arm/plat-imx/drivers/sub.mk
@@ -0,0 +1 @@
+srcs-$(CFG_TZC380) += tzc380.c
diff --git a/core/arch/arm/plat-imx/drivers/tzc380.c b/core/arch/arm/plat-imx/drivers/tzc380.c
new file mode 100644
index 00000000..b9139f61
--- /dev/null
+++ b/core/arch/arm/plat-imx/drivers/tzc380.c
@@ -0,0 +1,37 @@
+// SPDX-License-Identifier: BSD-2-Clause
+/*
+ * Copyright 2019 Pengutronix
+ * All rights reserved.
+ *
+ * Rouven Czerwinski <entwicklung@pengutronix.de>
+ */
+
+#include <drivers/tzc380.h>
+#include <imx-regs.h>
+#include <imx.h>
+#include <mm/core_memprot.h>
+#include <mm/generic_ram_layout.h>
+
+void imx_configure_tzasc(void)
+{
+
+ int i;
+ 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++) {
+ uint8_t region = 1;
+
+ tzc_init(addr[i]);
+
+ region = tzc_auto_configure(CFG_DRAM_BASE, CFG_DDR_SIZE,
+ TZC_ATTR_SP_NS_RW, region);
+ region = tzc_auto_configure(CFG_TZDRAM_START, CFG_TZDRAM_SIZE,
+ TZC_ATTR_SP_S_RW, region);
+ region = tzc_auto_configure(CFG_SHMEM_START, CFG_SHMEM_SIZE,
+ TZC_ATTR_SP_ALL, region);
+ DMSG("Action register: %xl", tzc_get_action());
+ }
+}
diff --git a/core/arch/arm/plat-imx/imx.h b/core/arch/arm/plat-imx/imx.h
index af62d555..3f064301 100644
--- a/core/arch/arm/plat-imx/imx.h
+++ b/core/arch/arm/plat-imx/imx.h
@@ -33,4 +33,10 @@ uint32_t imx_soc_type(void);
void imx_gpcv2_set_core1_pdn_by_software(void);
void imx_gpcv2_set_core1_pup_by_software(void);
void imx_gpcv2_set_core_pgc(bool enable, uint32_t offset);
+
+#ifdef CFG_TZC380
+void imx_configure_tzasc(void);
+#else
+static inline void imx_configure_tzasc(void) {}
+#endif /* CFG_TZC380 */
#endif
diff --git a/core/arch/arm/plat-imx/imx6.c b/core/arch/arm/plat-imx/imx6.c
index cd34a605..c2858461 100644
--- a/core/arch/arm/plat-imx/imx6.c
+++ b/core/arch/arm/plat-imx/imx6.c
@@ -26,6 +26,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
+#include <imx.h>
#include <compiler.h>
#include <drivers/gic.h>
@@ -77,5 +78,6 @@ void plat_cpu_reset_late(void)
addr != CSU_BASE + CSU_CSL_END;
addr += 4)
io_setbits32(addr, CSU_SETTING_LOCK);
+ imx_configure_tzasc();
}
}
diff --git a/core/arch/arm/plat-imx/sub.mk b/core/arch/arm/plat-imx/sub.mk
index fa463656..20d8f0fc 100644
--- a/core/arch/arm/plat-imx/sub.mk
+++ b/core/arch/arm/plat-imx/sub.mk
@@ -23,3 +23,5 @@ endif
srcs-$(CFG_MX7) += imx7.c a7_plat_init.S
subdirs-$(CFG_PSCI_ARM32) += pm
+
+subdirs-y += drivers