Index: sys/dev/arcmsr/arcmsr.c =================================================================== --- sys/dev/arcmsr/arcmsr.c +++ sys/dev/arcmsr/arcmsr.c @@ -213,93 +213,87 @@ static d_close_t arcmsr_close; static d_ioctl_t arcmsr_ioctl; -static struct arcmsr_dev { - uint16_t vendorid; - uint32_t deviceid; - uint16_t subdeviceid; - char *description; -} arcmsr_devs[] = { - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1110, 0, - "Areca SATA 3G Host Adapter RAID Controller"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1200, 0, - "Areca SATA 3G Host Adapter RAID Controller"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1201, 0, - "Areca SATA 3G Host Adapter RAID Controller"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1210, 0, - "Areca SATA 3G Host Adapter RAID Controller"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1120, 0, - "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1130, 0, - "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1160, 0, - "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1170, 0, - "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1220, 0, - "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1230, 0, - "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1231, 0, - "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1260, 0, - "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1261, 0, - "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1270, 0, - "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1280, 0, - "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1212, 0, - "Areca SAS 3G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1222, 0, - "Areca SAS 3G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1380, 0, - "Areca SAS 3G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1381, 0, - "Areca SAS 3G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1680, 0, - "Areca SAS 3G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1681, 0, - "Areca SAS 3G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1880, 0, - "Areca SAS 6G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1882, 0, - "Areca SAS 6G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1213, 0, - "Areca SAS 6G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1223, 0, - "Areca SAS 6G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1880, ARECA_SUB_DEV_ID_1883, - "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1882, ARECA_SUB_DEV_ID_1883, - "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1213, ARECA_SUB_DEV_ID_1883, - "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1223, ARECA_SUB_DEV_ID_1883, - "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1880, ARECA_SUB_DEV_ID_1216, - "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1882, ARECA_SUB_DEV_ID_1216, - "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1213, ARECA_SUB_DEV_ID_1216, - "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1223, ARECA_SUB_DEV_ID_1216, - "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1880, ARECA_SUB_DEV_ID_1226, - "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1882, ARECA_SUB_DEV_ID_1226, - "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1213, ARECA_SUB_DEV_ID_1226, - "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1223, ARECA_SUB_DEV_ID_1226, - "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1884, 0, - "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1214, 0, - "Areca SATA 6G Host Adapter RAID Controller\n(RAID6 capable)"}, - {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1203, 0, - "Areca SATA 6G Host Adapter RAID Controller\n(RAID6 capable)"}, - {0, 0, 0, 0}, +struct pci_device_table arcmsr_devs[] = { + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1110), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SATA 3G Host Adapter RAID Controller")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1200), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SATA 3G Host Adapter RAID Controller")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1201), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SATA 3G Host Adapter RAID Controller")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1210), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SATA 3G Host Adapter RAID Controller")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1120), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1130), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1160), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1170), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1220), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1230), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1231), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1260), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1261), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1270), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1280), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1212), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SAS 3G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1222), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SAS 3G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1380), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SAS 3G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1381), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SAS 3G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1680), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SAS 3G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1681), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SAS 3G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1880), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SAS 6G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1882), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SAS 6G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1213), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SAS 6G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1223), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SAS 6G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1880), PCI_SUBDEV(0, ARECA_SUB_DEV_ID_1883), + PCI_DESCR("Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1882), PCI_SUBDEV(0, ARECA_SUB_DEV_ID_1883), + PCI_DESCR("Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1213), PCI_SUBDEV(0, ARECA_SUB_DEV_ID_1883), + PCI_DESCR("Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1223), PCI_SUBDEV(0, ARECA_SUB_DEV_ID_1883), + PCI_DESCR("Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1880), PCI_SUBDEV(0, ARECA_SUB_DEV_ID_1216), + PCI_DESCR("Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1882), PCI_SUBDEV(0, ARECA_SUB_DEV_ID_1216), + PCI_DESCR("Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1213), PCI_SUBDEV(0, ARECA_SUB_DEV_ID_1216), + PCI_DESCR("Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1223), PCI_SUBDEV(0, ARECA_SUB_DEV_ID_1216), + PCI_DESCR("Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1880), PCI_SUBDEV(0, ARECA_SUB_DEV_ID_1226), + PCI_DESCR("Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1882), PCI_SUBDEV(0, ARECA_SUB_DEV_ID_1226), + PCI_DESCR("Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1213), PCI_SUBDEV(0, ARECA_SUB_DEV_ID_1226), + PCI_DESCR("Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1223), PCI_SUBDEV(0, ARECA_SUB_DEV_ID_1226), + PCI_DESCR("Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1884), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1214), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SATA 6G Host Adapter RAID Controller\n(RAID6 capable)")}, + {PCI_DEV(PCI_VENDOR_ID_ARECA, PCI_DEVICE_ID_ARECA_1203), PCI_SUBDEV(0, 0), + PCI_DESCR("Areca SATA 6G Host Adapter RAID Controller\n(RAID6 capable)")}, }; @@ -324,8 +318,7 @@ static devclass_t arcmsr_devclass; DRIVER_MODULE(arcmsr, pci, arcmsr_driver, arcmsr_devclass, 0, 0); -MODULE_PNP_INFO("U16:vendor;W32:vendor/device;U16:subdevice;D:#", pci, arcmsr, - arcmsr_devs, sizeof(arcmsr_devs[0]), nitems(arcmsr_devs) - 1); +PCI_PNP_INFO(arcmsr_devs); MODULE_DEPEND(arcmsr, pci, 1, 1, 1); MODULE_DEPEND(arcmsr, cam, 1, 1, 1); #ifndef BUS_DMA_COHERENT @@ -5000,28 +4993,15 @@ */ static int arcmsr_probe(device_t dev) { - const struct arcmsr_dev *arcd; - u_int32_t did; - size_t i; - u_int16_t sub_device_id; + const struct pci_device_table *arcd; char buf[256]; - if (pci_get_vendor(dev) != PCI_VENDOR_ID_ARECA) { + arcd = PCI_MATCH(dev, arcmsr_devs); + if (arcd == NULL) return (ENXIO); - } - did = pci_get_devid(dev); - sub_device_id = pci_read_config(dev, PCIR_SUBDEV_0, 2); - for (i = 0; i < nitems(arcmsr_devs); i++) { - arcd = &arcmsr_devs[i]; - if ((arcd->deviceid == did) && - ((arcd->subdeviceid == sub_device_id) - || (arcd->subdeviceid == 0))) { - sprintf(buf, "%s\n%s\n", arcd->description, ARCMSR_DRIVER_VERSION); - device_set_desc_copy(dev, buf); - return (BUS_PROBE_DEFAULT); - } - } - return(ENXIO); + sprintf(buf, "%s\n%s\n", arcd->descr, ARCMSR_DRIVER_VERSION); + device_set_desc_copy(dev, buf); + return (BUS_PROBE_DEFAULT); } /* ************************************************************************ Index: sys/dev/bfe/if_bfe.c =================================================================== --- sys/dev/bfe/if_bfe.c +++ sys/dev/bfe/if_bfe.c @@ -71,12 +71,11 @@ #define BFE_DEVDESC_MAX 64 /* Maximum device description length */ -static struct bfe_type bfe_devs[] = { - { BCOM_VENDORID, BCOM_DEVICEID_BCM4401, - "Broadcom BCM4401 Fast Ethernet" }, - { BCOM_VENDORID, BCOM_DEVICEID_BCM4401B0, - "Broadcom BCM4401-B0 Fast Ethernet" }, - { 0, 0, NULL } +struct pci_device_table bfe_devs[] = { + {PCI_DEV(BCOM_VENDORID, BCOM_DEVICEID_BCM4401), + PCI_DESCR("Broadcom BCM4401 Fast Ethernet")}, + {PCI_DEV(BCOM_VENDORID, BCOM_DEVICEID_BCM4401B0), + PCI_DESCR("Broadcom BCM4401-B0 Fast Ethernet")} }; static int bfe_probe (device_t); @@ -157,8 +156,7 @@ static devclass_t bfe_devclass; DRIVER_MODULE(bfe, pci, bfe_driver, bfe_devclass, 0, 0); -MODULE_PNP_INFO("U16:vendor;U16:device;D:#", pci, bfe, bfe_devs, - sizeof(bfe_devs[0]), nitems(bfe_devs) - 1); +PCI_PNP_INFO(bfe_devs); DRIVER_MODULE(miibus, bfe, miibus_driver, miibus_devclass, 0, 0); /* @@ -167,20 +165,13 @@ static int bfe_probe(device_t dev) { - struct bfe_type *t; + const struct pci_device_table *bfed; - t = bfe_devs; - - while (t->bfe_name != NULL) { - if (pci_get_vendor(dev) == t->bfe_vid && - pci_get_device(dev) == t->bfe_did) { - device_set_desc(dev, t->bfe_name); - return (BUS_PROBE_DEFAULT); - } - t++; - } - - return (ENXIO); + bfed = PCI_MATCH(dev, bfe_devs); + if (bfed == NULL) + return (ENXIO); + device_set_desc(dev, bfed->descr); + return (BUS_PROBE_DEFAULT); } struct bfe_dmamap_arg { Index: sys/dev/bktr/bktr_os.c =================================================================== --- sys/dev/bktr/bktr_os.c +++ sys/dev/bktr/bktr_os.c @@ -211,23 +211,17 @@ static int bktr_shutdown( device_t dev ); static void bktr_intr(void *arg) { common_bktr_intr(arg); } -static struct bktr_dev { - uint16_t vendorid; - uint16_t deviceid; - uint8_t rev; - const char *description; -} bktr_devs[] = { - {PCI_VENDOR_BROOKTREE, PCI_PRODUCT_BROOKTREE_BT848, 0x12, - "BrookTree 848A"}, - {PCI_VENDOR_BROOKTREE, PCI_PRODUCT_BROOKTREE_BT848, 0, - "BrookTree 848"}, - {PCI_VENDOR_BROOKTREE, PCI_PRODUCT_BROOKTREE_BT849, 0, - "BrookTree 849A"}, - {PCI_VENDOR_BROOKTREE, PCI_PRODUCT_BROOKTREE_BT878, 0, - "BrookTree 878"}, - {PCI_VENDOR_BROOKTREE, PCI_PRODUCT_BROOKTREE_BT879, 0, - "BrookTree 879"}, - {0, 0, 0, NULL}, +struct pci_device_table bktr_devs[] = { + {PCI_DEV(PCI_VENDOR_BROOKTREE, PCI_PRODUCT_BROOKTREE_BT848), PCI_REVID(0x12), + PCI_DESCR("BrookTree 848A")}, + {PCI_DEV(PCI_VENDOR_BROOKTREE, PCI_PRODUCT_BROOKTREE_BT848), PCI_REVID(0), + PCI_DESCR("BrookTree 848")}, + {PCI_DEV(PCI_VENDOR_BROOKTREE, PCI_PRODUCT_BROOKTREE_BT849), PCI_REVID(0), + PCI_DESCR("BrookTree 849A")}, + {PCI_DEV(PCI_VENDOR_BROOKTREE, PCI_PRODUCT_BROOKTREE_BT878), PCI_REVID(0), + PCI_DESCR("BrookTree 878")}, + {PCI_DEV(PCI_VENDOR_BROOKTREE, PCI_PRODUCT_BROOKTREE_BT879), PCI_REVID(0), + PCI_DESCR("BrookTree 879")} }; static device_method_t bktr_methods[] = { @@ -293,8 +287,7 @@ MODULE_DEPEND(bktr, smbus, SMBUS_MINVER, SMBUS_MODVER, SMBUS_MAXVER); #endif DRIVER_MODULE(bktr, pci, bktr_driver, bktr_devclass, 0, 0); -MODULE_PNP_INFO("U16:vendor;U16:device", pci, bktr, bktr_devs, - sizeof(bktr_devs[0]), nitems(bktr_devs) - 1); +PCI_PNP_INFO(bktr_devs); MODULE_DEPEND(bktr, bktr_mem, 1,1,1); MODULE_VERSION(bktr, 1); @@ -305,38 +298,13 @@ static int bktr_probe( device_t dev ) { - unsigned int type = pci_get_devid(dev); - unsigned int rev = pci_get_revid(dev); - const struct bktr_dev *bktd; - uint16_t vid; - uint16_t did; - size_t i; - - vid = PCI_VENDOR(type); - did = PCI_PRODUCT(type); - - // XXX merge conflicts. Need to convert to PCI_MATCH instead. - if (BKTR_PCI_VENDOR(type) == PCI_VENDOR_BROOKTREE) - { - switch (BKTR_PCI_PRODUCT(type)) { - case PCI_PRODUCT_BROOKTREE_BT848: - if (rev == 0x12) - device_set_desc(dev, "BrookTree 848A"); - else - device_set_desc(dev, "BrookTree 848"); - return BUS_PROBE_DEFAULT; - case PCI_PRODUCT_BROOKTREE_BT849: - device_set_desc(dev, "BrookTree 849A"); - return BUS_PROBE_DEFAULT; - case PCI_PRODUCT_BROOKTREE_BT878: - device_set_desc(dev, "BrookTree 878"); - return BUS_PROBE_DEFAULT; - case PCI_PRODUCT_BROOKTREE_BT879: - device_set_desc(dev, "BrookTree 879"); - return BUS_PROBE_DEFAULT; - } - } - return ENXIO; + const struct pci_device_table *bktd; + + bktd = PCI_MATCH(dev, bktr_devs); + if (bktd == NULL) + return (ENXIO); + device_set_desc(dev, bktd->descr); + return (BUS_PROBE_DEFAULT); } Index: sys/dev/buslogic/bt_pci.c =================================================================== --- sys/dev/buslogic/bt_pci.c +++ sys/dev/buslogic/bt_pci.c @@ -56,16 +56,11 @@ #define PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER_NC 0x0140104Bul #define PCI_DEVICE_ID_BUSLOGIC_FLASHPOINT 0x8130104Bul -static struct bt_dev { - uint16_t vendorid; - uint32_t deviceid; - const char *description; -} bt_devs[] = { - {0x104B, PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER, - "Buslogic Multi-Master SCSI Host Adapter"}, - {0x104B, PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER_NC, - "Buslogic Multi-Master SCSI Host Adapter"}, - {0, 0, 0}, +struct pci_device_table bt_devs[] = { + {PCI_DEV(0x104B, 0x1040), + PCI_DESCR("Buslogic Multi-Master SCSI Host Adapter")}, + {PCI_DEV(0x104B, 0x0140), + PCI_DESCR("Buslogic Multi-Master SCSI Host Adapter")} }; static int @@ -118,53 +113,47 @@ static int bt_pci_probe(device_t dev) { - const struct bt_dev *btd; - uint32_t did; - size_t i; - - did = pci_get_devid(dev); - for (i = 0; i < nitems(bt_devs) - 1; i++) { - btd = &bt_devs[i]; - if (btd->deviceid == did) { - struct bt_softc *bt = device_get_softc(dev); - pci_info_data_t pci_info; - int error; - - error = bt_pci_alloc_resources(dev); - if (error) - return (error); - - /* - * Determine if an ISA compatible I/O port has been - * enabled. If so, record the port so it will not - * be probed by our ISA probe. If the PCI I/O port - * was not set to the compatibility port, disable it. - */ - error = bt_cmd(bt, BOP_INQUIRE_PCI_INFO, - /*param*/NULL, /*paramlen*/0, - (u_int8_t*)&pci_info, sizeof(pci_info), - DEFAULT_CMD_TIMEOUT); - if (error == 0 - && pci_info.io_port < BIO_DISABLED) { - bt_mark_probed_bio(pci_info.io_port); - if (rman_get_start(bt->port) != - bt_iop_from_bio(pci_info.io_port)) { - u_int8_t new_addr; - - new_addr = BIO_DISABLED; - bt_cmd(bt, BOP_MODIFY_IO_ADDR, - /*param*/&new_addr, - /*paramlen*/1, /*reply_buf*/NULL, - /*reply_len*/0, - DEFAULT_CMD_TIMEOUT); - } - } - bt_pci_release_resources(dev); - device_set_desc(dev, btd->description); - return (BUS_PROBE_DEFAULT); + const struct pci_device_table *btd; + + btd = PCI_MATCH(dev, bt_devs); + if (btd == NULL) + return (ENXIO); + struct bt_softc *bt = device_get_softc(dev); + pci_info_data_t pci_info; + int error; + + error = bt_pci_alloc_resources(dev); + if (error) + return (error); + + /* + * Determine if an ISA compatible I/O port has been + * enabled. If so, record the port so it will not + * be probed by our ISA probe. If the PCI I/O port + * was not set to the compatibility port, disable it. + */ + error = bt_cmd(bt, BOP_INQUIRE_PCI_INFO, + /*param*/NULL, /*paramlen*/0, + (u_int8_t*)&pci_info, sizeof(pci_info), + DEFAULT_CMD_TIMEOUT); + if (error == 0 + && pci_info.io_port < BIO_DISABLED) { + bt_mark_probed_bio(pci_info.io_port); + if (rman_get_start(bt->port) != + bt_iop_from_bio(pci_info.io_port)) { + u_int8_t new_addr; + + new_addr = BIO_DISABLED; + bt_cmd(bt, BOP_MODIFY_IO_ADDR, + /*param*/&new_addr, + /*paramlen*/1, /*reply_buf*/NULL, + /*reply_len*/0, + DEFAULT_CMD_TIMEOUT); } } - return (ENXIO); + bt_pci_release_resources(dev); + device_set_desc(dev, btd->descr); + return (BUS_PROBE_DEFAULT); } static int @@ -231,6 +220,5 @@ static devclass_t bt_devclass; DRIVER_MODULE(bt, pci, bt_pci_driver, bt_devclass, 0, 0); -MODULE_PNP_INFO("U16:vendor;W32:vendor/device;D:#", pci, bt, bt_devs, - sizeof(bt_devs[0]), nitems(bt_devs) - 1); +PCI_PNP_INFO(bt_devs); MODULE_DEPEND(bt, pci, 1, 1, 1); Index: sys/dev/ce/if_ce.c =================================================================== --- sys/dev/ce/if_ce.c +++ sys/dev/ce/if_ce.c @@ -322,9 +322,9 @@ ced = PCI_MATCH(dev, ce_devs); if (ced == NULL) - return ENXIO; - device_set_desc(dev, ced->description); - return BUS_PROBE_DEFAULT; + return (ENXIO); + device_set_desc(dev, ced->descr); + return (BUS_PROBE_DEFAULT); } static void ce_timeout (void *arg) @@ -2636,11 +2636,9 @@ #endif #ifdef KLD_MODULE DRIVER_MODULE (cemod, pci, ce_driver, ce_devclass, ce_modevent, NULL); -MODULE_PNP_INFO("U16:vendor; U16:device;D:#", pci, cemod, ce_devs, - sizeof(ce_devs[0]), nitems(ce_devs)); +PCI_PNP_INFO(ce_devs); #else DRIVER_MODULE (ce, pci, ce_driver, ce_devclass, ce_modevent, NULL); -MODULE_PNP_INFO("U16:vendor; U16:device;D:#", pci, ce, ce_devs, - sizeof(ce_devs[0]), nitems(ce_devs)); +PCI_PNP_INFO(ce_devs); #endif #endif /* NPCI */ Index: sys/dev/cp/if_cp.c =================================================================== --- sys/dev/cp/if_cp.c +++ sys/dev/cp/if_cp.c @@ -207,11 +207,11 @@ static int cp_probe (device_t dev) { const struct pci_device_table *cpd; - + cpd = PCI_MATCH(dev, cp_devs); if (cpd == NULL) return ENXIO; - device_set_desc(dev, cpd->description); + device_set_desc(dev, cpd->descr); return BUS_PROBE_DEFAULT; } Index: sys/dev/cy/cy_pci.c =================================================================== --- sys/dev/cy/cy_pci.c +++ sys/dev/cy/cy_pci.c @@ -70,13 +70,11 @@ static int cy_pci_attach(device_t dev); static int cy_pci_probe(device_t dev); -static struct cy_dev { - uint32_t deviceid; - const char *description; -} cy_devs[] = { - {0x0100120e, "Cyclades Cyclom-Y Serial Adapter"}, - {0x0101120e, "Cyclades Cyclom-Y Serial Adapter"}, - { 0, NULL }, +struct pci_device_table cy_devs[] = { + {PCI_DEV(0x120e, 0x0100), + PCI_DESCR("Cyclades Cyclom-Y Serial Adapter")}, + {PCI_DEV(0x120e, 0x0101), + PCI_DESCR("Cyclades Cyclom-Y Serial Adapter")} }; static device_method_t cy_pci_methods[] = { @@ -94,21 +92,24 @@ }; DRIVER_MODULE(cy, pci, cy_pci_driver, cy_devclass, 0, 0); -MODULE_PNP_INFO("U32:device", pci, cy, cy_devs, - sizeof(cy_devs[0]), nitems(cy_devs) - 1); +PCI_PNP_INFO(cy_devs); MODULE_DEPEND(cy, pci, 1, 1, 1); static int cy_pci_probe(dev) device_t dev; { + const struct pci_device_table *cyd; u_int32_t device_id; device_id = pci_get_devid(dev); device_id &= ~0x00060000; if (device_id != 0x0100120e && device_id != 0x0101120e) return (ENXIO); - device_set_desc(dev, "Cyclades Cyclom-Y Serial Adapter"); + cyd = PCI_MATCH(dev, cy_devs); + if (cyd == NULL) + return (ENXIO); + device_set_desc(dev, cyd->descr); return (BUS_PROBE_DEFAULT); } Index: sys/dev/dpt/dpt_pci.c =================================================================== --- sys/dev/dpt/dpt_pci.c +++ sys/dev/dpt/dpt_pci.c @@ -64,7 +64,7 @@ struct pci_device_table dpt_devs[] = { {PCI_DEV(DPT_VENDOR_ID, DPT_DEVICE_ID), - PCI_DESCR("DPT Caching SCSI RAID Controller")}, + PCI_DESCR("DPT Caching SCSI RAID Controller")} }; static int @@ -75,7 +75,7 @@ dpd = PCI_MATCH(dev, dpt_devs); if (dpd == NULL) return (ENXIO); - device_set_desc(dev, dpd->description); + device_set_desc(dev, dpd->descr); return (BUS_PROBE_DEFAULT); } Index: sys/dev/et/if_et.c =================================================================== --- sys/dev/et/if_et.c +++ sys/dev/et/if_et.c @@ -152,16 +152,11 @@ static void et_tick(void *); static void et_stats_update(struct et_softc *); -static const struct et_dev { - uint16_t vid; - uint16_t did; - const char *desc; -} et_devices[] = { - { PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_ET1310, - "Agere ET1310 Gigabit Ethernet" }, - { PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_ET1310_FAST, - "Agere ET1310 Fast Ethernet" }, - { 0, 0, NULL } +struct pci_device_table et_devices[] = { + {PCI_DEV(PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_ET1310), + PCI_DESCR("Agere ET1310 Gigabit Ethernet")}, + {PCI_DEV(PCI_VENDOR_LUCENT, PCI_PRODUCT_LUCENT_ET1310_FAST), + PCI_DESCR("Agere ET1310 Fast Ethernet")} }; static device_method_t et_methods[] = { @@ -188,8 +183,7 @@ static devclass_t et_devclass; DRIVER_MODULE(et, pci, et_driver, et_devclass, 0, 0); -MODULE_PNP_INFO("U16:vendor;U16:device;D:#", pci, et, et_devices, - sizeof(et_devices[0]), nitems(et_devices) - 1); +PCI_PNP_INFO(et_devices); DRIVER_MODULE(miibus, et, miibus_driver, miibus_devclass, 0, 0); static int et_rx_intr_npkts = 32; @@ -205,19 +199,13 @@ static int et_probe(device_t dev) { - const struct et_dev *d; - uint16_t did, vid; + const struct pci_device_table *etd; - vid = pci_get_vendor(dev); - did = pci_get_device(dev); - - for (d = et_devices; d->desc != NULL; ++d) { - if (vid == d->vid && did == d->did) { - device_set_desc(dev, d->desc); - return (BUS_PROBE_DEFAULT); - } - } - return (ENXIO); + etd = PCI_MATCH(dev, et_devices); + if (etd == NULL) + return (ENXIO); + device_set_desc(dev, etd->descr); + return (BUS_PROBE_DEFAULT); } static int Index: sys/dev/glxsb/glxsb.c =================================================================== --- sys/dev/glxsb/glxsb.c +++ sys/dev/glxsb/glxsb.c @@ -219,14 +219,9 @@ static void glxsb_crypto_task(void *, int); static int glxsb_crypto_process(device_t, struct cryptop *, int); -static struct glxsb_dev{ - uint16_t vendorid; - uint16_t deviceid; - const char *description; -} glxsb_devs[] = { - {PCI_VENDOR_AMD, PCI_PRODUCT_AMD_GEODE_LX_CRYPTO, - "AMD Geode LX Security Block (AES-128-CBC, RNG)"}, - {0, 0, NULL}, +struct pci_device_table glxsb_devs[] = { + {PCI_DEV(PCI_VENDOR_AMD, PCI_PRODUCT_AMD_GEODE_LX_CRYPTO), + PCI_DESCR("AMD Geode LX Security Block (AES-128-CBC, RNG)")} }; static device_method_t glxsb_methods[] = { @@ -252,31 +247,20 @@ static devclass_t glxsb_devclass; DRIVER_MODULE(glxsb, pci, glxsb_driver, glxsb_devclass, 0, 0); -MODULE_PNP_INFO("U16:vendor;U16:device", pci, glxsb, glxsb_devs, - sizeof(glxsb_devs[0]), nitems(glxsb_devs) - 1); +PCI_PNP_INFO(glxsb_devs); MODULE_VERSION(glxsb, 1); MODULE_DEPEND(glxsb, crypto, 1, 1, 1); static int glxsb_probe(device_t dev) { - uint16_t vid; - uint16_t did; - const struct glxsb_dev *glxd; - size_t i; - - vid = pci_get_vendor(dev); - did = pci_get_device(dev); - for(i=0; ivendorid && - did == glxd->deviceid){ - device_set_desc(dev, glxd->description); - return (BUS_PROBE_DEFAULT); - } - } + const struct pci_device_table *glxd; - return (ENXIO); + glxd = PCI_MATCH(dev, glxsb_devs); + if (glxd == NULL) + return (ENXIO); + device_set_desc(dev, glxd->descr); + return (BUS_PROBE_DEFAULT); } static int Index: sys/dev/hifn/hifn7751.c =================================================================== --- sys/dev/hifn/hifn7751.c +++ sys/dev/hifn/hifn7751.c @@ -106,18 +106,14 @@ static int hifn_freesession(device_t, u_int64_t); static int hifn_process(device_t, struct cryptop *, int); -static struct hifn_dev { - uint16_t vendorid; - uint16_t deviceid; -} hifn_devs[] = { - {PCI_VENDOR_INVERTEX, PCI_PRODUCT_INVERTEX_AEON}, - {PCI_VENDOR_HIFN, PCI_PRODUCT_HIFN_7751}, - {PCI_VENDOR_HIFN, PCI_PRODUCT_HIFN_7951}, - {PCI_VENDOR_HIFN, PCI_PRODUCT_HIFN_7955}, - {PCI_VENDOR_HIFN, PCI_PRODUCT_HIFN_7956}, - {PCI_VENDOR_HIFN, PCI_PRODUCT_HIFN_7811}, - {PCI_VENDOR_NETSEC, PCI_PRODUCT_NETSEC_7751}, - {0, 0}, +struct pci_device_table hifn_devs[] = { + {PCI_DEV(PCI_VENDOR_INVERTEX, PCI_PRODUCT_INVERTEX_AEON)}, + {PCI_DEV(PCI_VENDOR_HIFN, PCI_PRODUCT_HIFN_7751)}, + {PCI_DEV(PCI_VENDOR_HIFN, PCI_PRODUCT_HIFN_7951)}, + {PCI_DEV(PCI_VENDOR_HIFN, PCI_PRODUCT_HIFN_7955)}, + {PCI_DEV(PCI_VENDOR_HIFN, PCI_PRODUCT_HIFN_7956)}, + {PCI_DEV(PCI_VENDOR_HIFN, PCI_PRODUCT_HIFN_7811)}, + {PCI_DEV(PCI_VENDOR_NETSEC, PCI_PRODUCT_NETSEC_7751)} }; @@ -145,8 +141,7 @@ static devclass_t hifn_devclass; DRIVER_MODULE(hifn, pci, hifn_driver, hifn_devclass, 0, 0); -MODULE_PNP_INFO("U16:vendor;U16:device", pci, hifn, hifn_devs, - sizeof(hifn_devs[0]), nitems(hifn_devs) - 1); +PCI_PNP_INFO(hifn_devs); MODULE_DEPEND(hifn, crypto, 1, 1, 1); #ifdef HIFN_RNDTEST MODULE_DEPEND(hifn, rndtest, 1, 1, 1); @@ -222,21 +217,12 @@ static int hifn_probe(device_t dev) { - const struct hifn_dev *hifd; - size_t i; - u_int16_t vid; - u_int16_t did; - - vid = pci_get_vendor(dev); - did = pci_get_device(dev); - for (i = 0; i < nitems(hifn_devs); i++) { - hifd = &hifn_devs[i]; - if ((hifd->vendorid == vid) && - (hifd->deviceid == did)) { - return (BUS_PROBE_DEFAULT); - } - } - return (ENXIO); + const struct pci_device_table *hifd; + + hifd = PCI_MATCH(dev, hifn_devs); + if (hifd == NULL) + return (ENXIO); + return (BUS_PROBE_DEFAULT); } static void Index: sys/dev/hme/if_hme_pci.c =================================================================== --- sys/dev/hme/if_hme_pci.c +++ sys/dev/hme/if_hme_pci.c @@ -92,14 +92,9 @@ #define PCI_PRODUCT_SUN_EBUS 0x1000 #define PCI_PRODUCT_SUN_HMENETWORK 0x1001 -static struct hme_dev{ - uint16_t vendorid; - uint16_t deviceid; - const char *description; -} hme_devs[] = { - {PCI_VENDOR_SUN, PCI_PRODUCT_SUN_HMENETWORK, - "Sun HME 10/100 Ethernet"}, - {0, 0, NULL}, +struct pci_device_table hme_devs[] = { + {PCI_DEV(PCI_VENDOR_SUN, PCI_PRODUCT_SUN_HMENETWORK), + PCI_DESCR("Sun HME 10/100 Ethernet")} }; static device_method_t hme_pci_methods[] = { @@ -127,30 +122,20 @@ }; DRIVER_MODULE(hme, pci, hme_pci_driver, hme_devclass, 0, 0); -MODULE_PNP_INFO("U16:vendor;U16:device", pci, hme, hme_devs, - sizeof(hme_devs[0]), nitems(hme_devs) - 1); +PCI_PNP_INFO(hme_devs); MODULE_DEPEND(hme, pci, 1, 1, 1); MODULE_DEPEND(hme, ether, 1, 1, 1); int hme_pci_probe(device_t dev) { - const struct hme_dev *hmed; - uint16_t vid; - uint16_t did; - size_t i; - - vid = pci_get_vendor(dev); - did = pci_get_device(dev); - - for(i=0; ivendorid && did == hmed->deviceid){ - device_set_desc(dev, hmed->description); - return (BUS_PROBE_DEFAULT); - } - } - return (ENXIO); + const struct pci_device_table *hmed; + + hmed = PCI_MATCH(dev, hme_devs); + if (hmed == NULL) + return (ENXIO); + device_set_desc(dev, hmed->descr); + return (BUS_PROBE_DEFAULT); } int Index: sys/dev/ipw/if_ipw.c =================================================================== --- sys/dev/ipw/if_ipw.c +++ sys/dev/ipw/if_ipw.c @@ -102,10 +102,9 @@ const char *name; }; -static const struct ipw_ident ipw_ident_table[] = { - { 0x8086, 0x1043, "Intel(R) PRO/Wireless 2100 MiniPCI" }, - - { 0, 0, NULL } +struct pci_device_table ipw_ident_table[] = { + {PCI_DEV(0x8086, 0x1043), + PCI_DESCR("Intel(R) PRO/Wireless 2100 MiniPCI")} }; static struct ieee80211vap *ipw_vap_create(struct ieee80211com *, @@ -202,24 +201,20 @@ static devclass_t ipw_devclass; DRIVER_MODULE(ipw, pci, ipw_driver, ipw_devclass, NULL, NULL); -MODULE_PNP_INFO("U16:vendor;U16:device;D:#", pci, ipw, ipw_ident_table, - sizeof(ipw_ident_table[0]), nitems(ipw_ident_table) - 1); +PCI_PNP_INFO(ipw_ident_table); MODULE_VERSION(ipw, 1); static int ipw_probe(device_t dev) { - const struct ipw_ident *ident; + const struct pci_device_table *ident; - for (ident = ipw_ident_table; ident->name != NULL; ident++) { - if (pci_get_vendor(dev) == ident->vendor && - pci_get_device(dev) == ident->device) { - device_set_desc(dev, ident->name); - return (BUS_PROBE_DEFAULT); - } - } - return ENXIO; + ident = PCI_MATCH(dev, ipw_ident_table); + if (ident == NULL) + return (ENXIO); + device_set_desc(dev, ident->descr); + return (BUS_PROBE_DEFAULT); } /* Base Address Register */ Index: sys/dev/sound/pci/emu10k1.c =================================================================== --- sys/dev/sound/pci/emu10k1.c +++ sys/dev/sound/pci/emu10k1.c @@ -53,7 +53,11 @@ #define EMUMAXPAGES (WAVEOUT_MAXBUFSIZE * NUM_G / EMUPAGESIZE) #define EMU10K1_PCI_ID 0x00021102 /* 1102 => Creative Labs Vendor ID */ #define EMU10K2_PCI_ID 0x00041102 -#define EMU10K3_PCI_ID 0x00081102 +#define EMU10K3_PCI_ID 0x00081102 +#define CREATIVE_LABS_VENDOR_ID 0x1102 +#define EMU10K1_DEVICE_ID 0x0002 +#define EMU10K2_DEVICE_ID 0x0004 +#define EMU10K3_DEVICE_ID 0x0008 #define EMU_DEFAULT_BUFSZ 4096 #define EMU_MAX_CHANS 8 #define EMU_CHANS 4 @@ -157,25 +161,22 @@ #define A_EXTOUT_ADC_CAP_L 0x16 #define A_EXTOUT_ADC_CAP_R 0x17 -static struct emu_pci_dev { - uint32_t devid; - const char *description; - uint8_t rev; -} emu_pci_devs[] = { - {EMU10K1_PCI_ID, "Creative EMU10K1", 0}, - {EMU10K2_PCI_ID, "Creative Audigy (EMU10K2)", 0}, - {EMU10K2_PCI_ID, "Creative Audigy 2 (EMU10K2)", 0x04}, - {EMU10K3_PCI_ID, "Creative Audigy 2 (EMU10K3)", 0}, - {0, 0, 0}, +struct pci_device_table emu_pci_devs[] = { + {PCI_DEV(CREATIVE_LABS_VENDOR_ID, EMU10K1_DEVICE_ID), + PCI_DESCR("Creative EMU10K1"), PCI_REVID(0)}, + {PCI_DEV(CREATIVE_LABS_VENDOR_ID, EMU10K2_DEVICE_ID), + PCI_DESCR("Creative Audigy (EMU10K2)"), PCI_REVID(0)}, + {PCI_DEV(CREATIVE_LABS_VENDOR_ID, EMU10K2_DEVICE_ID), + PCI_DESCR("Creative Audigy 2 (EMU10K2)"), PCI_REVID(0x04)}, + {PCI_DEV(CREATIVE_LABS_VENDOR_ID, EMU10K3_DEVICE_ID), + PCI_DESCR("Creative Audigy 2 (EMU10K3)"), PCI_REVID(0)} }; -static struct emujoy_pci_dev { - uint32_t devid; - const char *description; -} emujoy_pci_devs[] = { - {0x70021102, "Creative EMU10K1 Joystick"}, - {0x70031102, "Creative EMU10K2 Joystick"}, - {0, 0}, +struct pci_device_table emujoy_pci_devs[] = { + {PCI_DEV(0x1102, 0x7002), + PCI_DESCR("Creative EMU10K1 Joystick")}, + {PCI_DEV(0x1102, 0x7003), + PCI_DESCR("Creative EMU10K2 Joystick")} }; struct emu_memblk { @@ -2065,22 +2066,13 @@ static int emu_pci_probe(device_t dev) { - const struct emu_pci_dev *emud; - uint32_t devid; - size_t i; - uint8_t rev; - - devid = pci_get_devid(dev); - rev = pci_get_revid(dev); - for (i = 0; i < nitems(emu_pci_devs); i++) { - emud = &emu_pci_devs[i]; - if ((emud->devid == devid) && - ((emud->rev == rev) || emud->rev == 0)) { - device_set_desc(dev, emud->description); - return BUS_PROBE_LOW_PRIORITY; - } - } - return ENXIO; + const struct pci_device_table *emud; + + emud = PCI_MATCH(dev, emu_pci_devs); + if (emud == NULL) + return (ENXIO); + device_set_desc(dev, emud->descr); + return (BUS_PROBE_LOW_PRIORITY); } @@ -2214,8 +2206,7 @@ }; DRIVER_MODULE(snd_emu10k1, pci, emu_driver, pcm_devclass, NULL, NULL); -MODULE_PNP_INFO("W32:vendor/device;D:#", pci, snd_emu101k1, - emu_pci_devs, sizeof(emu_pci_devs[0]), nitems(emu_pci_devs) - 1); +PCI_PNP_INFO(emu_pci_devs); MODULE_DEPEND(snd_emu10k1, sound, SOUND_MINVER, SOUND_PREFVER, SOUND_MAXVER); MODULE_VERSION(snd_emu10k1, 1); MODULE_DEPEND(snd_emu10k1, midi, 1, 1, 1); @@ -2224,20 +2215,14 @@ static int emujoy_pci_probe(device_t dev) { - const struct emujoy_pci_dev *emujd; - size_t i; - uint32_t devid; - - devid = pci_get_devid(dev); - for (i = 0; i < nitems(emujoy_pci_devs); i++) { - emujd = &emujoy_pci_devs[i]; - if(emujd->devid == devid) { - device_set_desc(dev, emujd->description); - device_quiet(dev); - return -1000; - } - } - return ENXIO; + const struct pci_device_table *emujd; + + emujd = PCI_MATCH(dev, emujoy_pci_devs); + if (emujd == NULL) + return (ENXIO); + device_set_desc(dev, emujd->descr); + device_quiet(dev); + return -1000; } static int @@ -2271,5 +2256,4 @@ static devclass_t emujoy_devclass; DRIVER_MODULE(emujoy, pci, emujoy_driver, emujoy_devclass, NULL, NULL); -MODULE_PNP_INFO("W32:vendor/device;D:#", pci, emujoy, emujoy_pci_devs, - sizeof(emujoy_pci_devs[0]), nitems(emujoy_pci_devs) - 1); +PCI_PNP_INFO(emujoy_pci_devs); Index: sys/sparc64/ebus/ebus.c =================================================================== --- sys/sparc64/ebus/ebus.c +++ sys/sparc64/ebus/ebus.c @@ -200,14 +200,11 @@ BUS_PASS_BUS + 1); MODULE_DEPEND(ebus, nexus, 1, 1, 1); -static struct ebus_pci_dev { - uint16_t vendorid; - uint16_t deviceid; - const char *description; -} ebus_pci_devs[] = { - {0x108e, 0x1000, "PCI-EBus2 bridge"}, - {0x108e, 0x1100, "PCI-EBus3 bridge"}, - {0, 0, 0}, +struct pci_device_table ebus_pci_devs[] = { + {PCI_DEV(0x108e, 0x1000), + PCI_DESCR("PCI-EBus2 bridge")}, + {PCI_DEV(0x108e, 0x1100), + PCI_DESCR("PCI-EBus3 bridge")} } static device_method_t ebus_pci_methods[] = { @@ -250,8 +247,7 @@ EARLY_DRIVER_MODULE(ebus, pci, ebus_pci_driver, ebus_devclass, 0, 0, BUS_PASS_BUS); -MODULE_PNP_INFO("U16:vendor;U16:device;D:#", pci, ebus, ebus_pci_devs, - sizeof(ebus_pci_devs[0]), nitems(ebus_pci_devs) - 1); +PCI_PNP_INFO(ebus_pci_devs); MODULE_DEPEND(ebus, pci, 1, 1, 1); MODULE_VERSION(ebus, 1); @@ -272,23 +268,20 @@ static int ebus_pci_probe(device_t dev) { - const struct ebus_pci_dev *ebd; + const struct pci_device_table *ebd; uint16_t did; - size_t i; did = pci_get_device(dev); if (pci_get_class(dev) != PCIC_BRIDGE || pci_get_vendor(dev) != 0x108e || strcmp(ofw_bus_get_name(dev), "ebus") != 0) return (ENXIO); - for (i = 0; i < nitems(ebus_pci_devs) - 1; i++) { - ebd = &ebus_pci_devs[i]; - if (did == ebd->deviceid) { - device_set_desc(dev, ebd->description); - return (BUS_PROBE_GENERIC); - } - } - return (ENXIO); + + ebd = PCI_MATCH(dev, ebus_pci_devs); + if (ebd == NULL) + return (ENXIO); + device_set_desc(dev, ebd->descr); + return (BUS_PROBE_GENERIC); } static int