static struct resource au1200_ide0_resources[] = {
        [0] = {
                .start          = AU1XXX_ATA_PHYS_ADDR,
-               .end            = AU1XXX_ATA_PHYS_ADDR + AU1XXX_ATA_PHYS_LEN,
+               .end            = AU1XXX_ATA_PHYS_ADDR + AU1XXX_ATA_PHYS_LEN - 1,
                .flags          = IORESOURCE_MEM,
        },
        [1] = {
 
                goto out;
        }
 
-       if (!request_mem_region (res->start, res->end-res->start, pdev->name)) {
+       if (!request_mem_region(res->start, res->end - res->start + 1,
+                               pdev->name)) {
                pr_debug("%s: request_mem_region failed\n", DRV_NAME);
                ret =  -EBUSY;
                goto out;
        }
 
-       ahwif->regbase = (u32)ioremap(res->start, res->end-res->start);
+       ahwif->regbase = (u32)ioremap(res->start, res->end - res->start + 1);
        if (ahwif->regbase == 0) {
                ret = -ENOMEM;
                goto out;
        iounmap((void *)ahwif->regbase);
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       release_mem_region(res->start, res->end - res->start);
+       release_mem_region(res->start, res->end - res->start + 1);
 
        return 0;
 }
 
 #define AU1XXX_SMC91111_IRQ                    DB1200_ETH_INT
 
 #define AU1XXX_ATA_PHYS_ADDR           (0x18800000)
-#define AU1XXX_ATA_PHYS_LEN                    (0x100)
-#define AU1XXX_ATA_REG_OFFSET  (5)
+#define AU1XXX_ATA_REG_OFFSET          (5)
+#define AU1XXX_ATA_PHYS_LEN            (16 << AU1XXX_ATA_REG_OFFSET)
 #define AU1XXX_ATA_INT                 DB1200_IDE_INT
 #define AU1XXX_ATA_DDMA_REQ            DSCR_CMD0_DMA_REQ1;
 #define AU1XXX_ATA_RQSIZE              128
 
 #define AU1XXX_SMC91111_IRQ                    PB1200_ETH_INT
 
 #define AU1XXX_ATA_PHYS_ADDR           (0x0C800000)
-#define AU1XXX_ATA_PHYS_LEN                    (0x100)
-#define AU1XXX_ATA_REG_OFFSET  (5)
+#define AU1XXX_ATA_REG_OFFSET          (5)
+#define AU1XXX_ATA_PHYS_LEN            (16 << AU1XXX_ATA_REG_OFFSET)
 #define AU1XXX_ATA_INT                 PB1200_IDE_INT
 #define AU1XXX_ATA_DDMA_REQ            DSCR_CMD0_DMA_REQ1;
 #define AU1XXX_ATA_RQSIZE              128