aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/include/asm/arch_timer.h11
-rw-r--r--arch/arm64/include/asm/arch_timer.h14
-rw-r--r--drivers/clocksource/arm_arch_timer.c15
3 files changed, 15 insertions, 25 deletions
diff --git a/arch/arm/include/asm/arch_timer.h b/arch/arm/include/asm/arch_timer.h
index b7ae44464231..92793ba69c40 100644
--- a/arch/arm/include/asm/arch_timer.h
+++ b/arch/arm/include/asm/arch_timer.h
@@ -99,17 +99,6 @@ static inline void arch_timer_set_cntkctl(u32 cntkctl)
99 asm volatile("mcr p15, 0, %0, c14, c1, 0" : : "r" (cntkctl)); 99 asm volatile("mcr p15, 0, %0, c14, c1, 0" : : "r" (cntkctl));
100} 100}
101 101
102static inline void arch_timer_evtstrm_enable(int divider)
103{
104 u32 cntkctl = arch_timer_get_cntkctl();
105 cntkctl &= ~ARCH_TIMER_EVT_TRIGGER_MASK;
106 /* Set the divider and enable virtual event stream */
107 cntkctl |= (divider << ARCH_TIMER_EVT_TRIGGER_SHIFT)
108 | ARCH_TIMER_VIRT_EVT_EN;
109 arch_timer_set_cntkctl(cntkctl);
110 elf_hwcap |= HWCAP_EVTSTRM;
111}
112
113#endif 102#endif
114 103
115#endif 104#endif
diff --git a/arch/arm64/include/asm/arch_timer.h b/arch/arm64/include/asm/arch_timer.h
index 49e94c677e7a..f19097134b02 100644
--- a/arch/arm64/include/asm/arch_timer.h
+++ b/arch/arm64/include/asm/arch_timer.h
@@ -104,20 +104,6 @@ static inline void arch_timer_set_cntkctl(u32 cntkctl)
104 asm volatile("msr cntkctl_el1, %0" : : "r" (cntkctl)); 104 asm volatile("msr cntkctl_el1, %0" : : "r" (cntkctl));
105} 105}
106 106
107static inline void arch_timer_evtstrm_enable(int divider)
108{
109 u32 cntkctl = arch_timer_get_cntkctl();
110 cntkctl &= ~ARCH_TIMER_EVT_TRIGGER_MASK;
111 /* Set the divider and enable virtual event stream */
112 cntkctl |= (divider << ARCH_TIMER_EVT_TRIGGER_SHIFT)
113 | ARCH_TIMER_VIRT_EVT_EN;
114 arch_timer_set_cntkctl(cntkctl);
115 elf_hwcap |= HWCAP_EVTSTRM;
116#ifdef CONFIG_COMPAT
117 compat_elf_hwcap |= COMPAT_HWCAP_EVTSTRM;
118#endif
119}
120
121static inline u64 arch_counter_get_cntvct(void) 107static inline u64 arch_counter_get_cntvct(void)
122{ 108{
123 u64 cval; 109 u64 cval;
diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
index 42bd4455daca..2133f9d59d06 100644
--- a/drivers/clocksource/arm_arch_timer.c
+++ b/drivers/clocksource/arm_arch_timer.c
@@ -299,6 +299,21 @@ static void __arch_timer_setup(unsigned type,
299 clockevents_config_and_register(clk, arch_timer_rate, 0xf, 0x7fffffff); 299 clockevents_config_and_register(clk, arch_timer_rate, 0xf, 0x7fffffff);
300} 300}
301 301
302static void arch_timer_evtstrm_enable(int divider)
303{
304 u32 cntkctl = arch_timer_get_cntkctl();
305
306 cntkctl &= ~ARCH_TIMER_EVT_TRIGGER_MASK;
307 /* Set the divider and enable virtual event stream */
308 cntkctl |= (divider << ARCH_TIMER_EVT_TRIGGER_SHIFT)
309 | ARCH_TIMER_VIRT_EVT_EN;
310 arch_timer_set_cntkctl(cntkctl);
311 elf_hwcap |= HWCAP_EVTSTRM;
312#ifdef CONFIG_COMPAT
313 compat_elf_hwcap |= COMPAT_HWCAP_EVTSTRM;
314#endif
315}
316
302static void arch_timer_configure_evtstream(void) 317static void arch_timer_configure_evtstream(void)
303{ 318{
304 int evt_stream_div, pos; 319 int evt_stream_div, pos;