diff options
Diffstat (limited to 'arch/arm/include')
-rw-r--r-- | arch/arm/include/asm/hardware/arm_timer.h | 5 | ||||
-rw-r--r-- | arch/arm/include/asm/localtimer.h | 37 | ||||
-rw-r--r-- | arch/arm/include/asm/smp_twd.h | 25 |
3 files changed, 33 insertions, 34 deletions
diff --git a/arch/arm/include/asm/hardware/arm_timer.h b/arch/arm/include/asm/hardware/arm_timer.h index c0f4e7bf22de..d6030ff599db 100644 --- a/arch/arm/include/asm/hardware/arm_timer.h +++ b/arch/arm/include/asm/hardware/arm_timer.h | |||
@@ -9,7 +9,12 @@ | |||
9 | * | 9 | * |
10 | * Integrator AP has 16-bit timers, Integrator CP, Versatile and Realview | 10 | * Integrator AP has 16-bit timers, Integrator CP, Versatile and Realview |
11 | * can have 16-bit or 32-bit selectable via a bit in the control register. | 11 | * can have 16-bit or 32-bit selectable via a bit in the control register. |
12 | * | ||
13 | * Every SP804 contains two identical timers. | ||
12 | */ | 14 | */ |
15 | #define TIMER_1_BASE 0x00 | ||
16 | #define TIMER_2_BASE 0x20 | ||
17 | |||
13 | #define TIMER_LOAD 0x00 /* ACVR rw */ | 18 | #define TIMER_LOAD 0x00 /* ACVR rw */ |
14 | #define TIMER_VALUE 0x04 /* ACVR ro */ | 19 | #define TIMER_VALUE 0x04 /* ACVR ro */ |
15 | #define TIMER_CTRL 0x08 /* ACVR rw */ | 20 | #define TIMER_CTRL 0x08 /* ACVR rw */ |
diff --git a/arch/arm/include/asm/localtimer.h b/arch/arm/include/asm/localtimer.h index c6a18424888e..f77ffc1eb0c2 100644 --- a/arch/arm/include/asm/localtimer.h +++ b/arch/arm/include/asm/localtimer.h | |||
@@ -11,47 +11,24 @@ | |||
11 | #define __ASM_ARM_LOCALTIMER_H | 11 | #define __ASM_ARM_LOCALTIMER_H |
12 | 12 | ||
13 | #include <linux/errno.h> | 13 | #include <linux/errno.h> |
14 | #include <linux/interrupt.h> | ||
15 | 14 | ||
16 | struct clock_event_device; | 15 | struct clock_event_device; |
17 | 16 | ||
18 | /* | 17 | struct local_timer_ops { |
19 | * Setup a per-cpu timer, whether it be a local timer or dummy broadcast | 18 | int (*setup)(struct clock_event_device *); |
20 | */ | 19 | void (*stop)(struct clock_event_device *); |
21 | void percpu_timer_setup(void); | 20 | }; |
22 | 21 | ||
23 | #ifdef CONFIG_LOCAL_TIMERS | 22 | #ifdef CONFIG_LOCAL_TIMERS |
24 | |||
25 | #ifdef CONFIG_HAVE_ARM_TWD | ||
26 | |||
27 | #include "smp_twd.h" | ||
28 | |||
29 | #define local_timer_stop(c) twd_timer_stop((c)) | ||
30 | |||
31 | #else | ||
32 | |||
33 | /* | ||
34 | * Stop the local timer | ||
35 | */ | ||
36 | void local_timer_stop(struct clock_event_device *); | ||
37 | |||
38 | #endif | ||
39 | |||
40 | /* | 23 | /* |
41 | * Setup a local timer interrupt for a CPU. | 24 | * Register a local timer driver |
42 | */ | 25 | */ |
43 | int local_timer_setup(struct clock_event_device *); | 26 | int local_timer_register(struct local_timer_ops *); |
44 | |||
45 | #else | 27 | #else |
46 | 28 | static inline int local_timer_register(struct local_timer_ops *ops) | |
47 | static inline int local_timer_setup(struct clock_event_device *evt) | ||
48 | { | 29 | { |
49 | return -ENXIO; | 30 | return -ENXIO; |
50 | } | 31 | } |
51 | |||
52 | static inline void local_timer_stop(struct clock_event_device *evt) | ||
53 | { | ||
54 | } | ||
55 | #endif | 32 | #endif |
56 | 33 | ||
57 | #endif | 34 | #endif |
diff --git a/arch/arm/include/asm/smp_twd.h b/arch/arm/include/asm/smp_twd.h index ef9ffba97ad8..0f01f4677bd2 100644 --- a/arch/arm/include/asm/smp_twd.h +++ b/arch/arm/include/asm/smp_twd.h | |||
@@ -18,11 +18,28 @@ | |||
18 | #define TWD_TIMER_CONTROL_PERIODIC (1 << 1) | 18 | #define TWD_TIMER_CONTROL_PERIODIC (1 << 1) |
19 | #define TWD_TIMER_CONTROL_IT_ENABLE (1 << 2) | 19 | #define TWD_TIMER_CONTROL_IT_ENABLE (1 << 2) |
20 | 20 | ||
21 | struct clock_event_device; | 21 | #include <linux/ioport.h> |
22 | 22 | ||
23 | extern void __iomem *twd_base; | 23 | struct twd_local_timer { |
24 | struct resource res[2]; | ||
25 | }; | ||
24 | 26 | ||
25 | void twd_timer_setup(struct clock_event_device *); | 27 | #define DEFINE_TWD_LOCAL_TIMER(name,base,irq) \ |
26 | void twd_timer_stop(struct clock_event_device *); | 28 | struct twd_local_timer name __initdata = { \ |
29 | .res = { \ | ||
30 | DEFINE_RES_MEM(base, 0x10), \ | ||
31 | DEFINE_RES_IRQ(irq), \ | ||
32 | }, \ | ||
33 | }; | ||
34 | |||
35 | int twd_local_timer_register(struct twd_local_timer *); | ||
36 | |||
37 | #ifdef CONFIG_HAVE_ARM_TWD | ||
38 | void twd_local_timer_of_register(void); | ||
39 | #else | ||
40 | static inline void twd_local_timer_of_register(void) | ||
41 | { | ||
42 | } | ||
43 | #endif | ||
27 | 44 | ||
28 | #endif | 45 | #endif |