fep->interrupt = platform_get_irq_byname(pdev,"interrupt");
        if (fep->interrupt < 0)
                return -EINVAL;
-       
+
        r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs");
-       fep->fec.fecp =(void*)r->start;
+       fep->fec.fecp = ioremap(r->start, r->end - r->start + 1);
 
        if(fep->fec.fecp == NULL)
                return -EINVAL;
         * Clear any outstanding interrupt.
         */
        FW(fecp, ievent, 0xffc0);
+#ifndef CONFIG_PPC_MERGE
        FW(fecp, ivec, (fep->interrupt / 2) << 29);
-       
+#else
+       FW(fecp, ivec, (virq_to_hw(fep->interrupt) / 2) << 29);
+#endif
 
        /*
-        * adjust to speed (only for DUET & RMII) 
+        * adjust to speed (only for DUET & RMII)
         */
 #ifdef CONFIG_DUET
        if (fpi->use_rmii) {
 
 static void pre_request_irq(struct net_device *dev, int irq)
 {
+#ifndef CONFIG_PPC_MERGE
        immap_t *immap = fs_enet_immap;
        u32 siel;
 
                        siel &= ~(0x80000000 >> (irq & ~1));
                out_be32(&immap->im_siu_conf.sc_siel, siel);
        }
+#endif
 }
 
 static void post_free_irq(struct net_device *dev, int irq)
 
                return -EINVAL;
 
        r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs");
-       fep->scc.sccp = (void *)r->start;
+       fep->scc.sccp = ioremap(r->start, r->end - r->start + 1);
 
        if (fep->scc.sccp == NULL)
                return -EINVAL;
 
        r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pram");
-       fep->scc.ep = (void *)r->start;
+       fep->scc.ep = ioremap(r->start, r->end - r->start + 1);
 
        if (fep->scc.ep == NULL)
                return -EINVAL;
 
 static void pre_request_irq(struct net_device *dev, int irq)
 {
+#ifndef CONFIG_PPC_MERGE
        immap_t *immap = fs_enet_immap;
        u32 siel;
 
                        siel &= ~(0x80000000 >> (irq & ~1));
                out_be32(&immap->im_siu_conf.sc_siel, siel);
        }
+#endif
 }
 
 static void post_free_irq(struct net_device *dev, int irq)
 
        fixed_mdio_register_device(0, 100, 1);
 #endif
 
-#ifdef CONFIX_FIXED_MII_10_FDX
+#ifdef CONFIG_FIXED_MII_10_FDX
        fixed_mdio_register_device(0, 10, 1);
 #endif
        return 0;