Merge branch 'linus' into core/softlockup
[linux-2.6] / arch / sh / include / asm / timer.h
1 #ifndef __ASM_SH_TIMER_H
2 #define __ASM_SH_TIMER_H
3
4 #include <linux/sysdev.h>
5 #include <linux/clocksource.h>
6 #include <cpu/timer.h>
7
8 struct sys_timer_ops {
9         int (*init)(void);
10         int (*start)(void);
11         int (*stop)(void);
12 #ifndef CONFIG_GENERIC_TIME
13         unsigned long (*get_offset)(void);
14 #endif
15 };
16
17 struct sys_timer {
18         const char              *name;
19
20         struct sys_device       dev;
21         struct sys_timer_ops    *ops;
22 };
23
24 #define TICK_SIZE (tick_nsec / 1000)
25
26 extern struct sys_timer tmu_timer, cmt_timer, mtu2_timer;
27 extern struct sys_timer *sys_timer;
28
29 #ifndef CONFIG_GENERIC_TIME
30 static inline unsigned long get_timer_offset(void)
31 {
32         return sys_timer->ops->get_offset();
33 }
34 #endif
35
36 /* arch/sh/kernel/timers/timer.c */
37 struct sys_timer *get_sys_timer(void);
38
39 /* arch/sh/kernel/time.c */
40 void handle_timer_tick(void);
41
42 extern struct clocksource clocksource_sh;
43
44 #endif /* __ASM_SH_TIMER_H */