Index: oldkernel/linux/drivers/block/ide-pci.c diff -u linux/drivers/block/ide-pci.c:1.2 linux/drivers/block/ide-pci.c:1.3 --- linux/drivers/block/ide-pci.c:1.2 Wed May 31 14:56:52 2000 +++ linux/drivers/block/ide-pci.c Thu Jun 1 17:07:11 2000 @@ -24,6 +24,7 @@ #include "ide.h" +#define DEVID_450NX ((ide_pci_devid_t){PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82451NX}) #define DEVID_PIIXa ((ide_pci_devid_t){PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371FB_0}) #define DEVID_PIIXb ((ide_pci_devid_t){PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371FB_1}) #define DEVID_PIIX3 ((ide_pci_devid_t){PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371SB_1}) @@ -289,16 +290,15 @@ * we "know" about, this information is in the ide_pci_device_t struct; * for all other chipsets, we just assume both interfaces are enabled. */ -__initfunc(static void ide_setup_pci_device (struct pci_dev *dev, ide_pci_device_t *d)) +__initfunc(static void ide_setup_pci_device (struct pci_dev *dev, + ide_pci_device_t *d, + int autodma)) { - unsigned int port, at_least_one_hwif_enabled = 0, autodma = 0, pciirq = 0; + unsigned int port, at_least_one_hwif_enabled = 0, pciirq = 0; unsigned short pcicmd = 0, tried_config = 0; byte tmp = 0; ide_hwif_t *hwif, *mate = NULL; -#ifdef CONFIG_IDEDMA_AUTO - autodma = 1; -#endif check_if_enabled: if (pci_read_config_word(dev, PCI_COMMAND, &pcicmd)) { printk("%s: error accessing PCI regs\n", d->name); @@ -434,9 +434,25 @@ struct pci_dev *dev; ide_pci_devid_t devid; ide_pci_device_t *d; + int autodma; if (!pci_present()) return; + +#ifdef CONFIG_IDEDMA_AUTO + autodma = 1; + for(dev = pci_devices; dev; dev=dev->next) { + devid.vid = dev->vendor; + devid.did = dev->device; + if (IDE_PCI_DEVID_EQ(devid, DEVID_450NX)) { + autodma = 0; + break; + } + } +#else + autodma = 0; +#endif + for(dev = pci_devices; dev; dev=dev->next) { devid.vid = dev->vendor; devid.did = dev->device; @@ -451,7 +467,7 @@ d->name, dev->bus->number, dev->devfn, devid.vid, devid.did); else printk("%s: IDE controller on PCI bus %02x dev %02x\n", d->name, dev->bus->number, dev->devfn); - ide_setup_pci_device(dev, d); + ide_setup_pci_device(dev, d, autodma); } } }