[POWERPC] Add an optional device_node pointer to the irq_host
[powerpc.git] / arch / powerpc / platforms / 52xx / mpc52xx_pic.c
index c751925..1d793e4 100644 (file)
@@ -22,7 +22,6 @@
 #include <linux/init.h>
 #include <linux/sched.h>
 #include <linux/signal.h>
-#include <linux/stddef.h>
 #include <linux/delay.h>
 #include <linux/irq.h>
 #include <linux/hardirq.h>
@@ -128,7 +127,7 @@ static void mpc52xx_main_mask(unsigned int virq)
 
        pr_debug("%s: irq=%x. l2=%d\n", __func__, irq, l2irq);
 
-       io_be_setbit(&intr->main_mask, 15 - l2irq);
+       io_be_setbit(&intr->main_mask, 16 - l2irq);
 }
 
 static void mpc52xx_main_unmask(unsigned int virq)
@@ -141,7 +140,7 @@ static void mpc52xx_main_unmask(unsigned int virq)
 
        pr_debug("%s: irq=%x. l2=%d\n", __func__, irq, l2irq);
 
-       io_be_clrbit(&intr->main_mask, 15 - l2irq);
+       io_be_clrbit(&intr->main_mask, 16 - l2irq);
 }
 
 static struct irq_chip mpc52xx_main_irqchip = {
@@ -245,7 +244,7 @@ static struct irq_chip mpc52xx_sdma_irqchip = {
 static int mpc52xx_irqhost_match(struct irq_host *h, struct device_node *node)
 {
        pr_debug("%s: node=%p\n", __func__, node);
-       return mpc52xx_irqhost->host_data == node;
+       return h->of_node == node;
 }
 
 static int mpc52xx_irqhost_xlate(struct irq_host *h, struct device_node *ct,
@@ -420,14 +419,13 @@ void __init mpc52xx_init_irq(void)
         * hw irq information provided by the ofw to linux virq
         */
 
-       mpc52xx_irqhost = irq_alloc_host(IRQ_HOST_MAP_LINEAR,
+       mpc52xx_irqhost = irq_alloc_host(picnode, IRQ_HOST_MAP_LINEAR,
                                         MPC52xx_IRQ_HIGHTESTHWIRQ,
                                         &mpc52xx_irqhost_ops, -1);
 
        if (!mpc52xx_irqhost)
                panic(__FILE__ ": Cannot allocate the IRQ host\n");
 
-       mpc52xx_irqhost->host_data = picnode;
        printk(KERN_INFO "MPC52xx PIC is up and running!\n");
 }