diff -ruN dist-2.4.12+patches/drivers/ide/ide-pci.c cvs-2.4.12+patches/drivers/ide/ide-pci.c --- dist-2.4.12+patches/drivers/ide/ide-pci.c Mon Oct 15 10:21:50 2001 +++ cvs-2.4.12+patches/drivers/ide/ide-pci.c Mon Oct 15 10:21:49 2001 @@ -584,7 +584,8 @@ ide_hwif_t *hwif, *mate = NULL; unsigned int class_rev; static int secondpdc = 0; - + int pci_class_ide; + #ifdef CONFIG_IDEDMA_AUTO if (!noautodma) autodma = 1; @@ -653,7 +654,8 @@ /* Its attached to something else, just a random bridge. Suspect a fastrak and fall through */ } - if ((dev->class & ~(0xfa)) != ((PCI_CLASS_STORAGE_IDE << 8) | 5)) { + pci_class_ide = ((dev->class >> 8) == PCI_CLASS_STORAGE_IDE); + if (!pci_class_ide && ((dev->class >> 8) != PCI_CLASS_STORAGE_OTHER)) { printk("%s: not 100%% native mode: will probe irqs later\n", d->name); /* * This allows offboard ide-pci cards the enable a BIOS, @@ -666,8 +668,19 @@ printk("%s: will probe irqs later\n", d->name); pciirq = 0; } else if (!pciirq) { - printk("%s: bad irq (%d): will probe later\n", d->name, pciirq); - pciirq = 0; + if (pci_class_ide) { + /* this is the normal path for most IDE devices */ + if (d->init_chipset) { + pciirq = d->init_chipset(dev, d->name); + } else { + printk(KERN_INFO + "%s standard IDE device detected\n", + d->name); + } + } else { + printk(KERN_WARNING + "%s: bad irq (0): will probe later\n", d->name); + } } else { if (d->init_chipset) (void) d->init_chipset(dev, d->name);