aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorCedric Neveux <cedric.neveux@nxp.com>2017-11-14 08:53:09 +0000
committerSilvano di Ninno <silvano.dininno@nxp.com>2018-08-02 15:37:21 +0200
commit9bc17b209c23e65982b8b0f2b6d78830891ee195 (patch)
treee9c9abe0901062a7f05af0f06b5a412741e3a4c3 /core
parent1771973f67af71d1aa9db8ce55bb490d7456fb37 (diff)
TEE-243 core: arm: imx: Add SCU module
Add a SCU module Signed-off-by: Cedric Neveux <cedric.neveux@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com>
Diffstat (limited to 'core')
-rw-r--r--core/arch/arm/plat-imx/conf.mk2
-rw-r--r--core/arch/arm/plat-imx/imx.h3
-rw-r--r--core/arch/arm/plat-imx/imx6.c11
-rw-r--r--core/arch/arm/plat-imx/imx_scu.c25
-rw-r--r--core/arch/arm/plat-imx/sub.mk2
5 files changed, 33 insertions, 10 deletions
diff --git a/core/arch/arm/plat-imx/conf.mk b/core/arch/arm/plat-imx/conf.mk
index d1f81a63..148aa130 100644
--- a/core/arch/arm/plat-imx/conf.mk
+++ b/core/arch/arm/plat-imx/conf.mk
@@ -67,8 +67,8 @@ include core/arch/arm/cpu/cortex-a9.mk
$(call force,CFG_MX6,y)
$(call force,CFG_PL310,y)
-
CFG_PL310_LOCKED ?= y
+CFG_SCU ?= y
CFG_BOOT_SYNC_CPU ?= y
CFG_BOOT_SECONDARY_REQUEST ?= y
CFG_ENABLE_SCTLR_RR ?= y
diff --git a/core/arch/arm/plat-imx/imx.h b/core/arch/arm/plat-imx/imx.h
index 4aacc246..afcde28e 100644
--- a/core/arch/arm/plat-imx/imx.h
+++ b/core/arch/arm/plat-imx/imx.h
@@ -39,4 +39,7 @@ void imx_gpcv2_set_core1_pup_by_software(void);
#ifdef CFG_CSU
TEE_Result csu_init(void);
#endif
+#ifdef CFG_SCU
+void scu_init(void);
+#endif
#endif
diff --git a/core/arch/arm/plat-imx/imx6.c b/core/arch/arm/plat-imx/imx6.c
index 962c1828..e8885587 100644
--- a/core/arch/arm/plat-imx/imx6.c
+++ b/core/arch/arm/plat-imx/imx6.c
@@ -32,14 +32,9 @@ void plat_cpu_reset_late(void)
write32(BM_SRC_SCR_CPU_ENABLE_ALL, SRC_BASE + SRC_SCR);
#endif
- /* SCU config */
- write32(SCU_INV_CTRL_INIT, SCU_BASE + SCU_INV_SEC);
- write32(SCU_SAC_CTRL_INIT, SCU_BASE + SCU_SAC);
- write32(SCU_NSAC_CTRL_INIT, SCU_BASE + SCU_NSAC);
-
- /* SCU enable */
- write32(read32(SCU_BASE + SCU_CTRL) | 0x1,
- SCU_BASE + SCU_CTRL);
+#ifdef CFG_SCU
+ scu_init();
+#endif
#ifdef CFG_CSU
/* configure imx6 CSU */
diff --git a/core/arch/arm/plat-imx/imx_scu.c b/core/arch/arm/plat-imx/imx_scu.c
new file mode 100644
index 00000000..364dda80
--- /dev/null
+++ b/core/arch/arm/plat-imx/imx_scu.c
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: BSD-2-Clause
+/*
+ * Copyright 2017-2018 NXP
+ *
+ */
+
+#include <io.h>
+#include <mm/core_memprot.h>
+#include <kernel/tz_ssvce_pl310.h>
+
+#include <imx.h>
+
+void scu_init(void)
+{
+ vaddr_t scu_base = core_mmu_get_va(SCU_BASE, MEM_AREA_IO_SEC);
+
+ /* SCU config */
+ write32(SCU_INV_CTRL_INIT, scu_base + SCU_INV_SEC);
+ write32(SCU_SAC_CTRL_INIT, scu_base + SCU_SAC);
+ write32(SCU_NSAC_CTRL_INIT, scu_base + SCU_NSAC);
+
+ /* SCU enable */
+ write32(read32(scu_base + SCU_CTRL) | 0x1, scu_base + SCU_CTRL);
+}
+
diff --git a/core/arch/arm/plat-imx/sub.mk b/core/arch/arm/plat-imx/sub.mk
index 41b64563..3094644a 100644
--- a/core/arch/arm/plat-imx/sub.mk
+++ b/core/arch/arm/plat-imx/sub.mk
@@ -25,4 +25,4 @@ srcs-$(CFG_MX7) += imx7.c a7_plat_init.S
subdirs-$(CFG_PSCI_ARM32) += pm
srcs-$(CFG_CSU) += imx_csu.c
-
+srcs-$(CFG_SCU) += imx_scu.c