X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=include%2Fasm-mips%2Ftime.h;h=7717934f94c35122ba55e9a4830cbc91c1bcf216;hb=02ff82cac7ee7351d2649c4a3568f12e4e0fe534;hp=2d543735668b9b80bb29a80d5e1f3a2514739e86;hpb=54d0a216f40e060ba4265bb851cc36b3ca55d1a8;p=safe%2Fjmp%2Flinux-2.6 diff --git a/include/asm-mips/time.h b/include/asm-mips/time.h index 2d54373..7717934 100644 --- a/include/asm-mips/time.h +++ b/include/asm-mips/time.h @@ -10,90 +10,76 @@ * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. - * - * Please refer to Documentation/mips/time.README. */ #ifndef _ASM_TIME_H #define _ASM_TIME_H -#include -#include -#include #include #include +#include +#include extern spinlock_t rtc_lock; /* - * RTC ops. By default, they point to no-RTC functions. - * rtc_mips_get_time - mktime(year, mon, day, hour, min, sec) in seconds. + * RTC ops. By default, they point to weak no-op RTC functions. * rtc_mips_set_time - reverse the above translation and set time to RTC. * rtc_mips_set_mmss - similar to rtc_set_time, but only min and sec need * to be set. Used by RTC sync-up. */ -extern unsigned long (*rtc_mips_get_time)(void); -extern int (*rtc_mips_set_time)(unsigned long); -extern int (*rtc_mips_set_mmss)(unsigned long); +extern int rtc_mips_set_time(unsigned long); +extern int rtc_mips_set_mmss(unsigned long); /* * Timer interrupt functions. * mips_timer_state is needed for high precision timer calibration. - * mips_timer_ack may be NULL if the interrupt is self-recoverable. */ extern int (*mips_timer_state)(void); -extern void (*mips_timer_ack)(void); - -/* - * High precision timer functions. - * If mips_hpt_read is NULL, an R4k-compatible timer setup is attempted. - */ -extern unsigned int (*mips_hpt_read)(void); -extern void (*mips_hpt_init)(unsigned int); - -/* - * to_tm() converts system time back to (year, mon, day, hour, min, sec). - * It is intended to help implement rtc_set_time() functions. - * Copied from PPC implementation. - */ -extern void to_tm(unsigned long tim, struct rtc_time *tm); /* - * do_gettimeoffset(). By default, this func pointer points to - * do_null_gettimeoffset(), which leads to the same resolution as HZ. - * Higher resolution versions are available, which give ~1us resolution. + * board specific routines required by time_init(). */ -extern unsigned long (*do_gettimeoffset)(void); +extern void plat_time_init(void); /* - * high-level timer interrupt routines. + * mips_hpt_frequency - must be set if you intend to use an R4k-compatible + * counter as a timer interrupt source; otherwise it can be set up + * automagically with an aid of mips_timer_state. */ -extern irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs); +extern unsigned int mips_hpt_frequency; /* - * the corresponding low-level timer interrupt routine. + * The performance counter IRQ on MIPS is a close relative to the timer IRQ + * so it lives here. */ -extern asmlinkage void ll_timer_interrupt(int irq, struct pt_regs *regs); +extern int (*perf_irq)(void); /* - * profiling and process accouting is done separately in local_timer_interrupt + * Initialize the calling CPU's compare interrupt as clockevent device */ -extern void local_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs); -extern asmlinkage void ll_local_timer_interrupt(int irq, struct pt_regs *regs); +#ifdef CONFIG_CEVT_R4K +extern int mips_clockevent_init(void); +extern unsigned int __weak get_c0_compare_int(void); +#else +static inline int mips_clockevent_init(void) +{ + return -ENXIO; +} +#endif /* - * board specific routines required by time_init(). - * board_time_init is defaulted to NULL and can remain so. - * plat_timer_setup must be setup properly in machine setup routine. + * Initialize the count register as a clocksource */ -struct irqaction; -extern void (*board_time_init)(void); -extern void plat_timer_setup(struct irqaction *irq); +#ifdef CONFIG_CEVT_R4K +extern void init_mips_clocksource(void); +#else +static inline void init_mips_clocksource(void) +{ +} +#endif -/* - * mips_hpt_frequency - must be set if you intend to use an R4k-compatible - * counter as a timer interrupt source; otherwise it can be set up - * automagically with an aid of mips_timer_state. - */ -extern unsigned int mips_hpt_frequency; +extern void clocksource_set_clock(struct clocksource *cs, unsigned int clock); +extern void clockevent_set_clock(struct clock_event_device *cd, + unsigned int clock); #endif /* _ASM_TIME_H */