#include <asm/of_platform.h>
 #include <asm/io.h>
 #include <asm/pmi.h>
-
+#include <asm/prom.h>
 
 struct pmi_data {
        struct list_head        handler;
 };
 
 
-
-static void __iomem *of_iomap(struct device_node *np)
-{
-       struct resource res;
-
-       if (of_address_to_resource(np, 0, &res))
-               return NULL;
-
-       pr_debug("Resource start: 0x%lx\n", res.start);
-       pr_debug("Resource end: 0x%lx\n", res.end);
-
-       return ioremap(res.start, 1 + res.end - res.start);
-}
-
-
 static int pmi_irq_handler(int irq, void *dev_id)
 {
        struct pmi_data *data;
                goto out;
        }
 
-       data->pmi_reg = of_iomap(np);
+       data->pmi_reg = of_iomap(np, 0);
        if (!data->pmi_reg) {
                printk(KERN_ERR "pmi: invalid register address.\n");
                rc = -EFAULT;
 
 #include <linux/platform_device.h>
 #include <asm/irq.h>
 #include <asm/atomic.h>
+#include <asm/io.h>
 
 /* Definitions used by the flattened device tree */
 #define OF_DT_HEADER           0xd00dfeed      /* marker */
        return irq;
 }
 
+static inline void __iomem *of_iomap(struct device_node *np, int index)
+{
+       struct resource res;
+
+       if (of_address_to_resource(np, index, &res))
+               return NULL;
+
+       return ioremap(res.start, 1 + res.end - res.start);
+}
+
 
 #endif /* __KERNEL__ */
 #endif /* _POWERPC_PROM_H */