if (setup[i])
                        outb(setup[i], base + i);
        }
-       pci_release_regions(dev);       /* IDE layer handles regions itself */
 
        memset(&hw, 0, sizeof(hw));
        ide_std_init_ports(&hw, base + 0x10, base + 0x1e);
                ide_init_port_data(hwif, i);
 
        ide_init_port_hw(hwif, &hw);
+       hwif->mmio = 1;
        hwif->quirkproc = &ide_undecoded_slave;
 
        idx[0] = i;
 
 out_disable:
        printk(KERN_ERR "delkin_cb: no IDE devices found\n");
+       pci_release_regions(dev);
        pci_disable_device(dev);
        return -ENODEV;
 }
        if (hwif)
                ide_unregister(hwif->index);
 
+       pci_release_regions(dev);
        pci_disable_device(dev);
 }