Index: sys/dev/malo/if_malo_pci.c =================================================================== --- sys/dev/malo/if_malo_pci.c +++ sys/dev/malo/if_malo_pci.c @@ -99,17 +99,13 @@ #define DEVICEID_MRVL_88W8335R1 0X1FAA #define DEVICEID_MRVL_88W8335R2 0X1FAB -static struct malo_product { - uint16_t mp_vendorid; - uint16_t mp_deviceid; - const char *mp_name; -} malo_products[] = { - { VENDORID_MARVELL, DEVICEID_MRVL_88W8310, - "Marvell Libertas 88W8310 802.11g Wireless Adapter" }, - { VENDORID_MARVELL, DEVICEID_MRVL_88W8335R1, - "Marvell Libertas 88W8335 802.11g Wireless Adapter" }, - { VENDORID_MARVELL, DEVICEID_MRVL_88W8335R2, - "Marvell Libertas 88W8335 802.11g Wireless Adapter" } +struct pci_device_table malo_devs[] = { + {PCI_DEV(VENDORID_MARVELL, DEVICEID_MRVL_88W8310), + PCI_DESCR("Marvell Libertas 88W8310 802.11g Wireless Adapter")}, + {PCI_DEV(VENDORID_MARVELL, DEVICEID_MRVL_88W8335R1), + PCI_DESCR("Marvell Libertas 88W8335 802.11g Wireless Adapter")}, + {PCI_DEV(VENDORID_MARVELL, DEVICEID_MRVL_88W8335R2), + PCI_DESCR("Marvell Libertas 88W8335 802.11g Wireless Adapter")} }; static struct resource_spec malo_res_spec_mem[] = { @@ -133,22 +129,13 @@ static int malo_pci_probe(device_t dev) { - struct malo_product *mp; - uint16_t vendor, devid; - int i; - - vendor = pci_get_vendor(dev); - devid = pci_get_device(dev); - mp = malo_products; - - for (i = 0; i < nitems(malo_products); i++, mp++) { - if (vendor == mp->mp_vendorid && devid == mp->mp_deviceid) { - device_set_desc(dev, mp->mp_name); - return (BUS_PROBE_DEFAULT); - } - } + const struct pci_device_table *mald; - return (ENXIO); + mald = PCI_MATCH(dev, malo_devs); + if (mald == NULL) + return (ENXIO); + device_set_desc(dev, mald->descr); + return (BUS_PROBE_DEFAULT); } static int @@ -349,6 +336,7 @@ static devclass_t malo_devclass; DRIVER_MODULE(malo, pci, malo_pci_driver, malo_devclass, 0, 0); +PCI_PNP_INFO(malo_devs); MODULE_VERSION(malo, 1); MODULE_DEPEND(malo, wlan, 1, 1, 1); /* 802.11 media layer */ MODULE_DEPEND(malo, firmware, 1, 1, 1); Index: sys/dev/mfi/mfi_pci.c =================================================================== --- sys/dev/mfi/mfi_pci.c +++ sys/dev/mfi/mfi_pci.c @@ -106,8 +106,6 @@ }; static devclass_t mfi_devclass; -DRIVER_MODULE(mfi, pci, mfi_pci_driver, mfi_devclass, 0, 0); -MODULE_VERSION(mfi, 1); static int mfi_msi = 1; SYSCTL_INT(_hw_mfi, OID_AUTO, msi, CTLFLAG_RDTUN, &mfi_msi, 0, @@ -159,6 +157,11 @@ {0, 0, 0, 0, 0, NULL} }; +DRIVER_MODULE(mfi, pci, mfi_pci_driver, mfi_devclass, 0, 0); +MODULE_PNP_INFO("U16:vendor;U16:device;U16:subvendor;U16:subdevice", pci, mfi, + mfi_identifiers, sizeof(mfi_identifiers[0]), nitems(mfi_identifiers) - 1); +MODULE_VERSION(mfi, 1); + static struct mfi_ident * mfi_find_ident(device_t dev) { Index: sys/dev/mwl/if_mwl_pci.c =================================================================== --- sys/dev/mwl/if_mwl_pci.c +++ sys/dev/mwl/if_mwl_pci.c @@ -84,46 +84,34 @@ #define BS_BAR0 0x10 #define BS_BAR1 0x14 -struct mwl_pci_ident { - uint16_t vendor; - uint16_t device; - const char *name; +struct pci_device_table mwl_devs[] = { + {PCI_DEV(0x11ab, 0x2a02), + PCI_DESCR("Marvell 88W8363")}, + {PCI_DEV(0x11ab, 0x2a03), + PCI_DESCR("Marvell 88W8363")}, + {PCI_DEV(0x11ab, 0x2a0a), + PCI_DESCR("Marvell 88W8363")}, + {PCI_DEV(0x11ab, 0x2a0b), + PCI_DESCR("Marvell 88W8363")}, + {PCI_DEV(0x11ab, 0x2a0c), + PCI_DESCR("Marvell 88W8363")}, + {PCI_DEV(0x11ab, 0x2a21), + PCI_DESCR("Marvell 88W8363")}, + {PCI_DEV(0x11ab, 0x2a24), + PCI_DESCR("Marvell 88W8363")} }; -static const struct mwl_pci_ident mwl_pci_ids[] = { - { 0x11ab, 0x2a02, "Marvell 88W8363" }, - { 0x11ab, 0x2a03, "Marvell 88W8363" }, - { 0x11ab, 0x2a0a, "Marvell 88W8363" }, - { 0x11ab, 0x2a0b, "Marvell 88W8363" }, - { 0x11ab, 0x2a0c, "Marvell 88W8363" }, - { 0x11ab, 0x2a21, "Marvell 88W8363" }, - { 0x11ab, 0x2a24, "Marvell 88W8363" }, - - { 0, 0, NULL } -}; - -const static struct mwl_pci_ident * -mwl_pci_lookup(int vendor, int device) -{ - const struct mwl_pci_ident *ident; - - for (ident = mwl_pci_ids; ident->name != NULL; ident++) - if (vendor == ident->vendor && device == ident->device) - return ident; - return NULL; -} static int mwl_pci_probe(device_t dev) { - const struct mwl_pci_ident *ident; + const struct pci_device_table *mwld; - ident = mwl_pci_lookup(pci_get_vendor(dev), pci_get_device(dev)); - if (ident != NULL) { - device_set_desc(dev, ident->name); - return BUS_PROBE_DEFAULT; - } - return ENXIO; + mwld = PCI_MATCH(dev, mwl_devs); + if (mwld == NULL) + return (ENXIO); + device_set_desc(dev, mwld->descr); + return (BUS_PROBE_DEFAULT); } static int @@ -290,6 +278,7 @@ }; static devclass_t mwl_devclass; DRIVER_MODULE(mwl, pci, mwl_pci_driver, mwl_devclass, 0, 0); +PCI_PNP_INFO(mwl_devs); MODULE_VERSION(mwl, 1); MODULE_DEPEND(mwl, wlan, 1, 1, 1); /* 802.11 media layer */ MODULE_DEPEND(mwl, firmware, 1, 1, 1); Index: sys/dev/nfe/if_nfe.c =================================================================== --- sys/dev/nfe/if_nfe.c +++ sys/dev/nfe/if_nfe.c @@ -183,110 +183,103 @@ static devclass_t nfe_devclass; -DRIVER_MODULE(nfe, pci, nfe_driver, nfe_devclass, 0, 0); -DRIVER_MODULE(miibus, nfe, miibus_driver, miibus_devclass, 0, 0); - -static struct nfe_type nfe_devs[] = { - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE_LAN, - "NVIDIA nForce MCP Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE2_LAN, - "NVIDIA nForce2 MCP2 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE2_400_LAN1, - "NVIDIA nForce2 400 MCP4 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE2_400_LAN2, - "NVIDIA nForce2 400 MCP5 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE3_LAN1, - "NVIDIA nForce3 MCP3 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE3_250_LAN, - "NVIDIA nForce3 250 MCP6 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE3_LAN4, - "NVIDIA nForce3 MCP7 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE4_LAN1, - "NVIDIA nForce4 CK804 MCP8 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE4_LAN2, - "NVIDIA nForce4 CK804 MCP9 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP04_LAN1, - "NVIDIA nForce MCP04 Networking Adapter"}, /* MCP10 */ - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP04_LAN2, - "NVIDIA nForce MCP04 Networking Adapter"}, /* MCP11 */ - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE430_LAN1, - "NVIDIA nForce 430 MCP12 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE430_LAN2, - "NVIDIA nForce 430 MCP13 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP55_LAN1, - "NVIDIA nForce MCP55 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP55_LAN2, - "NVIDIA nForce MCP55 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP61_LAN1, - "NVIDIA nForce MCP61 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP61_LAN2, - "NVIDIA nForce MCP61 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP61_LAN3, - "NVIDIA nForce MCP61 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP61_LAN4, - "NVIDIA nForce MCP61 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP65_LAN1, - "NVIDIA nForce MCP65 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP65_LAN2, - "NVIDIA nForce MCP65 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP65_LAN3, - "NVIDIA nForce MCP65 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP65_LAN4, - "NVIDIA nForce MCP65 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP67_LAN1, - "NVIDIA nForce MCP67 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP67_LAN2, - "NVIDIA nForce MCP67 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP67_LAN3, - "NVIDIA nForce MCP67 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP67_LAN4, - "NVIDIA nForce MCP67 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP73_LAN1, - "NVIDIA nForce MCP73 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP73_LAN2, - "NVIDIA nForce MCP73 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP73_LAN3, - "NVIDIA nForce MCP73 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP73_LAN4, - "NVIDIA nForce MCP73 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP77_LAN1, - "NVIDIA nForce MCP77 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP77_LAN2, - "NVIDIA nForce MCP77 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP77_LAN3, - "NVIDIA nForce MCP77 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP77_LAN4, - "NVIDIA nForce MCP77 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP79_LAN1, - "NVIDIA nForce MCP79 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP79_LAN2, - "NVIDIA nForce MCP79 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP79_LAN3, - "NVIDIA nForce MCP79 Networking Adapter"}, - {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP79_LAN4, - "NVIDIA nForce MCP79 Networking Adapter"}, - {0, 0, NULL} +struct pci_device_table nfe_devs[] = { + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE_LAN), + PCI_DESCR("NVIDIA nForce MCP Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE2_LAN), + PCI_DESCR("NVIDIA nForce2 MCP2 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE2_400_LAN1), + PCI_DESCR("NVIDIA nForce2 400 MCP4 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE2_400_LAN2), + PCI_DESCR("NVIDIA nForce2 400 MCP5 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE3_LAN1), + PCI_DESCR("NVIDIA nForce3 MCP3 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE3_250_LAN), + PCI_DESCR("NVIDIA nForce3 250 MCP6 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE3_LAN4), + PCI_DESCR("NVIDIA nForce3 MCP7 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE4_LAN1), + PCI_DESCR("NVIDIA nForce4 CK804 MCP8 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE4_LAN2), + PCI_DESCR("NVIDIA nForce4 CK804 MCP9 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP04_LAN1), + PCI_DESCR("NVIDIA nForce MCP04 Networking Adapter")}, /* MCP10 */ + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP04_LAN2), + PCI_DESCR("NVIDIA nForce MCP04 Networking Adapter")}, /* MCP11 */ + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE430_LAN1), + PCI_DESCR("NVIDIA nForce 430 MCP12 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_NFORCE430_LAN2), + PCI_DESCR("NVIDIA nForce 430 MCP13 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP55_LAN1), + PCI_DESCR("NVIDIA nForce MCP55 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP55_LAN2), + PCI_DESCR("NVIDIA nForce MCP55 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP61_LAN1), + PCI_DESCR("NVIDIA nForce MCP61 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP61_LAN2), + PCI_DESCR("NVIDIA nForce MCP61 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP61_LAN3), + PCI_DESCR("NVIDIA nForce MCP61 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP61_LAN4), + PCI_DESCR("NVIDIA nForce MCP61 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP65_LAN1), + PCI_DESCR("NVIDIA nForce MCP65 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP65_LAN2), + PCI_DESCR("NVIDIA nForce MCP65 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP65_LAN3), + PCI_DESCR("NVIDIA nForce MCP65 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP65_LAN4), + PCI_DESCR("NVIDIA nForce MCP65 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP67_LAN1), + PCI_DESCR("NVIDIA nForce MCP67 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP67_LAN2), + PCI_DESCR("NVIDIA nForce MCP67 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP67_LAN3), + PCI_DESCR("NVIDIA nForce MCP67 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP67_LAN4), + PCI_DESCR("NVIDIA nForce MCP67 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP73_LAN1), + PCI_DESCR("NVIDIA nForce MCP73 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP73_LAN2), + PCI_DESCR("NVIDIA nForce MCP73 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP73_LAN3), + PCI_DESCR("NVIDIA nForce MCP73 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP73_LAN4), + PCI_DESCR("NVIDIA nForce MCP73 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP77_LAN1), + PCI_DESCR("NVIDIA nForce MCP77 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP77_LAN2), + PCI_DESCR("NVIDIA nForce MCP77 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP77_LAN3), + PCI_DESCR("NVIDIA nForce MCP77 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP77_LAN4), + PCI_DESCR("NVIDIA nForce MCP77 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP79_LAN1), + PCI_DESCR("NVIDIA nForce MCP79 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP79_LAN2), + PCI_DESCR("NVIDIA nForce MCP79 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP79_LAN3), + PCI_DESCR("NVIDIA nForce MCP79 Networking Adapter")}, + {PCI_DEV(PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP79_LAN4), + PCI_DESCR("NVIDIA nForce MCP79 Networking Adapter")} }; +DRIVER_MODULE(nfe, pci, nfe_driver, nfe_devclass, 0, 0); +PCI_PNP_INFO(nfe_devs); +DRIVER_MODULE(miibus, nfe, miibus_driver, miibus_devclass, 0, 0); + /* Probe for supported hardware ID's */ static int nfe_probe(device_t dev) { - struct nfe_type *t; - - t = nfe_devs; - /* Check for matching PCI DEVICE ID's */ - while (t->name != NULL) { - if ((pci_get_vendor(dev) == t->vid_id) && - (pci_get_device(dev) == t->dev_id)) { - device_set_desc(dev, t->name); - return (BUS_PROBE_DEFAULT); - } - t++; - } + const struct pci_device_table *nfed; - return (ENXIO); + nfed = PCI_MATCH(dev, nfe_devs); + if (nfed == NULL) + return (ENXIO); + device_set_desc(dev, nfed->descr); + return (BUS_PROBE_DEFAULT); } static void Index: sys/dev/nfsmb/nfsmb.c =================================================================== --- sys/dev/nfsmb/nfsmb.c +++ sys/dev/nfsmb/nfsmb.c @@ -121,6 +121,37 @@ struct mtx lock; }; +struct pci_device_table nfsmb_devs[] = { + {PCI_DEV(NFSMB_VENDORID_NVIDIA, NFSMB_DEVICEID_NF2_SMB), + PCI_DESCR("nForce2/3/4 MCP SMBus Controller")}, + {PCI_DEV(NFSMB_VENDORID_NVIDIA, NFSMB_DEVICEID_NF2_ULTRA_SMB), + PCI_DESCR("nForce2/3/4 MCP SMBus Controller")}, + {PCI_DEV(NFSMB_VENDORID_NVIDIA, NFSMB_DEVICEID_NF3_PRO150_SMB), + PCI_DESCR("nForce2/3/4 MCP SMBus Controller")}, + {PCI_DEV(NFSMB_VENDORID_NVIDIA, NFSMB_DEVICEID_NF3_250GB_SMB), + PCI_DESCR("nForce2/3/4 MCP SMBus Controller")}, + {PCI_DEV(NFSMB_VENDORID_NVIDIA, NFSMB_DEVICEID_NF4_SMB), + PCI_DESCR("nForce2/3/4 MCP SMBus Controller")}, + {PCI_DEV(NFSMB_VENDORID_NVIDIA, NFSMB_DEVICEID_NF4_04_SMB), + PCI_DESCR("nForce2/3/4 MCP SMBus Controller")}, + {PCI_DEV(NFSMB_VENDORID_NVIDIA, NFSMB_DEVICEID_NF4_51_SMB), + PCI_DESCR("nForce2/3/4 MCP SMBus Controller")}, + {PCI_DEV(NFSMB_VENDORID_NVIDIA, NFSMB_DEVICEID_NF4_55_SMB), + PCI_DESCR("nForce2/3/4 MCP SMBus Controller")}, + {PCI_DEV(NFSMB_VENDORID_NVIDIA, NFSMB_DEVICEID_NF4_61_SMB), + PCI_DESCR("nForce2/3/4 MCP SMBus Controller")}, + {PCI_DEV(NFSMB_VENDORID_NVIDIA, NFSMB_DEVICEID_NF4_65_SMB), + PCI_DESCR("nForce2/3/4 MCP SMBus Controller")}, + {PCI_DEV(NFSMB_VENDORID_NVIDIA, NFSMB_DEVICEID_NF4_67_SMB), + PCI_DESCR("nForce2/3/4 MCP SMBus Controller")}, + {PCI_DEV(NFSMB_VENDORID_NVIDIA, NFSMB_DEVICEID_NF4_73_SMB), + PCI_DESCR("nForce2/3/4 MCP SMBus Controller")}, + {PCI_DEV(NFSMB_VENDORID_NVIDIA, NFSMB_DEVICEID_NF4_78S_SMB), + PCI_DESCR("nForce2/3/4 MCP SMBus Controller")}, + {PCI_DEV(NFSMB_VENDORID_NVIDIA, NFSMB_DEVICEID_NF4_79_SMB), + PCI_DESCR("nForce2/3/4 MCP SMBus Controller")}, +}; + #define NFSMB_LOCK(nfsmb) mtx_lock(&(nfsmb)->lock) #define NFSMB_UNLOCK(nfsmb) mtx_unlock(&(nfsmb)->lock) #define NFSMB_LOCK_ASSERT(nfsmb) mtx_assert(&(nfsmb)->lock, MA_OWNED) @@ -144,34 +175,13 @@ static int nfsmb_probe(device_t dev) { - u_int16_t vid; - u_int16_t did; - - vid = pci_get_vendor(dev); - did = pci_get_device(dev); - - if (vid == NFSMB_VENDORID_NVIDIA) { - switch(did) { - case NFSMB_DEVICEID_NF2_SMB: - case NFSMB_DEVICEID_NF2_ULTRA_SMB: - case NFSMB_DEVICEID_NF3_PRO150_SMB: - case NFSMB_DEVICEID_NF3_250GB_SMB: - case NFSMB_DEVICEID_NF4_SMB: - case NFSMB_DEVICEID_NF4_04_SMB: - case NFSMB_DEVICEID_NF4_51_SMB: - case NFSMB_DEVICEID_NF4_55_SMB: - case NFSMB_DEVICEID_NF4_61_SMB: - case NFSMB_DEVICEID_NF4_65_SMB: - case NFSMB_DEVICEID_NF4_67_SMB: - case NFSMB_DEVICEID_NF4_73_SMB: - case NFSMB_DEVICEID_NF4_78S_SMB: - case NFSMB_DEVICEID_NF4_79_SMB: - device_set_desc(dev, "nForce2/3/4 MCP SMBus Controller"); - return (BUS_PROBE_DEFAULT); - } - } + const struct pci_device_table *nfsd; - return (ENXIO); + nfsd = PCI_MATCH(dev, nfsmb_devs); + if (nfsd == NULL) + return (ENXIO); + device_set_desc(dev, nfsd->descr); + return (BUS_PROBE_DEFAULT); } static int @@ -649,6 +659,7 @@ }; DRIVER_MODULE(nfsmb, pci, nfsmb_driver, nfsmb_devclass, 0, 0); +PCI_PNP_INFO(nfsmb_devs); DRIVER_MODULE(nfsmb, nfsmb, nfsmbsub_driver, nfsmb_devclass, 0, 0); DRIVER_MODULE(smbus, nfsmb, smbus_driver, smbus_devclass, 0, 0); Index: sys/dev/nge/if_nge.c =================================================================== --- sys/dev/nge/if_nge.c +++ sys/dev/nge/if_nge.c @@ -142,10 +142,9 @@ /* * Various supported device vendors/types and their names. */ -static const struct nge_type nge_devs[] = { - { NGE_VENDORID, NGE_DEVICEID, - "National Semiconductor Gigabit Ethernet" }, - { 0, 0, NULL } +struct pci_device_table nge_devs[] = { + {PCI_DEV(NGE_VENDORID, NGE_DEVICEID), + PCI_DESCR("National Semiconductor Gigabit Ethernet")} }; static int nge_probe(device_t); @@ -243,6 +242,7 @@ static devclass_t nge_devclass; DRIVER_MODULE(nge, pci, nge_driver, nge_devclass, 0, 0); +PCI_PNP_INFO(nge_devs); DRIVER_MODULE(miibus, nge, miibus_driver, miibus_devclass, 0, 0); #define NGE_SETBIT(sc, reg, x) \ @@ -795,20 +795,13 @@ static int nge_probe(device_t dev) { - const struct nge_type *t; + const struct pci_device_table *nged; - t = nge_devs; - - while (t->nge_name != NULL) { - if ((pci_get_vendor(dev) == t->nge_vid) && - (pci_get_device(dev) == t->nge_did)) { - device_set_desc(dev, t->nge_name); - return (BUS_PROBE_DEFAULT); - } - t++; - } - - return (ENXIO); + nged = PCI_MATCH(dev, nge_devs); + if (nged == NULL) + return (ENXIO); + device_set_desc(dev, nged->descr); + return (BUS_PROBE_DEFAULT); } /* Index: sys/dev/ntb/ntb_hw/ntb_hw_plx.c =================================================================== --- sys/dev/ntb/ntb_hw/ntb_hw_plx.c +++ sys/dev/ntb/ntb_hw/ntb_hw_plx.c @@ -57,6 +57,19 @@ #define PLX_NUM_SPAD_PATT 4 /* Use test pattern as 4 more. */ #define PLX_NUM_DB 16 /* There are 16 doorbells. */ +#define PLX_VENDOR_ID 0x10b5 + +struct pci_device_table ntb_plx_devs[] = { + {PCI_DEV(PLX_VENDOR_ID, 0x87a0), + PCI_DESCR("PLX Non-Transparent Bridge NT0 Link")}, + {PCI_DEV(PLX_VENDOR_ID, 0x87a1), + PCI_DESCR("PLX Non-Transparent Bridge NT1 Link")}, + {PCI_DEV(PLX_VENDOR_ID, 0x87b0), + PCI_DESCR("PLX Non-Transparent Bridge NT0 Virtual")}, + {PCI_DEV(PLX_VENDOR_ID, 0x87b1), + PCI_DESCR("PLX Non-Transparent Bridge NT1 Virtual")} +}; + struct ntb_plx_mw_info { int mw_bar; int mw_64bit; @@ -144,22 +157,13 @@ static int ntb_plx_probe(device_t dev) { + const struct pci_device_table *ntbplxd; - switch (pci_get_devid(dev)) { - case 0x87a010b5: - device_set_desc(dev, "PLX Non-Transparent Bridge NT0 Link"); - return (BUS_PROBE_DEFAULT); - case 0x87a110b5: - device_set_desc(dev, "PLX Non-Transparent Bridge NT1 Link"); - return (BUS_PROBE_DEFAULT); - case 0x87b010b5: - device_set_desc(dev, "PLX Non-Transparent Bridge NT0 Virtual"); - return (BUS_PROBE_DEFAULT); - case 0x87b110b5: - device_set_desc(dev, "PLX Non-Transparent Bridge NT1 Virtual"); - return (BUS_PROBE_DEFAULT); - } - return (ENXIO); + ntbplxd = PCI_MATCH(dev, ntb_plx_devs); + if (ntbplxd == NULL) + return (ENXIO); + device_set_desc(dev, ntbplxd->descr); + return (BUS_PROBE_DEFAULT); } static int @@ -997,5 +1001,6 @@ static DEFINE_CLASS_0(ntb_hw, ntb_plx_driver, ntb_plx_methods, sizeof(struct ntb_plx_softc)); DRIVER_MODULE(ntb_hw_plx, pci, ntb_plx_driver, ntb_hw_devclass, NULL, NULL); +PCI_PNP_INFO(ntb_plx_devs); MODULE_DEPEND(ntb_hw_plx, ntb, 1, 1, 1); MODULE_VERSION(ntb_hw_plx, 1); Index: sys/dev/nvme/nvme.c =================================================================== --- sys/dev/nvme/nvme.c +++ sys/dev/nvme/nvme.c @@ -80,9 +80,6 @@ sizeof(struct nvme_controller), }; -DRIVER_MODULE(nvme, pci, nvme_pci_driver, nvme_devclass, nvme_modevent, 0); -MODULE_VERSION(nvme, 1); -MODULE_DEPEND(nvme, cam, 1, 1, 1); static struct _pcsid { @@ -109,6 +106,13 @@ { 0x00000000, 0, 0, NULL } }; + +DRIVER_MODULE(nvme, pci, nvme_pci_driver, nvme_devclass, nvme_modevent, 0); +MODULE_PNP_INFO("W32:vendor/device", pci, nvme, pci_ids, + sizeof(pci_ids[0]), nitems(pci_ids) - 1); +MODULE_VERSION(nvme, 1); +MODULE_DEPEND(nvme, cam, 1, 1, 1); + static int nvme_match(uint32_t devid, uint16_t subdevice, struct _pcsid *ep) { Index: sys/mips/nlm/dev/sec/nlmrsa.c =================================================================== --- sys/mips/nlm/dev/sec/nlmrsa.c +++ sys/mips/nlm/dev/sec/nlmrsa.c @@ -88,6 +88,10 @@ static int xlp_rsa_attach(device_t); static int xlp_rsa_detach(device_t); +struct pci_device_table xlp_rsa_devs[] = { + {PCI_VENDOR_NETLOGIC, PCI_DEVICE_ID_NLM_RSA} +}; + static device_method_t xlp_rsa_methods[] = { /* device interface */ DEVMETHOD(device_probe, xlp_rsa_probe), @@ -114,6 +118,7 @@ static devclass_t xlp_rsa_devclass; DRIVER_MODULE(nlmrsa, pci, xlp_rsa_driver, xlp_rsa_devclass, 0, 0); +PCI_PNP_INFO(xlp_rsa_devs); MODULE_DEPEND(nlmrsa, crypto, 1, 1, 1); #ifdef NLM_RSA_DEBUG @@ -254,13 +259,13 @@ xlp_rsa_probe(device_t dev) { struct xlp_rsa_softc *sc; + const struct pci_device_table *xlprsad; - if (pci_get_vendor(dev) == PCI_VENDOR_NETLOGIC && - pci_get_device(dev) == PCI_DEVICE_ID_NLM_RSA) { - sc = device_get_softc(dev); - return (BUS_PROBE_DEFAULT); - } - return (ENXIO); + xlprsad = PCI_MATCH(dev, xlp_rsa_devs); + if (xlprsad == NULL) + return (ENXIO); + sc = device_get_softc(dev); + return (BUS_PROBE_DEFAULT); } /* Index: sys/mips/nlm/dev/sec/nlmsec.c =================================================================== --- sys/mips/nlm/dev/sec/nlmsec.c +++ sys/mips/nlm/dev/sec/nlmsec.c @@ -87,6 +87,10 @@ static int xlp_sec_attach(device_t); static int xlp_sec_detach(device_t); +struct pci_device_table xlp_sec_devs[] = { + {PCI_DEV(PCI_VENDOR_NETLOGIC, PCI_DEVICE_ID_NLM_SAE)} +}; + static device_method_t xlp_sec_methods[] = { /* device interface */ DEVMETHOD(device_probe, xlp_sec_probe), @@ -113,6 +117,7 @@ static devclass_t xlp_sec_devclass; DRIVER_MODULE(nlmsec, pci, xlp_sec_driver, xlp_sec_devclass, 0, 0); +PCI_PNP_INFO(xlp_sec_devs); MODULE_DEPEND(nlmsec, crypto, 1, 1, 1); void @@ -359,13 +364,13 @@ xlp_sec_probe(device_t dev) { struct xlp_sec_softc *sc; + const struct pci_device_table *xlpsecd; - if (pci_get_vendor(dev) == PCI_VENDOR_NETLOGIC && - pci_get_device(dev) == PCI_DEVICE_ID_NLM_SAE) { - sc = device_get_softc(dev); - return (BUS_PROBE_DEFAULT); - } - return (ENXIO); + xlpsecd = PCI_MATCH(dev, xlp_sec_devs); + if (xlpsecd == NULL) + return (ENXIO); + sc = device_get_softc(dev); + return (BUS_PROBE_DEFAULT); } /*