mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +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;
|
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)
|
int timer_init(void)
|
||||||
{
|
{
|
||||||
gd->arch.tbl = 0;
|
gd->arch.tbl = 0;
|
||||||
gd->arch.tbu = 0;
|
gd->arch.tbu = 0;
|
||||||
|
|
||||||
|
#ifdef CONFIG_SYS_HZ_CLOCK
|
||||||
gd->arch.timer_rate_hz = CONFIG_SYS_HZ_CLOCK;
|
gd->arch.timer_rate_hz = CONFIG_SYS_HZ_CLOCK;
|
||||||
|
#else
|
||||||
|
gd->arch.timer_rate_hz = read_cntfrq();
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +50,7 @@ unsigned long long get_ticks(void)
|
||||||
|
|
||||||
ulong timer_get_boot_us(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)
|
ulong get_tbclk(void)
|
||||||
|
|
Loading…
Reference in a new issue