]> err.no Git - linux-2.6/blobdiff - drivers/ide/setup-pci.c
Revert "remove the strip driver"
[linux-2.6] / drivers / ide / setup-pci.c
index 5171601fb2556646544587466a14b8e973389a15..65fc08b6b6d0e813f4eed2e5594c1149a5233d7b 100644 (file)
@@ -6,19 +6,15 @@
  *  May be copied or modified under the terms of the GNU General Public License
  */
 
-#include <linux/module.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
 #include <linux/pci.h>
 #include <linux/init.h>
-#include <linux/timer.h>
-#include <linux/mm.h>
 #include <linux/interrupt.h>
 #include <linux/ide.h>
 #include <linux/dma-mapping.h>
 
 #include <asm/io.h>
-#include <asm/irq.h>
 
 /**
  *     ide_setup_pci_baseregs  -       place a PCI IDE controller native
@@ -87,7 +83,7 @@ unsigned long ide_pci_dma_base(ide_hwif_t *hwif, const struct ide_port_info *d)
        unsigned long dma_base = 0;
        u8 dma_stat = 0;
 
-       if (hwif->mmio)
+       if (hwif->host_flags & IDE_HFLAG_MMIO)
                return hwif->dma_base;
 
        if (hwif->mate && hwif->mate->dma_base) {
@@ -319,25 +315,22 @@ static ide_hwif_t *ide_hwif_configure(struct pci_dev *dev,
 
                ctl  = pci_resource_start(dev, 2*port+1);
                base = pci_resource_start(dev, 2*port);
-               if ((ctl && !base) || (base && !ctl)) {
-                       printk(KERN_ERR "%s: inconsistent baseregs (BIOS) "
-                               "for port %d, skipping\n", d->name, port);
-                       return NULL;
-               }
-       }
-       if (!ctl) {
+       } else {
                /* Use default values */
                ctl = port ? 0x374 : 0x3f4;
                base = port ? 0x170 : 0x1f0;
        }
 
-       hwif = ide_find_port_slot(d);
-       if (hwif == NULL) {
-               printk(KERN_ERR "%s: too many IDE interfaces, no room in "
-                               "table\n", d->name);
+       if (!base || !ctl) {
+               printk(KERN_ERR "%s: bad PCI BARs for port %d, skipping\n",
+                               d->name, port);
                return NULL;
        }
 
+       hwif = ide_find_port_slot(d);
+       if (hwif == NULL)
+               return NULL;
+
        memset(&hw, 0, sizeof(hw));
        hw.irq = irq;
        hw.dev = &dev->dev;
@@ -346,8 +339,6 @@ static ide_hwif_t *ide_hwif_configure(struct pci_dev *dev,
 
        ide_init_port_hw(hwif, &hw);
 
-       hwif->dev = &dev->dev;
-
        return hwif;
 }
 
@@ -374,7 +365,7 @@ int ide_hwif_setup_dma(ide_hwif_t *hwif, const struct ide_port_info *d)
                if (base == 0 || ide_pci_set_master(dev, d->name) < 0)
                        return -1;
 
-               if (hwif->mmio)
+               if (hwif->host_flags & IDE_HFLAG_MMIO)
                        printk(KERN_INFO "    %s: MMIO-DMA\n", hwif->name);
                else
                        printk(KERN_INFO "    %s: BM-DMA at 0x%04lx-0x%04lx\n",