sh: Convert Cayman boards from hw_interrupt_type to irq_chip
authorMatt Fleming <mjf@gentoo.org>
Sun, 14 Dec 2008 12:02:27 +0000 (12:02 +0000)
committerPaul Mundt <lethal@linux-sh.org>
Mon, 22 Dec 2008 09:44:06 +0000 (18:44 +0900)
I've been unable to even compile-test this change because I don't have
an sh5 toolchain. All uses of hw_interrupt_type for SuperH boards have
now been converted to use irq_chip.

Signed-off-by: Matt Fleming <mjf@gentoo.org>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/boards/mach-cayman/irq.c

index ceb37ae92c7045d8f0d10f31fadbc122f0e97ea6..da62ad516994bc74aecd4823502d682c21ee5660 100644 (file)
@@ -94,31 +94,11 @@ static void ack_cayman_irq(unsigned int irq)
        disable_cayman_irq(irq);
 }
 
-static void end_cayman_irq(unsigned int irq)
-{
-       if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
-               enable_cayman_irq(irq);
-}
-
-static unsigned int startup_cayman_irq(unsigned int irq)
-{
-       enable_cayman_irq(irq);
-       return 0; /* never anything pending */
-}
-
-static void shutdown_cayman_irq(unsigned int irq)
-{
-       disable_cayman_irq(irq);
-}
-
-struct hw_interrupt_type cayman_irq_type = {
-       .typename       = "Cayman-IRQ",
-       .startup        = startup_cayman_irq,
-       .shutdown       = shutdown_cayman_irq,
-       .enable         = enable_cayman_irq,
-       .disable        = disable_cayman_irq,
-       .ack            = ack_cayman_irq,
-       .end            = end_cayman_irq,
+struct irq_chip cayman_irq_type = {
+       .name           = "Cayman-IRQ",
+       .unmask         = enable_cayman_irq,
+       .mask           = disable_cayman_irq,
+       .mask_ack       = ack_cayman_irq,
 };
 
 int cayman_irq_demux(int evt)
@@ -187,8 +167,9 @@ void init_cayman_irq(void)
                return;
        }
 
-       for (i=0; i<NR_EXT_IRQS; i++) {
-               irq_desc[START_EXT_IRQS + i].chip = &cayman_irq_type;
+       for (i = 0; i < NR_EXT_IRQS; i++) {
+               set_irq_chip_and_handler(START_EXT_IRQS + i, &cayman_irq_type,
+                                        handle_level_irq);
        }
 
        /* Setup the SMSC interrupt */