Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart
[linux-drm-fsl-dcu.git] / arch / mips / ddb5xxx / ddb5477 / irq.c
index 22fb94b7c4409bef1cd197602183c2b00c33de3f..2b23234a5b95ec4a76db0f0b7a56ca804f265b5e 100644 (file)
@@ -17,6 +17,7 @@
 #include <linux/ptrace.h>
 
 #include <asm/i8259.h>
+#include <asm/irq_cpu.h>
 #include <asm/system.h>
 #include <asm/mipsregs.h>
 #include <asm/debug.h>
@@ -73,8 +74,6 @@ set_pci_int_attr(u32 pci, u32 intn, u32 active, u32 trigger)
 }
 
 extern void vrc5477_irq_init(u32 base);
-extern void mips_cpu_irq_init(u32 base);
-extern int setup_irq(unsigned int irq, struct irqaction *irqaction);
 static struct irqaction irq_cascade = { no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL };
 
 void __init arch_init_irq(void)
@@ -126,7 +125,7 @@ void __init arch_init_irq(void)
 
        /* init all controllers */
        init_i8259_irqs();
-       mips_cpu_irq_init(CPU_IRQ_BASE);
+       mips_cpu_irq_init();
        vrc5477_irq_init(VRC5477_IRQ_BASE);
 
 
@@ -147,15 +146,13 @@ u8 i8259_interrupt_ack(void)
        irq = *(volatile u8 *) KSEG1ADDR(DDB_PCI_IACK_BASE);
        ddb_out32(DDB_PCIINIT10, reg);
 
-       /* i8259.c set the base vector to be 0x0 */
-       return irq + I8259_IRQ_BASE;
+       return irq;
 }
 /*
  * the first level int-handler will jump here if it is a vrc5477 irq
  */
 #define        NUM_5477_IRQS   32
-static void
-vrc5477_irq_dispatch(struct pt_regs *regs)
+static void vrc5477_irq_dispatch(void)
 {
        u32 intStatus;
        u32 bitmask;
@@ -179,7 +176,7 @@ vrc5477_irq_dispatch(struct pt_regs *regs)
                /* check for i8259 interrupts */
                if (intStatus & (1 << VRC5477_I8259_CASCADE)) {
                        int i8259_irq = i8259_interrupt_ack();
-                       do_IRQ(I8259_IRQ_BASE + i8259_irq, regs);
+                       do_IRQ(i8259_irq);
                        return;
                }
        }
@@ -187,7 +184,7 @@ vrc5477_irq_dispatch(struct pt_regs *regs)
        for (i=0, bitmask=1; i<= NUM_5477_IRQS; bitmask <<=1, i++) {
                /* do we need to "and" with the int mask? */
                if (intStatus & bitmask) {
-                       do_IRQ(VRC5477_IRQ_BASE + i, regs);
+                       do_IRQ(VRC5477_IRQ_BASE + i);
                        return;
                }
        }
@@ -195,18 +192,18 @@ vrc5477_irq_dispatch(struct pt_regs *regs)
 
 #define VR5477INTS (STATUSF_IP2|STATUSF_IP3|STATUSF_IP4|STATUSF_IP5|STATUSF_IP6)
 
-asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
+asmlinkage void plat_irq_dispatch(void)
 {
        unsigned int pending = read_c0_cause() & read_c0_status();
 
        if (pending & STATUSF_IP7)
-               do_IRQ(CPU_IRQ_BASE + 7, regs);
+               do_IRQ(CPU_IRQ_BASE + 7);
        else if (pending & VR5477INTS)
-               vrc5477_irq_dispatch(regs);
+               vrc5477_irq_dispatch();
        else if (pending & STATUSF_IP0)
-               do_IRQ(CPU_IRQ_BASE, regs);
+               do_IRQ(CPU_IRQ_BASE);
        else if (pending & STATUSF_IP1)
-               do_IRQ(CPU_IRQ_BASE + 1, regs);
+               do_IRQ(CPU_IRQ_BASE + 1);
        else
-               spurious_interrupt(regs);
+               spurious_interrupt();
 }