Messages in this thread Patch in this message | | | Date | Mon, 03 Jun 2002 17:41:40 -0700 | From | Andrew Morton <> | Subject | [patch] PCI device matching fix |
| |
The new pci_device_probe() is always passing the zeroeth entry in the id_table to the device's probe method. It needs to scan that table for the correct ID first.
This fixes the recent 3c59x strangenesses.
--- 2.5.20/drivers/pci/pci-driver.c~pci-scan Mon Jun 3 17:37:59 2002 +++ 2.5.20-akpm/drivers/pci/pci-driver.c Mon Jun 3 17:38:03 2002 @@ -38,12 +38,19 @@ pci_match_device(const struct pci_device static int pci_device_probe(struct device * dev) { int error = 0; + struct pci_driver *drv; + struct pci_dev *pci_dev; - struct pci_driver * drv = list_entry(dev->driver,struct pci_driver,driver); - struct pci_dev * pci_dev = list_entry(dev,struct pci_dev,dev); + drv = list_entry(dev->driver, struct pci_driver, driver); + pci_dev = list_entry(dev, struct pci_dev, dev); - if (drv->probe) - error = drv->probe(pci_dev,drv->id_table); + if (drv->probe) { + const struct pci_device_id *id; + + id = pci_match_device(drv->id_table, pci_dev); + if (id) + error = drv->probe(pci_dev, id); + } return error > 0 ? 0 : -ENODEV; } - - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |