Index: sys/dev/alc/if_alc.c =================================================================== --- sys/dev/alc/if_alc.c +++ sys/dev/alc/if_alc.c @@ -239,6 +239,8 @@ static devclass_t alc_devclass; DRIVER_MODULE(alc, pci, alc_driver, alc_devclass, 0, 0); +MODULE_PNP_INFO("U16:vendor;U16:device", pci, alc, alc_ident_table, + sizeof(alc_ident_table[0]), nitems(alc_ident_table) - 1); DRIVER_MODULE(miibus, alc, miibus_driver, miibus_devclass, 0, 0); static struct resource_spec alc_res_spec_mem[] = { Index: sys/dev/amdsmb/amdsmb.c =================================================================== --- sys/dev/amdsmb/amdsmb.c +++ sys/dev/amdsmb/amdsmb.c @@ -125,20 +125,33 @@ static int amdsmb_detach(device_t dev); +static struct amdsmb_dev { + uint16_t vendorid; + uint16_t deviceid; + const char *description; +} amdsmb_devs[] = { + { AMDSMB_VENDORID_AMD, AMDSMB_DEVICEID_AMD8111_SMB2, + "AMD-8111 SMBus 2.0 Controller" }, +}; + static int amdsmb_probe(device_t dev) { + const struct amdsmb_dev *asd; u_int16_t vid; u_int16_t did; + size_t i; vid = pci_get_vendor(dev); did = pci_get_device(dev); if (vid == AMDSMB_VENDORID_AMD) { - switch(did) { - case AMDSMB_DEVICEID_AMD8111_SMB2: - device_set_desc(dev, "AMD-8111 SMBus 2.0 Controller"); - return (BUS_PROBE_DEFAULT); + for (i=0; ideviceid == did) { + device_set_desc(dev, asd->description); + return (BUS_PROBE_DEFAULT); + } } } @@ -578,6 +591,8 @@ }; DRIVER_MODULE(amdsmb, pci, amdsmb_driver, amdsmb_devclass, 0, 0); +MODULE_PNP_INFO("U16:vendor;U16:device;D:#", pci, amdsmb, amdsmb_devs, + sizeof(amdsmb_devs[0]), nitems(amdsmb_devs)); DRIVER_MODULE(smbus, amdsmb, smbus_driver, smbus_devclass, 0, 0); MODULE_DEPEND(amdsmb, pci, 1, 1, 1); Index: sys/dev/bfe/if_bfe.c =================================================================== --- sys/dev/bfe/if_bfe.c +++ sys/dev/bfe/if_bfe.c @@ -157,6 +157,8 @@ static devclass_t bfe_devclass; DRIVER_MODULE(bfe, pci, bfe_driver, bfe_devclass, 0, 0); +MODULE_PNP_INFO("U16:vendor;U16:device", pci, bfe, bfe_devs, + sizeof(bfe_devs[0]), nitems(bfe_devs) - 1); DRIVER_MODULE(miibus, bfe, miibus_driver, miibus_devclass, 0, 0); /* Index: sys/dev/bge/if_bge.c =================================================================== --- sys/dev/bge/if_bge.c +++ sys/dev/bge/if_bge.c @@ -543,6 +543,8 @@ static devclass_t bge_devclass; DRIVER_MODULE(bge, pci, bge_driver, bge_devclass, 0, 0); +MODULE_PNP_INFO("U16:vendor;U16:device", pci, bge, bge_devs, + sizeof(bge_devs), nitems(bge_devs) - 1); DRIVER_MODULE(miibus, bge, miibus_driver, miibus_devclass, 0, 0); static int bge_allow_asf = 1; Index: sys/dev/ce/if_ce.c =================================================================== --- sys/dev/ce/if_ce.c +++ sys/dev/ce/if_ce.c @@ -144,6 +144,15 @@ DEVMETHOD_END }; +static struct ce_dev { + uint16_t vendorid; + uint16_t deviceid; + const char *description; +} ce_devs[] = { + { TAU32_PCI_VENDOR_ID, TAU32_PCI_DEVICE_ID, + "Cronyx-Tau32-PCI serial adapter" }, +}; + typedef struct _ce_dma_mem_t { unsigned long phys; void *virt; @@ -2630,14 +2639,11 @@ #endif #ifdef KLD_MODULE DRIVER_MODULE (cemod, pci, ce_driver, ce_devclass, ce_modevent, NULL); +MODULE_PNP_INFO("U16:vendor; U16:device", pci, cemod, ce_devs, + sizeof(ce_devs[0]), nitems(ce_devs)); #else DRIVER_MODULE (ce, pci, ce_driver, ce_devclass, ce_modevent, NULL); +MODULE_PNP_INFO("U16:vendor; U16:device", pci, ce, ce_devs, + sizeof(ce_devs[0]), nitems(ce_devs)); #endif -#else /* if __FreeBSD_version < 500000*/ -#ifdef NETGRAPH -DRIVER_MODULE (ce, pci, ce_driver, ce_devclass, ng_mod_event, &typestruct); -#else -DRIVER_MODULE (ce, pci, ce_driver, ce_devclass, ce_modevent, NULL); -#endif -#endif /* __FreeBSD_version < 500000 */ #endif /* NPCI */ Index: sys/dev/ciss/ciss.c =================================================================== --- sys/dev/ciss/ciss.c +++ sys/dev/ciss/ciss.c @@ -204,73 +204,6 @@ static const char *ciss_name_ldrive_org(int org); static const char *ciss_name_command_status(int status); -/* - * PCI bus interface. - */ -static device_method_t ciss_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, ciss_probe), - DEVMETHOD(device_attach, ciss_attach), - DEVMETHOD(device_detach, ciss_detach), - DEVMETHOD(device_shutdown, ciss_shutdown), - { 0, 0 } -}; - -static driver_t ciss_pci_driver = { - "ciss", - ciss_methods, - sizeof(struct ciss_softc) -}; - -static devclass_t ciss_devclass; -DRIVER_MODULE(ciss, pci, ciss_pci_driver, ciss_devclass, 0, 0); -MODULE_DEPEND(ciss, cam, 1, 1, 1); -MODULE_DEPEND(ciss, pci, 1, 1, 1); - -/* - * Control device interface. - */ -static d_open_t ciss_open; -static d_close_t ciss_close; -static d_ioctl_t ciss_ioctl; - -static struct cdevsw ciss_cdevsw = { - .d_version = D_VERSION, - .d_flags = 0, - .d_open = ciss_open, - .d_close = ciss_close, - .d_ioctl = ciss_ioctl, - .d_name = "ciss", -}; - -/* - * This tunable can be set at boot time and controls whether physical devices - * that are marked hidden by the firmware should be exposed anyways. - */ -static unsigned int ciss_expose_hidden_physical = 0; -TUNABLE_INT("hw.ciss.expose_hidden_physical", &ciss_expose_hidden_physical); - -static unsigned int ciss_nop_message_heartbeat = 0; -TUNABLE_INT("hw.ciss.nop_message_heartbeat", &ciss_nop_message_heartbeat); - -/* - * This tunable can force a particular transport to be used: - * <= 0 : use default - * 1 : force simple - * 2 : force performant - */ -static int ciss_force_transport = 0; -TUNABLE_INT("hw.ciss.force_transport", &ciss_force_transport); - -/* - * This tunable can force a particular interrupt delivery method to be used: - * <= 0 : use default - * 1 : force INTx - * 2 : force MSIX - */ -static int ciss_force_interrupt = 0; -TUNABLE_INT("hw.ciss.force_interrupt", &ciss_force_interrupt); - /************************************************************************ * CISS adapters amazingly don't have a defined programming interface * value. (One could say some very despairing things about PCI and @@ -366,6 +299,76 @@ { 0, 0, 0, NULL } }; +/* + * PCI bus interface. + */ +static device_method_t ciss_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, ciss_probe), + DEVMETHOD(device_attach, ciss_attach), + DEVMETHOD(device_detach, ciss_detach), + DEVMETHOD(device_shutdown, ciss_shutdown), + { 0, 0 } +}; + +static driver_t ciss_pci_driver = { + "ciss", + ciss_methods, + sizeof(struct ciss_softc) +}; + +static devclass_t ciss_devclass; +DRIVER_MODULE(ciss, pci, ciss_pci_driver, ciss_devclass, 0, 0); +MODULE_PNP_INFO("U16:vendor;U16:device", pci, ciss, ciss_vendor_data, + sizeof(ciss_vendor_data[0]), nitems(ciss_vendor_data) - 1); +MODULE_DEPEND(ciss, cam, 1, 1, 1); +MODULE_DEPEND(ciss, pci, 1, 1, 1); + +/* + * Control device interface. + */ +static d_open_t ciss_open; +static d_close_t ciss_close; +static d_ioctl_t ciss_ioctl; + +static struct cdevsw ciss_cdevsw = { + .d_version = D_VERSION, + .d_flags = 0, + .d_open = ciss_open, + .d_close = ciss_close, + .d_ioctl = ciss_ioctl, + .d_name = "ciss", +}; + +/* + * This tunable can be set at boot time and controls whether physical devices + * that are marked hidden by the firmware should be exposed anyways. + */ +static unsigned int ciss_expose_hidden_physical = 0; +TUNABLE_INT("hw.ciss.expose_hidden_physical", &ciss_expose_hidden_physical); + +static unsigned int ciss_nop_message_heartbeat = 0; +TUNABLE_INT("hw.ciss.nop_message_heartbeat", &ciss_nop_message_heartbeat); + +/* + * This tunable can force a particular transport to be used: + * <= 0 : use default + * 1 : force simple + * 2 : force performant + */ +static int ciss_force_transport = 0; +TUNABLE_INT("hw.ciss.force_transport", &ciss_force_transport); + +/* + * This tunable can force a particular interrupt delivery method to be used: + * <= 0 : use default + * 1 : force INTx + * 2 : force MSIX + */ +static int ciss_force_interrupt = 0; +TUNABLE_INT("hw.ciss.force_interrupt", &ciss_force_interrupt); + + /************************************************************************ * Find a match for the device in our list of known adapters. */ Index: sys/dev/cp/if_cp.c =================================================================== --- sys/dev/cp/if_cp.c +++ sys/dev/cp/if_cp.c @@ -87,6 +87,15 @@ static int cp_attach __P((device_t)); static int cp_detach __P((device_t)); +static struct cp_dev { + uint16_t vendorid; + uint16_t deviceid; + const char *description; +} cp_devs[] = { + { cp_vendor_id, cp_device_id, + "Cronyx-Tau-PCI serial adapter" }, +}; + static device_method_t cp_methods[] = { /* Device interface */ DEVMETHOD(device_probe, cp_probe), @@ -201,9 +210,11 @@ static int cp_probe (device_t dev) { - if ((pci_get_vendor (dev) == cp_vendor_id) && - (pci_get_device (dev) == cp_device_id)) { - device_set_desc (dev, "Cronyx-Tau-PCI serial adapter"); + const struct cp_dev *cpd; + cpd = &cp_devs[0]; + if ((pci_get_vendor (dev) == cp->vendorid) && + (pci_get_device (dev) == cp->deviceid)) { + device_set_desc (dev, cp->description); return BUS_PROBE_DEFAULT; } return ENXIO; @@ -2266,4 +2277,6 @@ MODULE_DEPEND (cp, sppp, 1, 1, 1); #endif DRIVER_MODULE (cp, pci, cp_driver, cp_devclass, cp_modevent, NULL); +MODULE_PNP_INFO("U16:vendor;U16:device", pci, cp, cp_devs, + sizeof(cp_devs[0]), nitems(cp_devs)); MODULE_VERSION (cp, 1); Index: sys/dev/dc/if_dc.c =================================================================== --- sys/dev/dc/if_dc.c +++ sys/dev/dc/if_dc.c @@ -359,6 +359,8 @@ DRIVER_MODULE_ORDERED(dc, pci, dc_driver, dc_devclass, NULL, NULL, SI_ORDER_ANY); +MODULE_PNP_INFO("W32:vendor/device", pci, dc, dc_devs, + sizeof(dc_devs[0]), nitems(dc_devs) - 1); DRIVER_MODULE(miibus, dc, miibus_driver, miibus_devclass, NULL, NULL); #define DC_SETBIT(sc, reg, x) \ Index: sys/dev/dpt/dpt_pci.c =================================================================== --- sys/dev/dpt/dpt_pci.c +++ sys/dev/dpt/dpt_pci.c @@ -62,12 +62,29 @@ static int dpt_pci_probe (device_t); static int dpt_pci_attach (device_t); +static struct dpt_dev { + uint16_t vendorid; + uint16_t deviceid; + const char *description; +} dpt_devs[] = { + { DPT_VENDOR_ID, DPT_DEVICE_ID, + "DPT Caching SCSI RAID Controller"}, +}; + static int dpt_pci_probe (device_t dev) { - if ((pci_get_vendor(dev) == DPT_VENDOR_ID) && - (pci_get_device(dev) == DPT_DEVICE_ID)) { - device_set_desc(dev, "DPT Caching SCSI RAID Controller"); + const struct dpt_dev *dpd; + uint16_t vid; + uint16_t did; + + vid = pci_get_vendor(dev); + did = pci_get_device(dev); + + dpd = &dpt_devs[0]; + if ((vid == DPT_VENDOR_ID) && + (did == DPT_DEVICE_ID)) { + device_set_desc(dev, dpd->description); return (BUS_PROBE_DEFAULT); } return (ENXIO); @@ -185,5 +202,7 @@ }; DRIVER_MODULE(dpt, pci, dpt_pci_driver, dpt_devclass, 0, 0); +MODULE_PNP_INFO("U16:vendor;U16:device", pci, dpt, dpt_devs, + sizeof(dpt_devs[0]), nitems(dpt_devs)); MODULE_DEPEND(dpt, pci, 1, 1, 1); MODULE_DEPEND(dpt, cam, 1, 1, 1);