X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fmips%2Fsgi-ip27%2Fip27-irq.c;h=2e643d2f51cbb7b909e859c5f4aae0cfbae1dde7;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=24a85372284f02351db48d4f78866c71d1092b6e;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/arch/mips/sgi-ip27/ip27-irq.c b/arch/mips/sgi-ip27/ip27-irq.c index 24a853722..2e643d2f5 100644 --- a/arch/mips/sgi-ip27/ip27-irq.c +++ b/arch/mips/sgi-ip27/ip27-irq.c @@ -8,6 +8,7 @@ #undef DEBUG +#include #include #include #include @@ -118,7 +119,7 @@ static int ms1bit(unsigned long x) } /* - * This code is unnecessarily complex, because we do IRQF_DISABLED + * This code is unnecessarily complex, because we do SA_INTERRUPT * intr enabling. Basically, once we grab the set of intrs we need * to service, we must mask _all_ these interrupts; firstly, to make * sure the same intr does not intr again, causing recursion that @@ -296,6 +297,7 @@ static void shutdown_bridge_irq(unsigned int irq) struct bridge_controller *bc = IRQ_TO_BRIDGE(irq); struct hub_data *hub = hub_data(cpu_to_node(bc->irq_cpu)); bridge_t *bridge = bc->base; + struct slice_data *si = cpu_data[bc->irq_cpu].data; int pin, swlevel; cpuid_t cpu; @@ -310,6 +312,7 @@ static void shutdown_bridge_irq(unsigned int irq) intr_disconnect_level(cpu, swlevel); __clear_bit(swlevel, hub->irq_alloc_mask); + si->level_to_irq[swlevel] = -1; bridge->b_int_enable &= ~(1 << pin); bridge->b_wid_tflush; @@ -345,7 +348,7 @@ static void end_bridge_irq(unsigned int irq) enable_bridge_irq(irq); } -static struct irq_chip bridge_irq_type = { +static struct hw_interrupt_type bridge_irq_type = { .typename = "bridge", .startup = startup_bridge_irq, .shutdown = shutdown_bridge_irq, @@ -357,7 +360,7 @@ static struct irq_chip bridge_irq_type = { static unsigned long irq_map[NR_IRQS / BITS_PER_LONG]; -int allocate_irqno(void) +static int allocate_irqno(void) { int irq; @@ -383,7 +386,7 @@ void __devinit register_bridge_irq(unsigned int irq) irq_desc[irq].status = IRQ_DISABLED; irq_desc[irq].action = 0; irq_desc[irq].depth = 1; - irq_desc[irq].chip = &bridge_irq_type; + irq_desc[irq].handler = &bridge_irq_type; } int __devinit request_bridge_irq(struct bridge_controller *bc)