mirror of
https://github.com/smaeul/u-boot.git
synced 2025-10-14 12:56:00 +01:00
arm: set cntfrq_el0 if CONFIG_COUNTER_FREQUENCY is valid
Since COUNTER_FREQUENCY is obselete, so set cntfrq_el0 if CONFIG_COUNTER_FREQUENCY is valid Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Philipp Tomsich <philipp.tomsich@vrull.eu>
This commit is contained in:
parent
c5b9bf5518
commit
151a030063
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
.align 5
|
.align 5
|
||||||
|
|
||||||
#define ONE_MS (COUNTER_FREQUENCY / 1000)
|
#define ONE_MS (CONFIG_COUNTER_FREQUENCY / 1000)
|
||||||
#define RESET_WAIT (30 * ONE_MS)
|
#define RESET_WAIT (30 * ONE_MS)
|
||||||
|
|
||||||
.globl psci_version
|
.globl psci_version
|
||||||
|
@ -65,7 +65,7 @@ int timer_init(void)
|
|||||||
/* Enable System Counter */
|
/* Enable System Counter */
|
||||||
writel(SYS_COUNTER_CTRL_ENABLE, &sctr->cntcr);
|
writel(SYS_COUNTER_CTRL_ENABLE, &sctr->cntcr);
|
||||||
|
|
||||||
freq = COUNTER_FREQUENCY;
|
freq = CONFIG_COUNTER_FREQUENCY;
|
||||||
asm("mcr p15, 0, %0, c14, c0, 0" : : "r" (freq));
|
asm("mcr p15, 0, %0, c14, c0, 0" : : "r" (freq));
|
||||||
|
|
||||||
/* Set PL1 Physical Timer Ctrl */
|
/* Set PL1 Physical Timer Ctrl */
|
||||||
|
@ -189,11 +189,11 @@ ENTRY(_nonsec_init)
|
|||||||
* we do this here instead.
|
* we do this here instead.
|
||||||
* But first check if we have the generic timer.
|
* 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
|
mrc p15, 0, r0, c0, c1, 1 @ read ID_PFR1
|
||||||
and r0, r0, #CPUID_ARM_GENTIMER_MASK @ mask arch timer bits
|
and r0, r0, #CPUID_ARM_GENTIMER_MASK @ mask arch timer bits
|
||||||
cmp r0, #(1 << CPUID_ARM_GENTIMER_SHIFT)
|
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
|
mcreq p15, 0, r1, c14, c0, 0 @ write CNTFRQ
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ static u32 __secure cp15_read_cntp_ctl(void)
|
|||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ONE_MS (COUNTER_FREQUENCY / 1000)
|
#define ONE_MS (CONFIG_COUNTER_FREQUENCY / 1000)
|
||||||
|
|
||||||
static void __secure __mdelay(u32 ms)
|
static void __secure __mdelay(u32 ms)
|
||||||
{
|
{
|
||||||
|
@ -138,9 +138,9 @@ pie_fixup_done:
|
|||||||
0:
|
0:
|
||||||
msr daifclr, #0x4 /* Unmask SError interrupts */
|
msr daifclr, #0x4 /* Unmask SError interrupts */
|
||||||
|
|
||||||
#ifdef COUNTER_FREQUENCY
|
#if CONFIG_COUNTER_FREQUENCY
|
||||||
branch_if_not_highest_el x0, 4f
|
branch_if_not_highest_el x0, 4f
|
||||||
ldr x0, =COUNTER_FREQUENCY
|
ldr x0, =CONFIG_COUNTER_FREQUENCY
|
||||||
msr cntfrq_el0, x0 /* Initialize CNTFRQ */
|
msr cntfrq_el0, x0 /* Initialize CNTFRQ */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
void rockchip_stimer_init(void)
|
void rockchip_stimer_init(void)
|
||||||
{
|
{
|
||||||
asm volatile("mcr p15, 0, %0, c14, c0, 0"
|
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(0, CONFIG_ROCKCHIP_STIMER_BASE + TIMER_CONTROL_REG);
|
||||||
writel(0xffffffff, CONFIG_ROCKCHIP_STIMER_BASE);
|
writel(0xffffffff, CONFIG_ROCKCHIP_STIMER_BASE);
|
||||||
|
@ -88,7 +88,7 @@ __weak void rockchip_stimer_init(void)
|
|||||||
return;
|
return;
|
||||||
#ifndef CONFIG_ARM64
|
#ifndef CONFIG_ARM64
|
||||||
asm volatile("mcr p15, 0, %0, c14, c0, 0"
|
asm volatile("mcr p15, 0, %0, c14, c0, 0"
|
||||||
: : "r"(COUNTER_FREQUENCY));
|
: : "r"(CONFIG_COUNTER_FREQUENCY));
|
||||||
#endif
|
#endif
|
||||||
writel(0, CONFIG_ROCKCHIP_STIMER_BASE + TIMER_CONTROL_REG);
|
writel(0, CONFIG_ROCKCHIP_STIMER_BASE + TIMER_CONTROL_REG);
|
||||||
writel(0xffffffff, CONFIG_ROCKCHIP_STIMER_BASE);
|
writel(0xffffffff, CONFIG_ROCKCHIP_STIMER_BASE);
|
||||||
|
@ -39,7 +39,7 @@ __weak void rockchip_stimer_init(void)
|
|||||||
|
|
||||||
#ifndef CONFIG_ARM64
|
#ifndef CONFIG_ARM64
|
||||||
asm volatile("mcr p15, 0, %0, c14, c0, 0"
|
asm volatile("mcr p15, 0, %0, c14, c0, 0"
|
||||||
: : "r"(COUNTER_FREQUENCY));
|
: : "r"(CONFIG_COUNTER_FREQUENCY));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
writel(0, CONFIG_ROCKCHIP_STIMER_BASE + TIMER_CONTROL_REG);
|
writel(0, CONFIG_ROCKCHIP_STIMER_BASE + TIMER_CONTROL_REG);
|
||||||
|
@ -202,14 +202,14 @@ int board_init(void)
|
|||||||
* we avoid the risk of writing to it.
|
* we avoid the risk of writing to it.
|
||||||
*/
|
*/
|
||||||
asm volatile("mrc p15, 0, %0, c14, c0, 0" : "=r"(freq));
|
asm volatile("mrc p15, 0, %0, c14, c0, 0" : "=r"(freq));
|
||||||
if (freq != COUNTER_FREQUENCY) {
|
if (freq != CONFIG_COUNTER_FREQUENCY) {
|
||||||
debug("arch timer frequency is %d Hz, should be %d, fixing ...\n",
|
debug("arch timer frequency is %d Hz, should be %d, fixing ...\n",
|
||||||
freq, COUNTER_FREQUENCY);
|
freq, CONFIG_COUNTER_FREQUENCY);
|
||||||
#ifdef CONFIG_NON_SECURE
|
#ifdef CONFIG_NON_SECURE
|
||||||
printf("arch timer frequency is wrong, but cannot adjust it\n");
|
printf("arch timer frequency is wrong, but cannot adjust it\n");
|
||||||
#else
|
#else
|
||||||
asm volatile("mcr p15, 0, %0, c14, c0, 0"
|
asm volatile("mcr p15, 0, %0, c14, c0, 0"
|
||||||
: : "r"(COUNTER_FREQUENCY));
|
: : "r"(CONFIG_COUNTER_FREQUENCY));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user