]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/powerpc/platforms/powermac/pfunc_base.c
[POWERPC] Add new interrupt mapping core and change platforms to use it
[linux-2.6-omap-h63xx.git] / arch / powerpc / platforms / powermac / pfunc_base.c
index 4ffd2a9832a0c9fba43974b1f0fa00227372599f..6d66359ec8c897d10e47debbed9162ab66470a7f 100644 (file)
@@ -1,4 +1,3 @@
-#include <linux/config.h>
 #include <linux/types.h>
 #include <linux/init.h>
 #include <linux/delay.h>
@@ -9,7 +8,12 @@
 #include <asm/pmac_feature.h>
 #include <asm/pmac_pfunc.h>
 
+#undef DEBUG
+#ifdef DEBUG
 #define DBG(fmt...)    printk(fmt)
+#else
+#define DBG(fmt...)
+#endif
 
 static irqreturn_t macio_gpio_irq(int irq, void *data, struct pt_regs *regs)
 {
@@ -20,19 +24,18 @@ static irqreturn_t macio_gpio_irq(int irq, void *data, struct pt_regs *regs)
 
 static int macio_do_gpio_irq_enable(struct pmf_function *func)
 {
-       if (func->node->n_intrs < 1)
+       unsigned int irq = irq_of_parse_and_map(func->node, 0);
+       if (irq == NO_IRQ)
                return -EINVAL;
-
-       return request_irq(func->node->intrs[0].line, macio_gpio_irq, 0,
-                          func->node->name, func);
+       return request_irq(irq, macio_gpio_irq, 0, func->node->name, func);
 }
 
 static int macio_do_gpio_irq_disable(struct pmf_function *func)
 {
-       if (func->node->n_intrs < 1)
+       unsigned int irq = irq_of_parse_and_map(func->node, 0);
+       if (irq == NO_IRQ)
                return -EINVAL;
-
-       free_irq(func->node->intrs[0].line, func);
+       free_irq(irq, func);
        return 0;
 }
 
@@ -331,6 +334,8 @@ int __init pmac_pfunc_base_install(void)
                return 0;
        pfbase_inited = 1;
 
+       if (!machine_is(powermac))
+               return 0;
 
        DBG("Installing base platform functions...\n");