aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorFranck LENORMAND <franck.lenormand@nxp.com>2018-04-17 18:33:59 +0200
committerSilvano di Ninno <silvano.dininno@nxp.com>2018-08-02 15:37:23 +0200
commitb091867c9b658943e6ef74dd481706c9616987e7 (patch)
treeb9b042cb96bcc0ee5ded759e86ea71fb5fe16aa8 /core
parentf5e6ec7b02c44b3a2c4da02b8b9acf632f28eb5b (diff)
TEE-307 :Enable CAAM clock for imx7ulp
Signed-off-by: Franck LENORMAND <franck.lenormand@nxp.com>
Diffstat (limited to 'core')
-rw-r--r--core/arch/arm/plat-imx/registers/imx7ulp-crm_regs.h17
-rw-r--r--core/arch/arm/plat-imx/registers/imx7ulp-regs.h2
-rw-r--r--core/drivers/caam/ctrl.c9
3 files changed, 28 insertions, 0 deletions
diff --git a/core/arch/arm/plat-imx/registers/imx7ulp-crm_regs.h b/core/arch/arm/plat-imx/registers/imx7ulp-crm_regs.h
new file mode 100644
index 00000000..765fa629
--- /dev/null
+++ b/core/arch/arm/plat-imx/registers/imx7ulp-crm_regs.h
@@ -0,0 +1,17 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+/*
+ * Copyright 2017 NXP
+ *
+ */
+
+#ifndef __MX7ULP_CCM_REGS_H__
+#define __MX7ULP_CCM_REGS_H__
+
+#define PCC_CGC_BIT_SHIFT 30
+
+#define PCC_ENABLE_CLOCK (1 << PCC_CGC_BIT_SHIFT)
+#define PCC_DISABLE_CLOCK (0 << PCC_CGC_BIT_SHIFT)
+
+#define PCC_CAAM 0x90
+
+#endif
diff --git a/core/arch/arm/plat-imx/registers/imx7ulp-regs.h b/core/arch/arm/plat-imx/registers/imx7ulp-regs.h
index b4ab6a4a..339b81a0 100644
--- a/core/arch/arm/plat-imx/registers/imx7ulp-regs.h
+++ b/core/arch/arm/plat-imx/registers/imx7ulp-regs.h
@@ -7,6 +7,8 @@
#ifndef __IMX7ULP_REGS_H__
#define __IMX7ULP_REGS_H__
+#include <registers/imx7ulp-crm_regs.h>
+
#define GIC_BASE 0x40020000
#define GIC_SIZE 0x8000
#define GICC_OFFSET 0x2000
diff --git a/core/drivers/caam/ctrl.c b/core/drivers/caam/ctrl.c
index 91555a92..e783d96b 100644
--- a/core/drivers/caam/ctrl.c
+++ b/core/drivers/caam/ctrl.c
@@ -35,7 +35,10 @@ static void caam_clock_enable(unsigned char enable __maybe_unused)
{
#if !defined(CFG_MX7ULP)
vaddr_t ccm_base = (vaddr_t)phys_to_virt(CCM_BASE, MEM_AREA_IO_SEC);
+#else
+ vaddr_t pcc2_base = (vaddr_t)phys_to_virt(PCC2_BASE, MEM_AREA_IO_SEC);
#endif
+
#if defined(CFG_MX6) || defined(CFG_MX6UL)
uint32_t reg;
uint32_t mask;
@@ -76,6 +79,12 @@ static void caam_clock_enable(unsigned char enable __maybe_unused)
write32(CCM_CCGRx_ALWAYS_ON(0),
ccm_base + CCM_CCGRx_CLR(CCM_CLOCK_DOMAIN_CAAM));
}
+#elif defined(CFG_MX7ULP)
+ if (enable) {
+ write32(PCC_ENABLE_CLOCK, pcc2_base + PCC_CAAM);
+ } else {
+ write32(PCC_DISABLE_CLOCK, pcc2_base + PCC_CAAM);
+ }
#endif
}