aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/include
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2013-04-17 13:10:01 -0400
committerOlof Johansson <olof@lixom.net>2013-04-17 13:10:01 -0400
commitc3e0c873d0653e6e7628b5a8a9fcb3745444ca9e (patch)
treedd7448d5515c56604cd8e57f3d6399f5640d57a3 /arch/arm/include
parent228e3023eb0430b4b9ed0736f8f87c96a6cd9c7a (diff)
parent69a517b2471bcd1c5a175aad82647c1e2c24f08b (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.h13
-rw-r--r--arch/arm/include/asm/hardware/timer-sp.h16
-rw-r--r--arch/arm/include/asm/sched_clock.h2
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
13int arch_timer_of_register(void); 13int arch_timer_arch_init(void);
14int 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
114static inline int arch_timer_of_register(void)
115{
116 return -ENXIO;
117}
118
119static 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 @@
1struct clk;
2
1void __sp804_clocksource_and_sched_clock_init(void __iomem *, 3void __sp804_clocksource_and_sched_clock_init(void __iomem *,
2 const char *, int); 4 const char *, struct clk *, int);
5void __sp804_clockevents_init(void __iomem *, unsigned int,
6 struct clk *, const char *);
3 7
4static inline void sp804_clocksource_init(void __iomem *base, const char *name) 8static 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
9static inline void sp804_clocksource_and_sched_clock_init(void __iomem *base, 13static 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
15void sp804_clockevents_init(void __iomem *, unsigned int, const char *); 19static 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 @@
11extern void sched_clock_postinit(void); 11extern void sched_clock_postinit(void);
12extern void setup_sched_clock(u32 (*read)(void), int bits, unsigned long rate); 12extern void setup_sched_clock(u32 (*read)(void), int bits, unsigned long rate);
13 13
14extern unsigned long long (*sched_clock_func)(void);
15
14#endif 16#endif