diff options
Diffstat (limited to 'arch/mips/sgi-ip27')
-rw-r--r-- | arch/mips/sgi-ip27/ip27-irq.c | 4 | ||||
-rw-r--r-- | arch/mips/sgi-ip27/ip27-timer.c | 23 |
2 files changed, 14 insertions, 13 deletions
diff --git a/arch/mips/sgi-ip27/ip27-irq.c b/arch/mips/sgi-ip27/ip27-irq.c index 597ec73359b7..24a85372284f 100644 --- a/arch/mips/sgi-ip27/ip27-irq.c +++ b/arch/mips/sgi-ip27/ip27-irq.c | |||
@@ -296,7 +296,6 @@ static void shutdown_bridge_irq(unsigned int irq) | |||
296 | struct bridge_controller *bc = IRQ_TO_BRIDGE(irq); | 296 | struct bridge_controller *bc = IRQ_TO_BRIDGE(irq); |
297 | struct hub_data *hub = hub_data(cpu_to_node(bc->irq_cpu)); | 297 | struct hub_data *hub = hub_data(cpu_to_node(bc->irq_cpu)); |
298 | bridge_t *bridge = bc->base; | 298 | bridge_t *bridge = bc->base; |
299 | struct slice_data *si = cpu_data[bc->irq_cpu].data; | ||
300 | int pin, swlevel; | 299 | int pin, swlevel; |
301 | cpuid_t cpu; | 300 | cpuid_t cpu; |
302 | 301 | ||
@@ -311,7 +310,6 @@ static void shutdown_bridge_irq(unsigned int irq) | |||
311 | intr_disconnect_level(cpu, swlevel); | 310 | intr_disconnect_level(cpu, swlevel); |
312 | 311 | ||
313 | __clear_bit(swlevel, hub->irq_alloc_mask); | 312 | __clear_bit(swlevel, hub->irq_alloc_mask); |
314 | si->level_to_irq[swlevel] = -1; | ||
315 | 313 | ||
316 | bridge->b_int_enable &= ~(1 << pin); | 314 | bridge->b_int_enable &= ~(1 << pin); |
317 | bridge->b_wid_tflush; | 315 | bridge->b_wid_tflush; |
@@ -347,7 +345,7 @@ static void end_bridge_irq(unsigned int irq) | |||
347 | enable_bridge_irq(irq); | 345 | enable_bridge_irq(irq); |
348 | } | 346 | } |
349 | 347 | ||
350 | static struct hw_interrupt_type bridge_irq_type = { | 348 | static struct irq_chip bridge_irq_type = { |
351 | .typename = "bridge", | 349 | .typename = "bridge", |
352 | .startup = startup_bridge_irq, | 350 | .startup = startup_bridge_irq, |
353 | .shutdown = shutdown_bridge_irq, | 351 | .shutdown = shutdown_bridge_irq, |
diff --git a/arch/mips/sgi-ip27/ip27-timer.c b/arch/mips/sgi-ip27/ip27-timer.c index 3ca614a851e5..b029ba79c27a 100644 --- a/arch/mips/sgi-ip27/ip27-timer.c +++ b/arch/mips/sgi-ip27/ip27-timer.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copytight (C) 1999, 2000, 05 Ralf Baechle (ralf@linux-mips.org) | 2 | * Copytight (C) 1999, 2000, 05, 06 Ralf Baechle (ralf@linux-mips.org) |
3 | * Copytight (C) 1999, 2000 Silicon Graphics, Inc. | 3 | * Copytight (C) 1999, 2000 Silicon Graphics, Inc. |
4 | */ | 4 | */ |
5 | #include <linux/bcd.h> | 5 | #include <linux/bcd.h> |
@@ -181,8 +181,9 @@ static __init unsigned long get_m48t35_time(void) | |||
181 | return mktime(year, month, date, hour, min, sec); | 181 | return mktime(year, month, date, hour, min, sec); |
182 | } | 182 | } |
183 | 183 | ||
184 | static void startup_rt_irq(unsigned int irq) | 184 | static unsigned int startup_rt_irq(unsigned int irq) |
185 | { | 185 | { |
186 | return 0; | ||
186 | } | 187 | } |
187 | 188 | ||
188 | static void shutdown_rt_irq(unsigned int irq) | 189 | static void shutdown_rt_irq(unsigned int irq) |
@@ -205,7 +206,7 @@ static void end_rt_irq(unsigned int irq) | |||
205 | { | 206 | { |
206 | } | 207 | } |
207 | 208 | ||
208 | static struct hw_interrupt_type rt_irq_type = { | 209 | static struct irq_chip rt_irq_type = { |
209 | .typename = "SN HUB RT timer", | 210 | .typename = "SN HUB RT timer", |
210 | .startup = startup_rt_irq, | 211 | .startup = startup_rt_irq, |
211 | .shutdown = shutdown_rt_irq, | 212 | .shutdown = shutdown_rt_irq, |
@@ -224,17 +225,17 @@ static struct irqaction rt_irqaction = { | |||
224 | 225 | ||
225 | extern int allocate_irqno(void); | 226 | extern int allocate_irqno(void); |
226 | 227 | ||
227 | static void ip27_timer_setup(struct irqaction *irq) | 228 | void __init plat_timer_setup(struct irqaction *irq) |
228 | { | 229 | { |
229 | int irqno = allocate_irqno(); | 230 | int irqno = allocate_irqno(); |
230 | 231 | ||
231 | if (irqno < 0) | 232 | if (irqno < 0) |
232 | panic("Can't allocate interrupt number for timer interrupt"); | 233 | panic("Can't allocate interrupt number for timer interrupt"); |
233 | 234 | ||
234 | irq_desc[irqno].status = IRQ_DISABLED; | 235 | irq_desc[irqno].status = IRQ_DISABLED; |
235 | irq_desc[irqno].action = NULL; | 236 | irq_desc[irqno].action = NULL; |
236 | irq_desc[irqno].depth = 1; | 237 | irq_desc[irqno].depth = 1; |
237 | irq_desc[irqno].handler = &rt_irq_type; | 238 | irq_desc[irqno].chip = &rt_irq_type; |
238 | 239 | ||
239 | /* over-write the handler, we use our own way */ | 240 | /* over-write the handler, we use our own way */ |
240 | irq->handler = no_action; | 241 | irq->handler = no_action; |
@@ -243,6 +244,10 @@ static void ip27_timer_setup(struct irqaction *irq) | |||
243 | irq_desc[irqno].status |= IRQ_PER_CPU; | 244 | irq_desc[irqno].status |= IRQ_PER_CPU; |
244 | 245 | ||
245 | rt_timer_irq = irqno; | 246 | rt_timer_irq = irqno; |
247 | /* | ||
248 | * Only needed to get /proc/interrupt to display timer irq stats | ||
249 | */ | ||
250 | setup_irq(irqno, &rt_irqaction); | ||
246 | } | 251 | } |
247 | 252 | ||
248 | void __init ip27_time_init(void) | 253 | void __init ip27_time_init(void) |
@@ -251,8 +256,6 @@ void __init ip27_time_init(void) | |||
251 | xtime.tv_nsec = 0; | 256 | xtime.tv_nsec = 0; |
252 | 257 | ||
253 | do_gettimeoffset = ip27_do_gettimeoffset; | 258 | do_gettimeoffset = ip27_do_gettimeoffset; |
254 | |||
255 | board_timer_setup = ip27_timer_setup; | ||
256 | } | 259 | } |
257 | 260 | ||
258 | void __init cpu_time_init(void) | 261 | void __init cpu_time_init(void) |