fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / arch / powerpc / platforms / powermac / pfunc_base.c
index 9b7150f..5c6c15c 100644 (file)
@@ -1,4 +1,3 @@
-#include <linux/config.h>
 #include <linux/types.h>
 #include <linux/init.h>
 #include <linux/delay.h>
@@ -16,7 +15,7 @@
 #define DBG(fmt...)
 #endif
 
-static irqreturn_t macio_gpio_irq(int irq, void *data, struct pt_regs *regs)
+static irqreturn_t macio_gpio_irq(int irq, void *data)
 {
        pmf_do_irq(data);
 
@@ -25,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;
 }
 
@@ -116,7 +114,7 @@ static void macio_gpio_init_one(struct macio_chip *macio)
         * we just create them all
         */
        for (gp = NULL; (gp = of_get_next_child(gparent, gp)) != NULL;) {
-               u32 *reg = (u32 *)get_property(gp, "reg", NULL);
+               const u32 *reg = get_property(gp, "reg", NULL);
                unsigned long offset;
                if (reg == NULL)
                        continue;
@@ -258,7 +256,7 @@ static struct pmf_handlers macio_mmio_handlers = {
        .write_reg32            = macio_do_write_reg32,
        .read_reg32             = macio_do_read_reg32,
        .write_reg8             = macio_do_write_reg8,
-       .read_reg32             = macio_do_read_reg8,
+       .read_reg             = macio_do_read_reg8,
        .read_reg32_msrx        = macio_do_read_reg32_msrx,
        .read_reg8_msrx         = macio_do_read_reg8_msrx,
        .write_reg32_slm        = macio_do_write_reg32_slm,
@@ -336,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");