aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/sgi-ip27/ip27-irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/sgi-ip27/ip27-irq.c')
-rw-r--r--arch/mips/sgi-ip27/ip27-irq.c25
1 files changed, 5 insertions, 20 deletions
diff --git a/arch/mips/sgi-ip27/ip27-irq.c b/arch/mips/sgi-ip27/ip27-irq.c
index 270ecd3e6b4a..319f8803ef6f 100644
--- a/arch/mips/sgi-ip27/ip27-irq.c
+++ b/arch/mips/sgi-ip27/ip27-irq.c
@@ -332,34 +332,19 @@ static inline void disable_bridge_irq(unsigned int irq)
332 intr_disconnect_level(cpu, swlevel); 332 intr_disconnect_level(cpu, swlevel);
333} 333}
334 334
335static void mask_and_ack_bridge_irq(unsigned int irq)
336{
337 disable_bridge_irq(irq);
338}
339
340static void end_bridge_irq(unsigned int irq)
341{
342 if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)) &&
343 irq_desc[irq].action)
344 enable_bridge_irq(irq);
345}
346
347static struct irq_chip bridge_irq_type = { 335static struct irq_chip bridge_irq_type = {
348 .typename = "bridge", 336 .typename = "bridge",
349 .startup = startup_bridge_irq, 337 .startup = startup_bridge_irq,
350 .shutdown = shutdown_bridge_irq, 338 .shutdown = shutdown_bridge_irq,
351 .enable = enable_bridge_irq, 339 .ack = disable_bridge_irq,
352 .disable = disable_bridge_irq, 340 .mask = disable_bridge_irq,
353 .ack = mask_and_ack_bridge_irq, 341 .mask_ack = disable_bridge_irq,
354 .end = end_bridge_irq, 342 .unmask = enable_bridge_irq,
355}; 343};
356 344
357void __devinit register_bridge_irq(unsigned int irq) 345void __devinit register_bridge_irq(unsigned int irq)
358{ 346{
359 irq_desc[irq].status = IRQ_DISABLED; 347 set_irq_chip_and_handler(irq, &bridge_irq_type, handle_level_irq);
360 irq_desc[irq].action = 0;
361 irq_desc[irq].depth = 1;
362 irq_desc[irq].chip = &bridge_irq_type;
363} 348}
364 349
365int __devinit request_bridge_irq(struct bridge_controller *bc) 350int __devinit request_bridge_irq(struct bridge_controller *bc)