mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-03-13 21:36:57 +00:00
arm: timer: get frequency for arch timer armv7 in cp15 cntfrq
Manage dynamic value for armv7 arch clock timer, when CONFIG_SYS_HZ_CLOCK is not defined. Get frequency from CP15 cntfrq information, initialized for example by first boot stage, clock driver or by BootRom. Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
This commit is contained in:
parent
f3d8f7dd73
commit
46fc679ede
1 changed files with 15 additions and 1 deletions
|
@ -12,12 +12,26 @@
|
|||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
#ifndef CONFIG_SYS_HZ_CLOCK
|
||||
static inline u32 read_cntfrq(void)
|
||||
{
|
||||
u32 frq;
|
||||
|
||||
asm volatile("mrc p15, 0, %0, c14, c0, 0" : "=r" (frq));
|
||||
return frq;
|
||||
}
|
||||
#endif
|
||||
|
||||
int timer_init(void)
|
||||
{
|
||||
gd->arch.tbl = 0;
|
||||
gd->arch.tbu = 0;
|
||||
|
||||
#ifdef CONFIG_SYS_HZ_CLOCK
|
||||
gd->arch.timer_rate_hz = CONFIG_SYS_HZ_CLOCK;
|
||||
#else
|
||||
gd->arch.timer_rate_hz = read_cntfrq();
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -36,7 +50,7 @@ unsigned long long get_ticks(void)
|
|||
|
||||
ulong timer_get_boot_us(void)
|
||||
{
|
||||
return lldiv(get_ticks(), CONFIG_SYS_HZ_CLOCK / 1000000);
|
||||
return lldiv(get_ticks(), gd->arch.timer_rate_hz / 1000000);
|
||||
}
|
||||
|
||||
ulong get_tbclk(void)
|
||||
|
|
Loading…
Add table
Reference in a new issue