]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/ide/pci/delkin_cb.c
ide: cleanup setting hwif->mmio flag
[mv-sheeva.git] / drivers / ide / pci / delkin_cb.c
index 961698d655eb6f2a9df206c726ce2ec0f14f055a..c7b7e0483287b8747affd5dff58b6d91b4d23cf4 100644 (file)
@@ -43,6 +43,10 @@ static const u8 setup[] = {
        0x00, 0x00, 0x00, 0x00, 0xa4, 0x83, 0x02, 0x13,
 };
 
+static const struct ide_port_ops delkin_cb_port_ops = {
+       .quirkproc              = ide_undecoded_slave,
+};
+
 static int __devinit
 delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
 {
@@ -71,14 +75,13 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
                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);
        hw.irq = dev->irq;
        hw.chipset = ide_pci;           /* this enables IRQ sharing */
 
-       hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]);
+       hwif = ide_find_port();
        if (hwif == NULL)
                goto out_disable;
 
@@ -90,7 +93,7 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
                ide_init_port_data(hwif, i);
 
        ide_init_port_hw(hwif, &hw);
-       hwif->quirkproc = &ide_undecoded_slave;
+       hwif->port_ops = &delkin_cb_port_ops;
 
        idx[0] = i;
 
@@ -110,6 +113,7 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
 
 out_disable:
        printk(KERN_ERR "delkin_cb: no IDE devices found\n");
+       pci_release_regions(dev);
        pci_disable_device(dev);
        return -ENODEV;
 }
@@ -122,6 +126,7 @@ delkin_cb_remove (struct pci_dev *dev)
        if (hwif)
                ide_unregister(hwif->index);
 
+       pci_release_regions(dev);
        pci_disable_device(dev);
 }