diff options
Diffstat (limited to 'arch/mips/sgi-ip22/ip22-time.c')
-rw-r--r-- | arch/mips/sgi-ip22/ip22-time.c | 35 |
1 files changed, 10 insertions, 25 deletions
diff --git a/arch/mips/sgi-ip22/ip22-time.c b/arch/mips/sgi-ip22/ip22-time.c index de3d01823ad5..9b9bffd2e8fb 100644 --- a/arch/mips/sgi-ip22/ip22-time.c +++ b/arch/mips/sgi-ip22/ip22-time.c | |||
@@ -20,6 +20,7 @@ | |||
20 | 20 | ||
21 | #include <asm/cpu.h> | 21 | #include <asm/cpu.h> |
22 | #include <asm/mipsregs.h> | 22 | #include <asm/mipsregs.h> |
23 | #include <asm/i8253.h> | ||
23 | #include <asm/io.h> | 24 | #include <asm/io.h> |
24 | #include <asm/irq.h> | 25 | #include <asm/irq.h> |
25 | #include <asm/time.h> | 26 | #include <asm/time.h> |
@@ -29,10 +30,10 @@ | |||
29 | #include <asm/sgi/ip22.h> | 30 | #include <asm/sgi/ip22.h> |
30 | 31 | ||
31 | /* | 32 | /* |
32 | * note that mktime uses month from 1 to 12 while to_tm | 33 | * Note that mktime uses month from 1 to 12 while rtc_time_to_tm |
33 | * uses 0 to 11. | 34 | * uses 0 to 11. |
34 | */ | 35 | */ |
35 | static unsigned long indy_rtc_get_time(void) | 36 | unsigned long read_persistent_clock(void) |
36 | { | 37 | { |
37 | unsigned int yrs, mon, day, hrs, min, sec; | 38 | unsigned int yrs, mon, day, hrs, min, sec; |
38 | unsigned int save_control; | 39 | unsigned int save_control; |
@@ -60,16 +61,16 @@ static unsigned long indy_rtc_get_time(void) | |||
60 | return mktime(yrs + 1900, mon, day, hrs, min, sec); | 61 | return mktime(yrs + 1900, mon, day, hrs, min, sec); |
61 | } | 62 | } |
62 | 63 | ||
63 | static int indy_rtc_set_time(unsigned long tim) | 64 | int rtc_mips_set_time(unsigned long tim) |
64 | { | 65 | { |
65 | struct rtc_time tm; | 66 | struct rtc_time tm; |
66 | unsigned int save_control; | 67 | unsigned int save_control; |
67 | unsigned long flags; | 68 | unsigned long flags; |
68 | 69 | ||
69 | to_tm(tim, &tm); | 70 | rtc_time_to_tm(tim, &tm); |
70 | 71 | ||
71 | tm.tm_mon += 1; /* tm_mon starts at zero */ | 72 | tm.tm_mon += 1; /* tm_mon starts at zero */ |
72 | tm.tm_year -= 1940; | 73 | tm.tm_year -= 40; |
73 | if (tm.tm_year >= 100) | 74 | if (tm.tm_year >= 100) |
74 | tm.tm_year -= 100; | 75 | tm.tm_year -= 100; |
75 | 76 | ||
@@ -128,7 +129,7 @@ static unsigned long dosample(void) | |||
128 | /* | 129 | /* |
129 | * Here we need to calibrate the cycle counter to at least be close. | 130 | * Here we need to calibrate the cycle counter to at least be close. |
130 | */ | 131 | */ |
131 | static __init void indy_time_init(void) | 132 | __init void plat_time_init(void) |
132 | { | 133 | { |
133 | unsigned long r4k_ticks[3]; | 134 | unsigned long r4k_ticks[3]; |
134 | unsigned long r4k_tick; | 135 | unsigned long r4k_tick; |
@@ -172,6 +173,9 @@ static __init void indy_time_init(void) | |||
172 | (int) (r4k_tick % (500000 / HZ))); | 173 | (int) (r4k_tick % (500000 / HZ))); |
173 | 174 | ||
174 | mips_hpt_frequency = r4k_tick * HZ; | 175 | mips_hpt_frequency = r4k_tick * HZ; |
176 | |||
177 | if (ip22_is_fullhouse()) | ||
178 | setup_pit_timer(); | ||
175 | } | 179 | } |
176 | 180 | ||
177 | /* Generic SGI handler for (spurious) 8254 interrupts */ | 181 | /* Generic SGI handler for (spurious) 8254 interrupts */ |
@@ -189,16 +193,6 @@ void indy_8254timer_irq(void) | |||
189 | irq_exit(); | 193 | irq_exit(); |
190 | } | 194 | } |
191 | 195 | ||
192 | void indy_r4k_timer_interrupt(void) | ||
193 | { | ||
194 | int irq = SGI_TIMER_IRQ; | ||
195 | |||
196 | irq_enter(); | ||
197 | kstat_this_cpu.irqs[irq]++; | ||
198 | timer_interrupt(irq, NULL); | ||
199 | irq_exit(); | ||
200 | } | ||
201 | |||
202 | void __init plat_timer_setup(struct irqaction *irq) | 196 | void __init plat_timer_setup(struct irqaction *irq) |
203 | { | 197 | { |
204 | /* over-write the handler, we use our own way */ | 198 | /* over-write the handler, we use our own way */ |
@@ -207,12 +201,3 @@ void __init plat_timer_setup(struct irqaction *irq) | |||
207 | /* setup irqaction */ | 201 | /* setup irqaction */ |
208 | setup_irq(SGI_TIMER_IRQ, irq); | 202 | setup_irq(SGI_TIMER_IRQ, irq); |
209 | } | 203 | } |
210 | |||
211 | void __init ip22_time_init(void) | ||
212 | { | ||
213 | /* setup hookup functions */ | ||
214 | rtc_mips_get_time = indy_rtc_get_time; | ||
215 | rtc_mips_set_time = indy_rtc_set_time; | ||
216 | |||
217 | board_time_init = indy_time_init; | ||
218 | } | ||