struct clk *clkp;
        struct resource *mem, *irq;
        ide_hwif_t *hwif;
-       void __iomem *base;
-       int pribase, i;
+       unsigned long base;
+       int i;
        hw_regs_t hw;
        u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
 
                printk(KERN_ERR "failed to get memory region resource\n");
                return -ENODEV;
        }
+
        irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
        if (irq == NULL) {
                printk(KERN_ERR "failed to get IRQ resource\n");
                return -ENODEV;
        }
 
-       base = (void *)mem->start;
+       if (request_mem_region(mem->start, mem->end - mem->start + 1,
+                              "palm_bk3710") == NULL) {
+               printk(KERN_ERR "failed to request memory region\n");
+               return -EBUSY;
+       }
+
+       base = IO_ADDRESS(mem->start);
 
        /* Configure the Palm Chip controller */
-       palm_bk3710_chipinit(base);
+       palm_bk3710_chipinit((void __iomem *)base);
 
-       pribase = mem->start + IDE_PALM_ATA_PRI_REG_OFFSET;
        for (i = 0; i < IDE_NR_PORTS - 2; i++)
-               hw.io_ports_array[i] = pribase + i;
-       hw.io_ports.ctl_addr = mem->start +
-                       IDE_PALM_ATA_PRI_CTL_OFFSET;
+               hw.io_ports_array[i] = base + IDE_PALM_ATA_PRI_REG_OFFSET + i;
+       hw.io_ports.ctl_addr = base + IDE_PALM_ATA_PRI_CTL_OFFSET;
        hw.irq = irq->start;
        hw.chipset = ide_palm3710;
 
 
 module_init(palm_bk3710_init);
 MODULE_LICENSE("GPL");
-