summaryrefslogtreecommitdiff
path: root/arch/arm/mach-imx
diff options
context:
space:
mode:
authorJian Li <jian.li@nxp.com>2021-09-09 16:01:21 +0800
committerYe Li <ye.li@nxp.com>2022-07-06 22:35:53 +0800
commit0daf23a3d45c6da3f5433389dd0a0b622fad19c3 (patch)
tree8ebdcd19c83fbd2569e3f8f8df10b896e288f0b2 /arch/arm/mach-imx
parent02bdd75ae0591dce20187db8b0eedc56a804a131 (diff)
LFU-330-8 arm: imx9: Add function to initialize timer
Add timer_init to update ARM arch timer with correct frequency from system counter and enable system counter. Signed-off-by: Jian Li <jian.li@nxp.com>
Diffstat (limited to 'arch/arm/mach-imx')
-rw-r--r--arch/arm/mach-imx/imx9/soc.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/imx9/soc.c b/arch/arm/mach-imx/imx9/soc.c
index f4abe8bcc70..eeb8dc15e91 100644
--- a/arch/arm/mach-imx/imx9/soc.c
+++ b/arch/arm/mach-imx/imx9/soc.c
@@ -120,3 +120,21 @@ int arch_cpu_init(void)
return 0;
}
+int timer_init(void)
+{
+#ifdef CONFIG_SPL_BUILD
+ struct sctr_regs *sctr = (struct sctr_regs *)SYSCNT_CTRL_BASE_ADDR;
+ unsigned long freq = readl(&sctr->cntfid0);
+
+ /* Update with accurate clock frequency */
+ asm volatile("msr cntfrq_el0, %0" : : "r" (freq) : "memory");
+
+ clrsetbits_le32(&sctr->cntcr, SC_CNTCR_FREQ0 | SC_CNTCR_FREQ1,
+ SC_CNTCR_FREQ0 | SC_CNTCR_ENABLE | SC_CNTCR_HDBG);
+#endif
+
+ gd->arch.tbl = 0;
+ gd->arch.tbu = 0;
+
+ return 0;
+}