diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/Kconfig | 17 | ||||
-rw-r--r-- | arch/arm/cpu/armv7/ls102xa/psci.S | 2 | ||||
-rw-r--r-- | arch/arm/cpu/armv7/ls102xa/timer.c | 2 | ||||
-rw-r--r-- | arch/arm/cpu/armv7/nonsec_virt.S | 4 | ||||
-rw-r--r-- | arch/arm/cpu/armv7/sunxi/psci.c | 2 | ||||
-rw-r--r-- | arch/arm/cpu/armv8/fsl-layerscape/spintable.S | 2 | ||||
-rw-r--r-- | arch/arm/cpu/armv8/start.S | 4 | ||||
-rw-r--r-- | arch/arm/mach-rockchip/rk3036-board-spl.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-rockchip/spl.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-rockchip/tpl.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-versal/Kconfig | 6 |
11 files changed, 28 insertions, 17 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 9470122b69..13be6b6195 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -20,6 +20,23 @@ config ARM64_CRC32 not be present on all ARMv8.0, but is always present on ARMv8.1 and newer. +config COUNTER_FREQUENCY + int "Timer clock frequency" + depends on ARM64 || CPU_V7A + default 8000000 if IMX8 || MX7 || MX6UL || MX6ULL + default 24000000 if ARCH_SUNXI || ARCH_EXYNOS || ROCKCHIP_RK3128 || \ + ROCKCHIP_RK3288 || ROCKCHIP_RK322X || ROCKCHIP_RK3036 + default 25000000 if ARCH_LX2160A || ARCH_LX2162A || ARCH_LS1088A + default 100000000 if ARCH_ZYNQMP + default 0 + help + For platforms with ARMv8-A and ARMv7-A which features a system + counter, those platforms needs software to program the counter + frequency. Setup time clock frequency for certain platform. + 0 means no need to configure the system counter frequency. + For platforms needs the frequency set in U-Boot with a + pre-defined value, should have the macro defined as a non-zero value. + config POSITION_INDEPENDENT bool "Generate position-independent pre-relocation code" depends on ARM64 || CPU_V7A diff --git a/arch/arm/cpu/armv7/ls102xa/psci.S b/arch/arm/cpu/armv7/ls102xa/psci.S index 531cfb033b..3956178369 100644 --- a/arch/arm/cpu/armv7/ls102xa/psci.S +++ b/arch/arm/cpu/armv7/ls102xa/psci.S @@ -36,7 +36,7 @@ .align 5 -#define ONE_MS (COUNTER_FREQUENCY / 1000) +#define ONE_MS (CONFIG_COUNTER_FREQUENCY / 1000) #define RESET_WAIT (30 * ONE_MS) .globl psci_version diff --git a/arch/arm/cpu/armv7/ls102xa/timer.c b/arch/arm/cpu/armv7/ls102xa/timer.c index d79bf105f1..c6126b10c3 100644 --- a/arch/arm/cpu/armv7/ls102xa/timer.c +++ b/arch/arm/cpu/armv7/ls102xa/timer.c @@ -65,7 +65,7 @@ int timer_init(void) /* Enable System Counter */ writel(SYS_COUNTER_CTRL_ENABLE, &sctr->cntcr); - freq = COUNTER_FREQUENCY; + freq = CONFIG_COUNTER_FREQUENCY; asm("mcr p15, 0, %0, c14, c0, 0" : : "r" (freq)); /* Set PL1 Physical Timer Ctrl */ diff --git a/arch/arm/cpu/armv7/nonsec_virt.S b/arch/arm/cpu/armv7/nonsec_virt.S index 1773fae205..39aeeb423f 100644 --- a/arch/arm/cpu/armv7/nonsec_virt.S +++ b/arch/arm/cpu/armv7/nonsec_virt.S @@ -189,11 +189,11 @@ ENTRY(_nonsec_init) * we do this here instead. * But first check if we have the generic timer. */ -#ifdef COUNTER_FREQUENCY +#if CONFIG_COUNTER_FREQUENCY mrc p15, 0, r0, c0, c1, 1 @ read ID_PFR1 and r0, r0, #CPUID_ARM_GENTIMER_MASK @ mask arch timer bits cmp r0, #(1 << CPUID_ARM_GENTIMER_SHIFT) - ldreq r1, =COUNTER_FREQUENCY + ldreq r1, =CONFIG_COUNTER_FREQUENCY mcreq p15, 0, r1, c14, c0, 0 @ write CNTFRQ #endif diff --git a/arch/arm/cpu/armv7/sunxi/psci.c b/arch/arm/cpu/armv7/sunxi/psci.c index 1ac50f558a..d1bd6b9be4 100644 --- a/arch/arm/cpu/armv7/sunxi/psci.c +++ b/arch/arm/cpu/armv7/sunxi/psci.c @@ -57,7 +57,7 @@ static u32 __secure cp15_read_cntp_ctl(void) return val; } -#define ONE_MS (COUNTER_FREQUENCY / 1000) +#define ONE_MS (CONFIG_COUNTER_FREQUENCY / 1000) static void __secure __mdelay(u32 ms) { diff --git a/arch/arm/cpu/armv8/fsl-layerscape/spintable.S b/arch/arm/cpu/armv8/fsl-layerscape/spintable.S index d6bd188459..1eb0c2d4a7 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/spintable.S +++ b/arch/arm/cpu/armv8/fsl-layerscape/spintable.S @@ -113,6 +113,6 @@ _dead_loop: .align 3 .global __real_cntfrq __real_cntfrq: - .quad COUNTER_FREQUENCY + .quad CONFIG_COUNTER_FREQUENCY /* Secondary Boot Code ends here */ __secondary_boot_code_end: diff --git a/arch/arm/cpu/armv8/start.S b/arch/arm/cpu/armv8/start.S index 6a6a4f8650..d328e8c08a 100644 --- a/arch/arm/cpu/armv8/start.S +++ b/arch/arm/cpu/armv8/start.S @@ -138,9 +138,9 @@ pie_fixup_done: 0: msr daifclr, #0x4 /* Unmask SError interrupts */ -#ifdef COUNTER_FREQUENCY +#if CONFIG_COUNTER_FREQUENCY branch_if_not_highest_el x0, 4f - ldr x0, =COUNTER_FREQUENCY + ldr x0, =CONFIG_COUNTER_FREQUENCY msr cntfrq_el0, x0 /* Initialize CNTFRQ */ #endif diff --git a/arch/arm/mach-rockchip/rk3036-board-spl.c b/arch/arm/mach-rockchip/rk3036-board-spl.c index 6eb89e15b8..73f6d241a1 100644 --- a/arch/arm/mach-rockchip/rk3036-board-spl.c +++ b/arch/arm/mach-rockchip/rk3036-board-spl.c @@ -20,7 +20,7 @@ void rockchip_stimer_init(void) { asm volatile("mcr p15, 0, %0, c14, c0, 0" - : : "r"(COUNTER_FREQUENCY)); + : : "r"(CONFIG_COUNTER_FREQUENCY)); writel(0, CONFIG_ROCKCHIP_STIMER_BASE + TIMER_CONTROL_REG); writel(0xffffffff, CONFIG_ROCKCHIP_STIMER_BASE); diff --git a/arch/arm/mach-rockchip/spl.c b/arch/arm/mach-rockchip/spl.c index eda2248029..30be640425 100644 --- a/arch/arm/mach-rockchip/spl.c +++ b/arch/arm/mach-rockchip/spl.c @@ -88,7 +88,7 @@ __weak void rockchip_stimer_init(void) return; #ifndef CONFIG_ARM64 asm volatile("mcr p15, 0, %0, c14, c0, 0" - : : "r"(COUNTER_FREQUENCY)); + : : "r"(CONFIG_COUNTER_FREQUENCY)); #endif writel(0, CONFIG_ROCKCHIP_STIMER_BASE + TIMER_CONTROL_REG); writel(0xffffffff, CONFIG_ROCKCHIP_STIMER_BASE); diff --git a/arch/arm/mach-rockchip/tpl.c b/arch/arm/mach-rockchip/tpl.c index 8126587060..ed46a9ad28 100644 --- a/arch/arm/mach-rockchip/tpl.c +++ b/arch/arm/mach-rockchip/tpl.c @@ -39,7 +39,7 @@ __weak void rockchip_stimer_init(void) #ifndef CONFIG_ARM64 asm volatile("mcr p15, 0, %0, c14, c0, 0" - : : "r"(COUNTER_FREQUENCY)); + : : "r"(CONFIG_COUNTER_FREQUENCY)); #endif writel(0, CONFIG_ROCKCHIP_STIMER_BASE + TIMER_CONTROL_REG); diff --git a/arch/arm/mach-versal/Kconfig b/arch/arm/mach-versal/Kconfig index 0c6ad345ff..645f06add4 100644 --- a/arch/arm/mach-versal/Kconfig +++ b/arch/arm/mach-versal/Kconfig @@ -24,12 +24,6 @@ config SYS_CONFIG_NAME config SYS_MALLOC_LEN default 0x2000000 -config COUNTER_FREQUENCY - int "Timer clock frequency" - default 0 - help - Setup time clock frequency for certain platform - config ZYNQ_SDHCI_MAX_FREQ default 200000000 |