Index: sys/dev/iicbus/iicoc.c =================================================================== --- sys/dev/iicbus/iicoc.c +++ sys/dev/iicbus/iicoc.c @@ -68,6 +68,11 @@ int len, int *sent, int timeout); static int iicoc_repeated_start(device_t dev, u_char slave, int timeout); +struct pci_device_table iicoc_devs[] = { + {PCI_DEV(0x184e, 0x1011), + PCI_DESCR("0x1011")} +} + struct iicoc_softc { device_t dev; /* Self */ u_int reg_shift; /* Chip specific */ @@ -179,17 +184,17 @@ iicoc_probe(device_t dev) { struct iicoc_softc *sc; - + const struct pci_device_table *iicd; + sc = device_get_softc(dev); - if ((pci_get_vendor(dev) == 0x184e) && - (pci_get_device(dev) == 0x1011)) { - sc->clockfreq = XLP_I2C_CLKFREQ; - sc->i2cfreq = XLP_I2C_FREQ; - sc->reg_shift = 2; - device_set_desc(dev, "Netlogic XLP I2C Controller"); - return (BUS_PROBE_DEFAULT); - } - return (ENXIO); + iicd = PCI_MATCH(dev, iicoc_devs); + if (iicd == NULL) + return (ENXIO); + sc->clockfreq = XLP_I2C_CLKFREQ; + sc->i2cfreq = XLP_I2C_FREQ; + sc->reg_shift = 2; + device_set_desc(dev, iicd->descr); + return (BUS_PROBE_DEFAULT); } @@ -390,4 +395,5 @@ }; DRIVER_MODULE(iicoc, pci, iicoc_driver, iicoc_devclass, 0, 0); +PCI_PNP_INFO(iicoc_devs); DRIVER_MODULE(iicbus, iicoc, iicbus_driver, iicbus_devclass, 0, 0); Index: sys/dev/ipmi/ipmi_pci.c =================================================================== --- sys/dev/ipmi/ipmi_pci.c +++ sys/dev/ipmi/ipmi_pci.c @@ -51,42 +51,23 @@ static int ipmi_pci_probe(device_t dev); static int ipmi_pci_attach(device_t dev); -static struct ipmi_ident -{ - u_int16_t vendor; - u_int16_t device; - char *desc; -} ipmi_identifiers[] = { - {0x1028, 0x000d, "Dell PE2650 SMIC interface"}, - {0, 0, 0} +struct pci_device_table ipmi_identifiers[] = { + {PCI_DEV(0x1028, 0x000d), + PCI_DESCR("Dell PE2650 SMIC interface")} }; -const char * -ipmi_pci_match(uint16_t vendor, uint16_t device) -{ - struct ipmi_ident *m; - - for (m = ipmi_identifiers; m->vendor != 0; m++) - if (m->vendor == vendor && m->device == device) - return (m->desc); - return (NULL); -} - static int ipmi_pci_probe(device_t dev) { - const char *desc; + const struct pci_device_table *ipmd; if (ipmi_attached) return (ENXIO); - - desc = ipmi_pci_match(pci_get_vendor(dev), pci_get_device(dev)); - if (desc != NULL) { - device_set_desc(dev, desc); - return (BUS_PROBE_DEFAULT); - } - - return (ENXIO); + ipmd = PCI_MATCH(dev, ipmi_identifiers); + if (ipmd == NULL) + return (ENXIO); + device_set_desc(dev, ipmd->descr); + return (BUS_PROBE_DEFAULT); } static int @@ -179,20 +160,24 @@ }; DRIVER_MODULE(ipmi_pci, pci, ipmi_pci_driver, ipmi_devclass, 0, 0); +PCI_PNP_INFO(ipmi_identifiers); /* Native IPMI on PCI driver. */ +struct pci_device_table ipmi2_devs[] = { + {PCI_CLASS(PCI_SERIALBUS), PCI_SUBCLASS(PCIS_SERIALBUS_IPMI), + PCI_DESCR("IPMI System Interface")} +}; static int ipmi2_pci_probe(device_t dev) { + const struct pci_device_table *ipmi2d; - if (pci_get_class(dev) == PCIC_SERIALBUS && - pci_get_subclass(dev) == PCIS_SERIALBUS_IPMI) { - device_set_desc(dev, "IPMI System Interface"); - return (BUS_PROBE_GENERIC); - } - - return (ENXIO); + ipmi2d = PCI_MATCH(dev, ipmi2_devs); + if (ipmi2d == NULL) + return (ENXIO); + device_set_desc(dev, ipmi2d->descr); + return (BUS_PROBE_GENERIC); } static int @@ -292,3 +277,4 @@ }; DRIVER_MODULE(ipmi2_pci, pci, ipmi2_pci_driver, ipmi_devclass, 0, 0); +PCI_PNP_INFO(ipmi2_devs); Index: sys/dev/isp/isp_pci.c =================================================================== --- sys/dev/isp/isp_pci.c +++ sys/dev/isp/isp_pci.c @@ -304,6 +304,58 @@ #define PCI_DFLT_LTNCY 0x40 #define PCI_DFLT_LNSZ 0x10 +struct pci_device_table isp_devs[] = { + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP1020), + PCI_DESCR("Qlogic ISP 1020/1040 PCI SCSI Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP1080), + PCI_DESCR("Qlogic ISP 1080 PCI SCSI Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP1240), + PCI_DESCR("Qlogic ISP 1240 PCI SCSI Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP1280), + PCI_DESCR("Qlogic ISP 1280 PCI SCSI Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP10160), + PCI_DESCR("Qlogic ISP 10160 PCI SCSI Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP12160), + PCI_DESCR("Qlogic ISP 12160 PCI SCSI Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP1280), + PCI_DESCR("Qlogic ISP 1280 PCI SCSI Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2100), + PCI_DESCR("Qlogic ISP 2100 PCI FC-AL Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2200), + PCI_DESCR("Qlogic ISP 2200 PCI FC-AL Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2300), + PCI_DESCR("Qlogic ISP 2300 PCI FC-AL Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2312), + PCI_DESCR("Qlogic ISP 2312 PCI FC-AL Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2322), + PCI_DESCR("Qlogic ISP 2322 PCI FC-AL Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2422), + PCI_DESCR("Qlogic ISP 2422 PCI FC-AL Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2432), + PCI_DESCR("Qlogic ISP 2432 PCI FC-AL Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2532), + PCI_DESCR("Qlogic ISP 2532 PCI FC-AL Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP5432), + PCI_DESCR("Qlogic ISP 5432 PCI FC-AL Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP6312), + PCI_DESCR("Qlogic ISP 6312 PCI FC-AL Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP6322), + PCI_DESCR("Qlogic ISP 6322 PCI FC-AL Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2031), + PCI_DESCR("Qlogic ISP 2031 PCI FC-AL Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP8031), + PCI_DESCR("Qlogic ISP 8031 PCI FCoE Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2684), + PCI_DESCR("Qlogic ISP 2684 PCI FC Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2692), + PCI_DESCR("Qlogic ISP 2692 PCI FC Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2714), + PCI_DESCR("Qlogic ISP 2714 PCI FC Adapter")}, + {PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2722), + PCI_DESCR("Qlogic ISP 2722 PCI FC Adapter")} + +}; + static int isp_pci_probe (device_t); static int isp_pci_attach (device_t); static int isp_pci_detach (device_t); @@ -346,6 +398,7 @@ }; static devclass_t isp_devclass; DRIVER_MODULE(isp, pci, isp_pci_driver, isp_devclass, 0, 0); +PCI_PNP_INFO(isp_devs); MODULE_DEPEND(isp, cam, 1, 1, 1); MODULE_DEPEND(isp, firmware, 1, 1, 1); static int isp_nvports = 0; @@ -353,82 +406,15 @@ static int isp_pci_probe(device_t dev) { - switch ((pci_get_device(dev) << 16) | (pci_get_vendor(dev))) { - case PCI_QLOGIC_ISP1020: - device_set_desc(dev, "Qlogic ISP 1020/1040 PCI SCSI Adapter"); - break; - case PCI_QLOGIC_ISP1080: - device_set_desc(dev, "Qlogic ISP 1080 PCI SCSI Adapter"); - break; - case PCI_QLOGIC_ISP1240: - device_set_desc(dev, "Qlogic ISP 1240 PCI SCSI Adapter"); - break; - case PCI_QLOGIC_ISP1280: - device_set_desc(dev, "Qlogic ISP 1280 PCI SCSI Adapter"); - break; - case PCI_QLOGIC_ISP10160: - device_set_desc(dev, "Qlogic ISP 10160 PCI SCSI Adapter"); - break; - case PCI_QLOGIC_ISP12160: - if (pci_get_subvendor(dev) == AMI_RAID_SUBVENDOR_ID) { - return (ENXIO); - } - device_set_desc(dev, "Qlogic ISP 12160 PCI SCSI Adapter"); - break; - case PCI_QLOGIC_ISP2100: - device_set_desc(dev, "Qlogic ISP 2100 PCI FC-AL Adapter"); - break; - case PCI_QLOGIC_ISP2200: - device_set_desc(dev, "Qlogic ISP 2200 PCI FC-AL Adapter"); - break; - case PCI_QLOGIC_ISP2300: - device_set_desc(dev, "Qlogic ISP 2300 PCI FC-AL Adapter"); - break; - case PCI_QLOGIC_ISP2312: - device_set_desc(dev, "Qlogic ISP 2312 PCI FC-AL Adapter"); - break; - case PCI_QLOGIC_ISP2322: - device_set_desc(dev, "Qlogic ISP 2322 PCI FC-AL Adapter"); - break; - case PCI_QLOGIC_ISP2422: - device_set_desc(dev, "Qlogic ISP 2422 PCI FC-AL Adapter"); - break; - case PCI_QLOGIC_ISP2432: - device_set_desc(dev, "Qlogic ISP 2432 PCI FC-AL Adapter"); - break; - case PCI_QLOGIC_ISP2532: - device_set_desc(dev, "Qlogic ISP 2532 PCI FC-AL Adapter"); - break; - case PCI_QLOGIC_ISP5432: - device_set_desc(dev, "Qlogic ISP 5432 PCI FC-AL Adapter"); - break; - case PCI_QLOGIC_ISP6312: - device_set_desc(dev, "Qlogic ISP 6312 PCI FC-AL Adapter"); - break; - case PCI_QLOGIC_ISP6322: - device_set_desc(dev, "Qlogic ISP 6322 PCI FC-AL Adapter"); - break; - case PCI_QLOGIC_ISP2031: - device_set_desc(dev, "Qlogic ISP 2031 PCI FC-AL Adapter"); - break; - case PCI_QLOGIC_ISP8031: - device_set_desc(dev, "Qlogic ISP 8031 PCI FCoE Adapter"); - break; - case PCI_QLOGIC_ISP2684: - device_set_desc(dev, "Qlogic ISP 2684 PCI FC Adapter"); - break; - case PCI_QLOGIC_ISP2692: - device_set_desc(dev, "Qlogic ISP 2692 PCI FC Adapter"); - break; - case PCI_QLOGIC_ISP2714: - device_set_desc(dev, "Qlogic ISP 2714 PCI FC Adapter"); - break; - case PCI_QLOGIC_ISP2722: - device_set_desc(dev, "Qlogic ISP 2722 PCI FC Adapter"); - break; - default: + const struct pci_device_table ispd; + + ispd = PCI_MATCH(dev, isp_devs); + if (ispd == NULL) return (ENXIO); - } + else if (ispd->device == PCI_PRODUCT_QLOGIC_ISP12160 && + pci_get_subvendor(dev) == AMI_RAID_SUBVENDOR_ID) + return (ENXIO); + device_set_desc(dev, ispd->descr); if (isp_announced == 0 && bootverbose) { printf("Qlogic ISP Driver, FreeBSD Version %d.%d, " "Core Version %d.%d\n",