diff options
author | Olof Johansson <olof@lixom.net> | 2014-12-04 23:33:16 -0800 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2014-12-04 23:33:16 -0800 |
commit | fb3268b0081e4a9a8baa369b8e882874dcd5f955 (patch) | |
tree | fc576514c1a4e2c520986aaf010c4b09c1d23f15 /arch | |
parent | 83b63c699b53050a00a3ffb6c43663c4647dac30 (diff) | |
parent | 65b5732d241b8b39e07653794eefffd0d8028cbb (diff) |
Merge branch 'clocksource/physical-timers' into next/dt
These are a pre-req to get rk3288 SMP to work with some firmwares, so merge
it in here as well as in next/drivers.
* clocksource/physical-timers:
clocksource: arch_timer: Allow the device tree to specify uninitialized timer registers
clocksource: arch_timer: Fix code to use physical timers when requested
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/include/asm/arch_timer.h | 9 | ||||
-rw-r--r-- | arch/arm64/include/asm/arch_timer.h | 9 |
2 files changed, 18 insertions, 0 deletions
diff --git a/arch/arm/include/asm/arch_timer.h b/arch/arm/include/asm/arch_timer.h index 92793ba69c40..d4ebf5679f1f 100644 --- a/arch/arm/include/asm/arch_timer.h +++ b/arch/arm/include/asm/arch_timer.h @@ -78,6 +78,15 @@ static inline u32 arch_timer_get_cntfrq(void) return val; } +static inline u64 arch_counter_get_cntpct(void) +{ + u64 cval; + + isb(); + asm volatile("mrrc p15, 0, %Q0, %R0, c14" : "=r" (cval)); + return cval; +} + static inline u64 arch_counter_get_cntvct(void) { u64 cval; diff --git a/arch/arm64/include/asm/arch_timer.h b/arch/arm64/include/asm/arch_timer.h index f19097134b02..b1fa4e614718 100644 --- a/arch/arm64/include/asm/arch_timer.h +++ b/arch/arm64/include/asm/arch_timer.h @@ -104,6 +104,15 @@ static inline void arch_timer_set_cntkctl(u32 cntkctl) asm volatile("msr cntkctl_el1, %0" : : "r" (cntkctl)); } +static inline u64 arch_counter_get_cntpct(void) +{ + /* + * AArch64 kernel and user space mandate the use of CNTVCT. + */ + BUG(); + return 0; +} + static inline u64 arch_counter_get_cntvct(void) { u64 cval; |