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