diff options
author | Olof Johansson <olof@lixom.net> | 2013-04-17 13:10:01 -0400 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2013-04-17 13:10:01 -0400 |
commit | c3e0c873d0653e6e7628b5a8a9fcb3745444ca9e (patch) | |
tree | dd7448d5515c56604cd8e57f3d6399f5640d57a3 /arch/arm/include | |
parent | 228e3023eb0430b4b9ed0736f8f87c96a6cd9c7a (diff) | |
parent | 69a517b2471bcd1c5a175aad82647c1e2c24f08b (diff) |
Merge tag 'clksrc-cleanup-for-3.10-part2' of git://sources.calxeda.com/kernel/linux into late/clksrc
This is the 2nd part of ARM timer clean-ups for 3.10. This series has
the following changes:
- Add sched_clock selection logic to select the highest frequency clock
- Use full 64-bit arch timer counter for sched_clock
- Convert arch timer, sp804 and integrator-cp timers to CLKSRC_OF and
adapt all users to use clocksource_of_init
* tag 'clksrc-cleanup-for-3.10-part2' of git://sources.calxeda.com/kernel/linux:
devtree: add binding documentation for sp804
ARM: integrator-cp: convert use CLKSRC_OF for timer init
ARM: versatile: use OF init for sp804 timer
ARM: versatile: add versatile dtbs to dtbs target
ARM: vexpress: remove extra timer-sp control register clearing
ARM: dts: vexpress: disable CA9 core tile sp804 timer
ARM: vexpress: remove sp804 OF init
ARM: highbank: use OF init for sp804 timer
ARM: timer-sp: convert to use CLKSRC_OF init
OF: add empty of_device_is_available for !OF
ARM: convert arm/arm64 arch timer to use CLKSRC_OF init
ARM: make machine_desc->init_time default to clocksource_of_init
ARM: arch_timer: use full 64-bit counter for sched_clock
ARM: make sched_clock just call a function pointer
ARM: sched_clock: allow changing to higher frequency counter
Signed-off-by: Olof Johansson <olof@lixom.net>
This has a nasty set of conflicts with the exynos MCT code, which was
moved in a separate branch, and then fixed up when merged in, but still
conflicts a bit here. It should have been sorted out by this merge though.
Diffstat (limited to 'arch/arm/include')
-rw-r--r-- | arch/arm/include/asm/arch_timer.h | 13 | ||||
-rw-r--r-- | arch/arm/include/asm/hardware/timer-sp.h | 16 | ||||
-rw-r--r-- | arch/arm/include/asm/sched_clock.h | 2 |
3 files changed, 15 insertions, 16 deletions
diff --git a/arch/arm/include/asm/arch_timer.h b/arch/arm/include/asm/arch_timer.h index 7ade91d8cc6f..7c1bfc0aea0c 100644 --- a/arch/arm/include/asm/arch_timer.h +++ b/arch/arm/include/asm/arch_timer.h | |||
@@ -10,8 +10,7 @@ | |||
10 | #include <clocksource/arm_arch_timer.h> | 10 | #include <clocksource/arm_arch_timer.h> |
11 | 11 | ||
12 | #ifdef CONFIG_ARM_ARCH_TIMER | 12 | #ifdef CONFIG_ARM_ARCH_TIMER |
13 | int arch_timer_of_register(void); | 13 | int arch_timer_arch_init(void); |
14 | int arch_timer_sched_clock_init(void); | ||
15 | 14 | ||
16 | /* | 15 | /* |
17 | * These register accessors are marked inline so the compiler can | 16 | * These register accessors are marked inline so the compiler can |
@@ -110,16 +109,6 @@ static inline void __cpuinit arch_counter_set_user_access(void) | |||
110 | 109 | ||
111 | asm volatile("mcr p15, 0, %0, c14, c1, 0" : : "r" (cntkctl)); | 110 | asm volatile("mcr p15, 0, %0, c14, c1, 0" : : "r" (cntkctl)); |
112 | } | 111 | } |
113 | #else | ||
114 | static inline int arch_timer_of_register(void) | ||
115 | { | ||
116 | return -ENXIO; | ||
117 | } | ||
118 | |||
119 | static inline int arch_timer_sched_clock_init(void) | ||
120 | { | ||
121 | return -ENXIO; | ||
122 | } | ||
123 | #endif | 112 | #endif |
124 | 113 | ||
125 | #endif | 114 | #endif |
diff --git a/arch/arm/include/asm/hardware/timer-sp.h b/arch/arm/include/asm/hardware/timer-sp.h index 2dd9d3f83f29..bb28af7c32de 100644 --- a/arch/arm/include/asm/hardware/timer-sp.h +++ b/arch/arm/include/asm/hardware/timer-sp.h | |||
@@ -1,15 +1,23 @@ | |||
1 | struct clk; | ||
2 | |||
1 | void __sp804_clocksource_and_sched_clock_init(void __iomem *, | 3 | void __sp804_clocksource_and_sched_clock_init(void __iomem *, |
2 | const char *, int); | 4 | const char *, struct clk *, int); |
5 | void __sp804_clockevents_init(void __iomem *, unsigned int, | ||
6 | struct clk *, const char *); | ||
3 | 7 | ||
4 | static inline void sp804_clocksource_init(void __iomem *base, const char *name) | 8 | static inline void sp804_clocksource_init(void __iomem *base, const char *name) |
5 | { | 9 | { |
6 | __sp804_clocksource_and_sched_clock_init(base, name, 0); | 10 | __sp804_clocksource_and_sched_clock_init(base, name, NULL, 0); |
7 | } | 11 | } |
8 | 12 | ||
9 | static inline void sp804_clocksource_and_sched_clock_init(void __iomem *base, | 13 | static inline void sp804_clocksource_and_sched_clock_init(void __iomem *base, |
10 | const char *name) | 14 | const char *name) |
11 | { | 15 | { |
12 | __sp804_clocksource_and_sched_clock_init(base, name, 1); | 16 | __sp804_clocksource_and_sched_clock_init(base, name, NULL, 1); |
13 | } | 17 | } |
14 | 18 | ||
15 | void sp804_clockevents_init(void __iomem *, unsigned int, const char *); | 19 | static inline void sp804_clockevents_init(void __iomem *base, unsigned int irq, const char *name) |
20 | { | ||
21 | __sp804_clockevents_init(base, irq, NULL, name); | ||
22 | |||
23 | } | ||
diff --git a/arch/arm/include/asm/sched_clock.h b/arch/arm/include/asm/sched_clock.h index e3f757263438..3d520ddca61b 100644 --- a/arch/arm/include/asm/sched_clock.h +++ b/arch/arm/include/asm/sched_clock.h | |||
@@ -11,4 +11,6 @@ | |||
11 | extern void sched_clock_postinit(void); | 11 | extern void sched_clock_postinit(void); |
12 | extern void setup_sched_clock(u32 (*read)(void), int bits, unsigned long rate); | 12 | extern void setup_sched_clock(u32 (*read)(void), int bits, unsigned long rate); |
13 | 13 | ||
14 | extern unsigned long long (*sched_clock_func)(void); | ||
15 | |||
14 | #endif | 16 | #endif |