]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * Copyright (C) 2001, 2002, MontaVista Software Inc. | |
3 | * Author: Jun Sun, jsun@mvista.com or jsun@junsun.net | |
4 | * Copyright (c) 2003 Maciej W. Rozycki | |
5 | * | |
6 | * include/asm-mips/time.h | |
7 | * header file for the new style time.c file and time services. | |
8 | * | |
9 | * This program is free software; you can redistribute it and/or modify it | |
10 | * under the terms of the GNU General Public License as published by the | |
11 | * Free Software Foundation; either version 2 of the License, or (at your | |
12 | * option) any later version. | |
13 | * | |
14 | * Please refer to Documentation/mips/time.README. | |
15 | */ | |
16 | #ifndef _ASM_TIME_H | |
17 | #define _ASM_TIME_H | |
18 | ||
19 | #include <linux/interrupt.h> | |
20 | #include <linux/linkage.h> | |
21 | #include <linux/ptrace.h> | |
22 | #include <linux/rtc.h> | |
53c2df2f | 23 | #include <linux/spinlock.h> |
00598560 | 24 | #include <linux/clocksource.h> |
53c2df2f AN |
25 | |
26 | extern spinlock_t rtc_lock; | |
1da177e4 LT |
27 | |
28 | /* | |
29 | * RTC ops. By default, they point to no-RTC functions. | |
d23ee8fe YY |
30 | * rtc_mips_get_time - mktime(year, mon, day, hour, min, sec) in seconds. |
31 | * rtc_mips_set_time - reverse the above translation and set time to RTC. | |
32 | * rtc_mips_set_mmss - similar to rtc_set_time, but only min and sec need | |
1da177e4 LT |
33 | * to be set. Used by RTC sync-up. |
34 | */ | |
d23ee8fe YY |
35 | extern unsigned long (*rtc_mips_get_time)(void); |
36 | extern int (*rtc_mips_set_time)(unsigned long); | |
37 | extern int (*rtc_mips_set_mmss)(unsigned long); | |
1da177e4 LT |
38 | |
39 | /* | |
40 | * Timer interrupt functions. | |
41 | * mips_timer_state is needed for high precision timer calibration. | |
42 | * mips_timer_ack may be NULL if the interrupt is self-recoverable. | |
43 | */ | |
44 | extern int (*mips_timer_state)(void); | |
45 | extern void (*mips_timer_ack)(void); | |
46 | ||
47 | /* | |
00598560 AN |
48 | * High precision timer clocksource. |
49 | * If .read is NULL, an R4k-compatible timer setup is attempted. | |
1da177e4 | 50 | */ |
00598560 | 51 | extern struct clocksource clocksource_mips; |
1da177e4 LT |
52 | |
53 | /* | |
54 | * to_tm() converts system time back to (year, mon, day, hour, min, sec). | |
55 | * It is intended to help implement rtc_set_time() functions. | |
56 | * Copied from PPC implementation. | |
57 | */ | |
58 | extern void to_tm(unsigned long tim, struct rtc_time *tm); | |
59 | ||
1da177e4 LT |
60 | /* |
61 | * high-level timer interrupt routines. | |
62 | */ | |
7d12e780 | 63 | extern irqreturn_t timer_interrupt(int irq, void *dev_id); |
1da177e4 LT |
64 | |
65 | /* | |
66 | * the corresponding low-level timer interrupt routine. | |
67 | */ | |
937a8015 | 68 | extern asmlinkage void ll_timer_interrupt(int irq); |
1da177e4 LT |
69 | |
70 | /* | |
71 | * profiling and process accouting is done separately in local_timer_interrupt | |
72 | */ | |
7d12e780 | 73 | extern void local_timer_interrupt(int irq, void *dev_id); |
937a8015 | 74 | extern asmlinkage void ll_local_timer_interrupt(int irq); |
1da177e4 LT |
75 | |
76 | /* | |
77 | * board specific routines required by time_init(). | |
78 | * board_time_init is defaulted to NULL and can remain so. | |
54d0a216 | 79 | * plat_timer_setup must be setup properly in machine setup routine. |
1da177e4 LT |
80 | */ |
81 | struct irqaction; | |
82 | extern void (*board_time_init)(void); | |
54d0a216 | 83 | extern void plat_timer_setup(struct irqaction *irq); |
1da177e4 LT |
84 | |
85 | /* | |
86 | * mips_hpt_frequency - must be set if you intend to use an R4k-compatible | |
87 | * counter as a timer interrupt source; otherwise it can be set up | |
88 | * automagically with an aid of mips_timer_state. | |
89 | */ | |
90 | extern unsigned int mips_hpt_frequency; | |
91 | ||
92 | #endif /* _ASM_TIME_H */ |