diff options
author | Jian Li <jian.li@nxp.com> | 2022-07-26 16:40:46 +0800 |
---|---|---|
committer | Stefano Babic <sbabic@denx.de> | 2022-07-26 11:29:00 +0200 |
commit | 53cf550d23e3be5011a429407ddc35e92e3650d6 (patch) | |
tree | ba322e2fc24c01d0e2913b9a834ab50e8fe5a724 /arch/arm/mach-imx/imx9/soc.c | |
parent | 65c56bcaec7e17175d3a5f08f9da0c75b27a1732 (diff) |
imx: 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>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
Diffstat (limited to 'arch/arm/mach-imx/imx9/soc.c')
-rw-r--r-- | arch/arm/mach-imx/imx9/soc.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/imx9/soc.c b/arch/arm/mach-imx/imx9/soc.c index d4a97729c6..4b8f1ca30d 100644 --- a/arch/arm/mach-imx/imx9/soc.c +++ b/arch/arm/mach-imx/imx9/soc.c @@ -128,3 +128,22 @@ 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; +} |