diff options
Diffstat (limited to 'drivers/ide/setup-pci.c')
| -rw-r--r-- | drivers/ide/setup-pci.c | 29 | 
1 files changed, 10 insertions, 19 deletions
diff --git a/drivers/ide/setup-pci.c b/drivers/ide/setup-pci.c index 5171601fb25..65fc08b6b6d 100644 --- a/drivers/ide/setup-pci.c +++ b/drivers/ide/setup-pci.c @@ -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",  |