diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-10-09 06:35:05 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-10-09 06:35:05 -0400 |
commit | 47137c6ba1bcde30215795f9594cea770946456b (patch) | |
tree | 3a7a04e6ecffcb188b6708ccdc3f02b70f07d7c4 /arch | |
parent | afa3536be88b435a057cb727b48fd3d760a497d2 (diff) | |
parent | 867f667fb9c6734e06cc24e96fc7f06a7e772084 (diff) |
Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timer updates from Thomas Gleixner:
"Nothing really exciting this time:
- a few fixlets in the NOHZ code
- a new ARM SoC timer abomination. One should expect that we have
enough of them already, but they insist on inventing new ones.
- the usual bunch of ARM SoC timer updates. That feels like herding
cats"
* 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
clocksource: arm_arch_timer: Consolidate arch_timer_evtstrm_enable
clocksource: arm_arch_timer: Enable counter access for 32-bit ARM
clocksource: arm_arch_timer: Change clocksource name if CP15 unavailable
clocksource: sirf: Disable counter before re-setting it
clocksource: cadence_ttc: Add support for 32bit mode
clocksource: tcb_clksrc: Sanitize IRQ request
clocksource: arm_arch_timer: Discard unavailable timers correctly
clocksource: vf_pit_timer: Support shutdown mode
ARM: meson6: clocksource: Add Meson6 timer support
ARM: meson: documentation: Add timer documentation
clocksource: sh_tmu: Document r8a7779 binding
clocksource: sh_mtu2: Document r7s72100 binding
clocksource: sh_cmt: Document SoC specific bindings
timerfd: Remove an always true check
nohz: Avoid tick's double reprogramming in highres mode
nohz: Fix spurious periodic tick behaviour in low-res dynticks mode
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/include/asm/arch_timer.h | 25 | ||||
-rw-r--r-- | arch/arm64/include/asm/arch_timer.h | 31 |
2 files changed, 0 insertions, 56 deletions
diff --git a/arch/arm/include/asm/arch_timer.h b/arch/arm/include/asm/arch_timer.h index 0704e0cf5571..92793ba69c40 100644 --- a/arch/arm/include/asm/arch_timer.h +++ b/arch/arm/include/asm/arch_timer.h | |||
@@ -99,31 +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 | ||
102 | static inline void arch_counter_set_user_access(void) | ||
103 | { | ||
104 | u32 cntkctl = arch_timer_get_cntkctl(); | ||
105 | |||
106 | /* Disable user access to both physical/virtual counters/timers */ | ||
107 | /* Also disable virtual event stream */ | ||
108 | cntkctl &= ~(ARCH_TIMER_USR_PT_ACCESS_EN | ||
109 | | ARCH_TIMER_USR_VT_ACCESS_EN | ||
110 | | ARCH_TIMER_VIRT_EVT_EN | ||
111 | | ARCH_TIMER_USR_VCT_ACCESS_EN | ||
112 | | ARCH_TIMER_USR_PCT_ACCESS_EN); | ||
113 | arch_timer_set_cntkctl(cntkctl); | ||
114 | } | ||
115 | |||
116 | static inline void arch_timer_evtstrm_enable(int divider) | ||
117 | { | ||
118 | u32 cntkctl = arch_timer_get_cntkctl(); | ||
119 | cntkctl &= ~ARCH_TIMER_EVT_TRIGGER_MASK; | ||
120 | /* Set the divider and enable virtual event stream */ | ||
121 | cntkctl |= (divider << ARCH_TIMER_EVT_TRIGGER_SHIFT) | ||
122 | | ARCH_TIMER_VIRT_EVT_EN; | ||
123 | arch_timer_set_cntkctl(cntkctl); | ||
124 | elf_hwcap |= HWCAP_EVTSTRM; | ||
125 | } | ||
126 | |||
127 | #endif | 102 | #endif |
128 | 103 | ||
129 | #endif | 104 | #endif |
diff --git a/arch/arm64/include/asm/arch_timer.h b/arch/arm64/include/asm/arch_timer.h index 9400596a0f39..f19097134b02 100644 --- a/arch/arm64/include/asm/arch_timer.h +++ b/arch/arm64/include/asm/arch_timer.h | |||
@@ -104,37 +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 | ||
107 | static inline void arch_counter_set_user_access(void) | ||
108 | { | ||
109 | u32 cntkctl = arch_timer_get_cntkctl(); | ||
110 | |||
111 | /* Disable user access to the timers and the physical counter */ | ||
112 | /* Also disable virtual event stream */ | ||
113 | cntkctl &= ~(ARCH_TIMER_USR_PT_ACCESS_EN | ||
114 | | ARCH_TIMER_USR_VT_ACCESS_EN | ||
115 | | ARCH_TIMER_VIRT_EVT_EN | ||
116 | | ARCH_TIMER_USR_PCT_ACCESS_EN); | ||
117 | |||
118 | /* Enable user access to the virtual counter */ | ||
119 | cntkctl |= ARCH_TIMER_USR_VCT_ACCESS_EN; | ||
120 | |||
121 | arch_timer_set_cntkctl(cntkctl); | ||
122 | } | ||
123 | |||
124 | static inline void arch_timer_evtstrm_enable(int divider) | ||
125 | { | ||
126 | u32 cntkctl = arch_timer_get_cntkctl(); | ||
127 | cntkctl &= ~ARCH_TIMER_EVT_TRIGGER_MASK; | ||
128 | /* Set the divider and enable virtual event stream */ | ||
129 | cntkctl |= (divider << ARCH_TIMER_EVT_TRIGGER_SHIFT) | ||
130 | | ARCH_TIMER_VIRT_EVT_EN; | ||
131 | arch_timer_set_cntkctl(cntkctl); | ||
132 | elf_hwcap |= HWCAP_EVTSTRM; | ||
133 | #ifdef CONFIG_COMPAT | ||
134 | compat_elf_hwcap |= COMPAT_HWCAP_EVTSTRM; | ||
135 | #endif | ||
136 | } | ||
137 | |||
138 | static inline u64 arch_counter_get_cntvct(void) | 107 | static inline u64 arch_counter_get_cntvct(void) |
139 | { | 108 | { |
140 | u64 cval; | 109 | u64 cval; |