diff options
author | Rouven Czerwinski <r.czerwinski@pengutronix.de> | 2019-03-18 10:49:40 +0100 |
---|---|---|
committer | Joakim Bech <joakim.bech@linaro.org> | 2019-04-15 15:30:30 +0700 |
commit | 5981d0341c0e7118fe3f2fbd205acf7d275588e5 (patch) | |
tree | 1b261bf5271277312a5d4ebe7555444c7253a2fb | |
parent | e8e7f1c5d978df640d073de4271ad87bc50b6879 (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>
-rw-r--r-- | core/arch/arm/plat-imx/drivers/sub.mk | 1 | ||||
-rw-r--r-- | core/arch/arm/plat-imx/drivers/tzc380.c | 37 | ||||
-rw-r--r-- | core/arch/arm/plat-imx/imx.h | 6 | ||||
-rw-r--r-- | core/arch/arm/plat-imx/imx6.c | 2 | ||||
-rw-r--r-- | core/arch/arm/plat-imx/sub.mk | 2 |
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 |