4588214526
At the moment we wrap GENERIC_TIME around our existing timer API. As boards start providing their own clocksources, they're able to select GENERIC_TIME accordingly and optimize out most of the timer API. Once the current timers have been reworked as proper clocksource drivers, the rest of the place holders for the timer API can go away and we can flip on GENERIC_TIME unconditionally. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
48 lines
916 B
C
48 lines
916 B
C
#ifndef __ASM_SH_TIMER_H
|
|
#define __ASM_SH_TIMER_H
|
|
|
|
#include <linux/sysdev.h>
|
|
#include <asm/cpu/timer.h>
|
|
|
|
struct sys_timer_ops {
|
|
int (*init)(void);
|
|
int (*start)(void);
|
|
int (*stop)(void);
|
|
#ifndef CONFIG_GENERIC_TIME
|
|
unsigned long (*get_offset)(void);
|
|
#endif
|
|
unsigned long (*get_frequency)(void);
|
|
};
|
|
|
|
struct sys_timer {
|
|
const char *name;
|
|
|
|
struct sys_device dev;
|
|
struct sys_timer_ops *ops;
|
|
};
|
|
|
|
#define TICK_SIZE (tick_nsec / 1000)
|
|
|
|
extern struct sys_timer tmu_timer;
|
|
extern struct sys_timer *sys_timer;
|
|
|
|
#ifndef CONFIG_GENERIC_TIME
|
|
static inline unsigned long get_timer_offset(void)
|
|
{
|
|
return sys_timer->ops->get_offset();
|
|
}
|
|
#endif
|
|
|
|
static inline unsigned long get_timer_frequency(void)
|
|
{
|
|
return sys_timer->ops->get_frequency();
|
|
}
|
|
|
|
/* arch/sh/kernel/timers/timer.c */
|
|
struct sys_timer *get_sys_timer(void);
|
|
|
|
/* arch/sh/kernel/time.c */
|
|
void handle_timer_tick(struct pt_regs *);
|
|
|
|
#endif /* __ASM_SH_TIMER_H */
|
|
|