Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Dec 2015 05:28:01 +0000 (UTC)
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r292080 - in head/sys: dev/sound/usb dev/usb dev/usb/input dev/usb/misc dev/usb/net dev/usb/serial dev/usb/storage dev/usb/wlan netgraph/bluetooth/drivers/ubt netgraph/bluetooth/drivers...
Message-ID:  <201512110528.tBB5S1rW012042@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: imp
Date: Fri Dec 11 05:28:00 2015
New Revision: 292080
URL: https://svnweb.freebsd.org/changeset/base/292080

Log:
  Create a USB_PNP_INFO and use it to export the existing PNP
  tables. Some drivers needed some slight re-arrangement of declarations
  to accommodate this. Change the USB pnp tables slightly to allow
  better compatibility with the system by moving linux driver info from
  start of each entry to the end. All other PNP tables in the system
  have the per-device flags and such at the end of the elements rather
  that at the beginning.
  
  Differential Review: https://reviews.freebsd.org/D3458

Modified:
  head/sys/dev/sound/usb/uaudio.c
  head/sys/dev/usb/input/atp.c
  head/sys/dev/usb/input/uep.c
  head/sys/dev/usb/input/uhid.c
  head/sys/dev/usb/input/ukbd.c
  head/sys/dev/usb/input/ums.c
  head/sys/dev/usb/input/wsp.c
  head/sys/dev/usb/misc/udbp.c
  head/sys/dev/usb/misc/ufm.c
  head/sys/dev/usb/misc/ugold.c
  head/sys/dev/usb/misc/uled.c
  head/sys/dev/usb/net/if_aue.c
  head/sys/dev/usb/net/if_axe.c
  head/sys/dev/usb/net/if_axge.c
  head/sys/dev/usb/net/if_cdce.c
  head/sys/dev/usb/net/if_cue.c
  head/sys/dev/usb/net/if_ipheth.c
  head/sys/dev/usb/net/if_kue.c
  head/sys/dev/usb/net/if_mos.c
  head/sys/dev/usb/net/if_rue.c
  head/sys/dev/usb/net/if_smsc.c
  head/sys/dev/usb/net/if_udav.c
  head/sys/dev/usb/net/if_urndis.c
  head/sys/dev/usb/net/if_usie.c
  head/sys/dev/usb/net/uhso.c
  head/sys/dev/usb/serial/u3g.c
  head/sys/dev/usb/serial/uark.c
  head/sys/dev/usb/serial/ubsa.c
  head/sys/dev/usb/serial/uchcom.c
  head/sys/dev/usb/serial/ucycom.c
  head/sys/dev/usb/serial/ufoma.c
  head/sys/dev/usb/serial/uftdi.c
  head/sys/dev/usb/serial/ugensa.c
  head/sys/dev/usb/serial/uipaq.c
  head/sys/dev/usb/serial/ulpt.c
  head/sys/dev/usb/serial/umcs.c
  head/sys/dev/usb/serial/umct.c
  head/sys/dev/usb/serial/umodem.c
  head/sys/dev/usb/serial/umoscom.c
  head/sys/dev/usb/serial/uplcom.c
  head/sys/dev/usb/serial/uslcom.c
  head/sys/dev/usb/serial/uvisor.c
  head/sys/dev/usb/serial/uvscom.c
  head/sys/dev/usb/storage/umass.c
  head/sys/dev/usb/storage/urio.c
  head/sys/dev/usb/usb_hub.c
  head/sys/dev/usb/usbdi.h
  head/sys/dev/usb/wlan/if_rsu.c
  head/sys/dev/usb/wlan/if_rum.c
  head/sys/dev/usb/wlan/if_run.c
  head/sys/dev/usb/wlan/if_uath.c
  head/sys/dev/usb/wlan/if_upgt.c
  head/sys/dev/usb/wlan/if_ural.c
  head/sys/dev/usb/wlan/if_urtw.c
  head/sys/dev/usb/wlan/if_urtwn.c
  head/sys/dev/usb/wlan/if_zyd.c
  head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c
  head/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c

Modified: head/sys/dev/sound/usb/uaudio.c
==============================================================================
--- head/sys/dev/sound/usb/uaudio.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/sound/usb/uaudio.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -6118,3 +6118,4 @@ DRIVER_MODULE_ORDERED(uaudio, uhub, uaud
 MODULE_DEPEND(uaudio, usb, 1, 1, 1);
 MODULE_DEPEND(uaudio, sound, SOUND_MINVER, SOUND_PREFVER, SOUND_MAXVER);
 MODULE_VERSION(uaudio, 1);
+USB_PNP_HOST_INFO(uaudio_devs);

Modified: head/sys/dev/usb/input/atp.c
==============================================================================
--- head/sys/dev/usb/input/atp.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/input/atp.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -2630,3 +2630,5 @@ static driver_t atp_driver = {
 DRIVER_MODULE(atp, uhub, atp_driver, atp_devclass, NULL, 0);
 MODULE_DEPEND(atp, usb, 1, 1, 1);
 MODULE_VERSION(atp, 1);
+USB_PNP_HOST_INFO(fg_devs);
+USB_PNP_HOST_INFO(wsp_devs);

Modified: head/sys/dev/usb/input/uep.c
==============================================================================
--- head/sys/dev/usb/input/uep.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/input/uep.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -441,3 +441,4 @@ static driver_t uep_driver = {
 DRIVER_MODULE(uep, uhub, uep_driver, uep_devclass, NULL, NULL);
 MODULE_DEPEND(uep, usb, 1, 1, 1);
 MODULE_VERSION(uep, 1);
+USB_PNP_HOST_INFO(uep_devs);

Modified: head/sys/dev/usb/input/uhid.c
==============================================================================
--- head/sys/dev/usb/input/uhid.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/input/uhid.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -878,3 +878,4 @@ static driver_t uhid_driver = {
 DRIVER_MODULE(uhid, uhub, uhid_driver, uhid_devclass, NULL, 0);
 MODULE_DEPEND(uhid, usb, 1, 1, 1);
 MODULE_VERSION(uhid, 1);
+USB_PNP_HOST_INFO(uhid_devs);

Modified: head/sys/dev/usb/input/ukbd.c
==============================================================================
--- head/sys/dev/usb/input/ukbd.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/input/ukbd.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -2178,3 +2178,4 @@ static driver_t ukbd_driver = {
 DRIVER_MODULE(ukbd, uhub, ukbd_driver, ukbd_devclass, ukbd_driver_load, 0);
 MODULE_DEPEND(ukbd, usb, 1, 1, 1);
 MODULE_VERSION(ukbd, 1);
+USB_PNP_HOST_INFO(ukbd_devs);

Modified: head/sys/dev/usb/input/ums.c
==============================================================================
--- head/sys/dev/usb/input/ums.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/input/ums.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -1052,3 +1052,4 @@ static driver_t ums_driver = {
 DRIVER_MODULE(ums, uhub, ums_driver, ums_devclass, NULL, 0);
 MODULE_DEPEND(ums, usb, 1, 1, 1);
 MODULE_VERSION(ums, 1);
+USB_PNP_HOST_INFO(ums_devs);

Modified: head/sys/dev/usb/input/wsp.c
==============================================================================
--- head/sys/dev/usb/input/wsp.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/input/wsp.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -1395,3 +1395,4 @@ static devclass_t wsp_devclass;
 DRIVER_MODULE(wsp, uhub, wsp_driver, wsp_devclass, NULL, 0);
 MODULE_DEPEND(wsp, usb, 1, 1, 1);
 MODULE_VERSION(wsp, 1);
+USB_PNP_HOST_INFO(wsp_devs);

Modified: head/sys/dev/usb/misc/udbp.c
==============================================================================
--- head/sys/dev/usb/misc/udbp.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/misc/udbp.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -258,10 +258,20 @@ static driver_t udbp_driver = {
 	.size = sizeof(struct udbp_softc),
 };
 
+static const STRUCT_USB_HOST_ID udbp_devs[] = {
+	{USB_VPI(USB_VENDOR_NETCHIP, USB_PRODUCT_NETCHIP_TURBOCONNECT, 0)},
+	{USB_VPI(USB_VENDOR_NETCHIP, USB_PRODUCT_NETCHIP_GADGETZERO, 0)},
+	{USB_VPI(USB_VENDOR_PROLIFIC, USB_PRODUCT_PROLIFIC_PL2301, 0)},
+	{USB_VPI(USB_VENDOR_PROLIFIC, USB_PRODUCT_PROLIFIC_PL2302, 0)},
+	{USB_VPI(USB_VENDOR_ANCHOR, USB_PRODUCT_ANCHOR_EZLINK, 0)},
+	{USB_VPI(USB_VENDOR_GENESYS, USB_PRODUCT_GENESYS_GL620USB, 0)},
+};
+
 DRIVER_MODULE(udbp, uhub, udbp_driver, udbp_devclass, udbp_modload, 0);
 MODULE_DEPEND(udbp, netgraph, NG_ABI_VERSION, NG_ABI_VERSION, NG_ABI_VERSION);
 MODULE_DEPEND(udbp, usb, 1, 1, 1);
 MODULE_VERSION(udbp, 1);
+USB_PNP_HOST_INFO(udbp_devs);
 
 static int
 udbp_modload(module_t mod, int event, void *data)
@@ -289,15 +299,6 @@ udbp_modload(module_t mod, int event, vo
 	return (error);
 }
 
-static const STRUCT_USB_HOST_ID udbp_devs[] = {
-	{USB_VPI(USB_VENDOR_NETCHIP, USB_PRODUCT_NETCHIP_TURBOCONNECT, 0)},
-	{USB_VPI(USB_VENDOR_NETCHIP, USB_PRODUCT_NETCHIP_GADGETZERO, 0)},
-	{USB_VPI(USB_VENDOR_PROLIFIC, USB_PRODUCT_PROLIFIC_PL2301, 0)},
-	{USB_VPI(USB_VENDOR_PROLIFIC, USB_PRODUCT_PROLIFIC_PL2302, 0)},
-	{USB_VPI(USB_VENDOR_ANCHOR, USB_PRODUCT_ANCHOR_EZLINK, 0)},
-	{USB_VPI(USB_VENDOR_GENESYS, USB_PRODUCT_GENESYS_GL620USB, 0)},
-};
-
 static int
 udbp_probe(device_t dev)
 {

Modified: head/sys/dev/usb/misc/ufm.c
==============================================================================
--- head/sys/dev/usb/misc/ufm.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/misc/ufm.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -115,14 +115,15 @@ static driver_t ufm_driver = {
 	.size = sizeof(struct ufm_softc),
 };
 
-DRIVER_MODULE(ufm, uhub, ufm_driver, ufm_devclass, NULL, 0);
-MODULE_DEPEND(ufm, usb, 1, 1, 1);
-MODULE_VERSION(ufm, 1);
-
 static const STRUCT_USB_HOST_ID ufm_devs[] = {
 	{USB_VPI(USB_VENDOR_CYPRESS, USB_PRODUCT_CYPRESS_FMRADIO, 0)},
 };
 
+DRIVER_MODULE(ufm, uhub, ufm_driver, ufm_devclass, NULL, 0);
+MODULE_DEPEND(ufm, usb, 1, 1, 1);
+MODULE_VERSION(ufm, 1);
+USB_PNP_HOST_INFO(ufm_devs);
+
 static int
 ufm_probe(device_t dev)
 {

Modified: head/sys/dev/usb/misc/ugold.c
==============================================================================
--- head/sys/dev/usb/misc/ugold.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/misc/ugold.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -136,9 +136,14 @@ static driver_t ugold_driver = {
 	.size = sizeof(struct ugold_softc),
 };
 
+static const STRUCT_USB_HOST_ID ugold_devs[] = {
+	{USB_VPI(USB_VENDOR_CHICONY2, USB_PRODUCT_CHICONY2_TEMPER, 0)},
+};
+
 DRIVER_MODULE(ugold, uhub, ugold_driver, ugold_devclass, NULL, NULL);
 MODULE_DEPEND(ugold, usb, 1, 1, 1);
 MODULE_VERSION(ugold, 1);
+USB_PNP_HOST_INFO(ugold_devs);
 
 static const struct usb_config ugold_config[UGOLD_N_TRANSFER] = {
 
@@ -153,10 +158,6 @@ static const struct usb_config ugold_con
 	},
 };
 
-static const STRUCT_USB_HOST_ID ugold_devs[] = {
-	{USB_VPI(USB_VENDOR_CHICONY2, USB_PRODUCT_CHICONY2_TEMPER, 0)},
-};
-
 static void
 ugold_timeout(void *arg)
 {

Modified: head/sys/dev/usb/misc/uled.c
==============================================================================
--- head/sys/dev/usb/misc/uled.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/misc/uled.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -107,14 +107,15 @@ static driver_t uled_driver = {
 	.size = sizeof(struct uled_softc),
 };
 
-DRIVER_MODULE(uled, uhub, uled_driver, uled_devclass, NULL, NULL);
-MODULE_DEPEND(uled, usb, 1, 1, 1);
-MODULE_VERSION(uled, 1);
-
 static const STRUCT_USB_HOST_ID uled_devs[] = {
 	{USB_VPI(USB_VENDOR_DREAMLINK, USB_PRODUCT_DREAMLINK_DL100B, 0)},
 };
 
+DRIVER_MODULE(uled, uhub, uled_driver, uled_devclass, NULL, NULL);
+MODULE_DEPEND(uled, usb, 1, 1, 1);
+MODULE_VERSION(uled, 1);
+USB_PNP_HOST_INFO(uled_devs);
+
 static int
 uled_probe(device_t dev)
 {

Modified: head/sys/dev/usb/net/if_aue.c
==============================================================================
--- head/sys/dev/usb/net/if_aue.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/net/if_aue.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -279,6 +279,7 @@ MODULE_DEPEND(aue, usb, 1, 1, 1);
 MODULE_DEPEND(aue, ether, 1, 1, 1);
 MODULE_DEPEND(aue, miibus, 1, 1, 1);
 MODULE_VERSION(aue, 1);
+USB_PNP_HOST_INFO(aue_devs);
 
 static const struct usb_ether_methods aue_ue_methods = {
 	.ue_attach_post = aue_attach_post,

Modified: head/sys/dev/usb/net/if_axe.c
==============================================================================
--- head/sys/dev/usb/net/if_axe.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/net/if_axe.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -278,6 +278,7 @@ MODULE_DEPEND(axe, usb, 1, 1, 1);
 MODULE_DEPEND(axe, ether, 1, 1, 1);
 MODULE_DEPEND(axe, miibus, 1, 1, 1);
 MODULE_VERSION(axe, 1);
+USB_PNP_HOST_INFO(axe_devs);
 
 static const struct usb_ether_methods axe_ue_methods = {
 	.ue_attach_post = axe_attach_post,

Modified: head/sys/dev/usb/net/if_axge.c
==============================================================================
--- head/sys/dev/usb/net/if_axge.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/net/if_axge.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -190,6 +190,7 @@ MODULE_DEPEND(axge, usb, 1, 1, 1);
 MODULE_DEPEND(axge, ether, 1, 1, 1);
 MODULE_DEPEND(axge, miibus, 1, 1, 1);
 MODULE_VERSION(axge, 1);
+USB_PNP_HOST_INFO(axge_devs);
 
 static const struct usb_ether_methods axge_ue_methods = {
 	.ue_attach_post = axge_attach_post,

Modified: head/sys/dev/usb/net/if_cdce.c
==============================================================================
--- head/sys/dev/usb/net/if_cdce.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/net/if_cdce.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -256,21 +256,6 @@ static eventhandler_tag cdce_etag;
 
 static int  cdce_driver_loaded(struct module *, int, void *);
 
-DRIVER_MODULE(cdce, uhub, cdce_driver, cdce_devclass, cdce_driver_loaded, 0);
-MODULE_VERSION(cdce, 1);
-MODULE_DEPEND(cdce, uether, 1, 1, 1);
-MODULE_DEPEND(cdce, usb, 1, 1, 1);
-MODULE_DEPEND(cdce, ether, 1, 1, 1);
-
-static const struct usb_ether_methods cdce_ue_methods = {
-	.ue_attach_post = cdce_attach_post,
-	.ue_start = cdce_start,
-	.ue_init = cdce_init,
-	.ue_stop = cdce_stop,
-	.ue_setmulti = cdce_setmulti,
-	.ue_setpromisc = cdce_setpromisc,
-};
-
 static const STRUCT_USB_HOST_ID cdce_switch_devs[] = {
 	{USB_VPI(USB_VENDOR_HUAWEI, USB_PRODUCT_HUAWEI_E3272_INIT, MSC_EJECT_HUAWEI2)},
 };
@@ -307,6 +292,24 @@ static const STRUCT_USB_DUAL_ID cdce_dua
 	{USB_IF_CSI(UICLASS_CDC, UISUBCLASS_NETWORK_CONTROL_MODEL, 0)},
 };
 
+DRIVER_MODULE(cdce, uhub, cdce_driver, cdce_devclass, cdce_driver_loaded, 0);
+MODULE_VERSION(cdce, 1);
+MODULE_DEPEND(cdce, uether, 1, 1, 1);
+MODULE_DEPEND(cdce, usb, 1, 1, 1);
+MODULE_DEPEND(cdce, ether, 1, 1, 1);
+USB_PNP_DEVICE_INFO(cdce_switch_devs);
+USB_PNP_HOST_INFO(cdce_host_devs);
+USB_PNP_DUAL_INFO(cdce_dual_devs);
+
+static const struct usb_ether_methods cdce_ue_methods = {
+	.ue_attach_post = cdce_attach_post,
+	.ue_start = cdce_start,
+	.ue_init = cdce_init,
+	.ue_stop = cdce_stop,
+	.ue_setmulti = cdce_setmulti,
+	.ue_setpromisc = cdce_setpromisc,
+};
+
 #if CDCE_HAVE_NCM
 /*------------------------------------------------------------------------*
  *	cdce_ncm_init

Modified: head/sys/dev/usb/net/if_cue.c
==============================================================================
--- head/sys/dev/usb/net/if_cue.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/net/if_cue.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -177,6 +177,7 @@ MODULE_DEPEND(cue, uether, 1, 1, 1);
 MODULE_DEPEND(cue, usb, 1, 1, 1);
 MODULE_DEPEND(cue, ether, 1, 1, 1);
 MODULE_VERSION(cue, 1);
+USB_PNP_HOST_INFO(cue_devs);
 
 static const struct usb_ether_methods cue_ue_methods = {
 	.ue_attach_post = cue_attach_post,

Modified: head/sys/dev/usb/net/if_ipheth.c
==============================================================================
--- head/sys/dev/usb/net/if_ipheth.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/net/if_ipheth.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -131,27 +131,6 @@ static driver_t ipheth_driver = {
 
 static devclass_t ipheth_devclass;
 
-DRIVER_MODULE(ipheth, uhub, ipheth_driver, ipheth_devclass, NULL, 0);
-MODULE_VERSION(ipheth, 1);
-MODULE_DEPEND(ipheth, uether, 1, 1, 1);
-MODULE_DEPEND(ipheth, usb, 1, 1, 1);
-MODULE_DEPEND(ipheth, ether, 1, 1, 1);
-
-static const struct usb_ether_methods ipheth_ue_methods = {
-	.ue_attach_post = ipheth_attach_post,
-	.ue_start = ipheth_start,
-	.ue_init = ipheth_init,
-	.ue_tick = ipheth_tick,
-	.ue_stop = ipheth_stop,
-	.ue_setmulti = ipheth_setmulti,
-	.ue_setpromisc = ipheth_setpromisc,
-};
-
-#define	IPHETH_ID(v,p,c,sc,pt) \
-    USB_VENDOR(v), USB_PRODUCT(p), \
-    USB_IFACE_CLASS(c), USB_IFACE_SUBCLASS(sc), \
-    USB_IFACE_PROTOCOL(pt)
-
 static const STRUCT_USB_HOST_ID ipheth_devs[] = {
 #if 0
 	{IPHETH_ID(USB_VENDOR_APPLE, USB_PRODUCT_APPLE_IPHONE,
@@ -181,6 +160,28 @@ static const STRUCT_USB_HOST_ID ipheth_d
 #endif
 };
 
+DRIVER_MODULE(ipheth, uhub, ipheth_driver, ipheth_devclass, NULL, 0);
+MODULE_VERSION(ipheth, 1);
+MODULE_DEPEND(ipheth, uether, 1, 1, 1);
+MODULE_DEPEND(ipheth, usb, 1, 1, 1);
+MODULE_DEPEND(ipheth, ether, 1, 1, 1);
+USB_PNP_HOST_INFO(ipheth_devs);
+
+static const struct usb_ether_methods ipheth_ue_methods = {
+	.ue_attach_post = ipheth_attach_post,
+	.ue_start = ipheth_start,
+	.ue_init = ipheth_init,
+	.ue_tick = ipheth_tick,
+	.ue_stop = ipheth_stop,
+	.ue_setmulti = ipheth_setmulti,
+	.ue_setpromisc = ipheth_setpromisc,
+};
+
+#define	IPHETH_ID(v,p,c,sc,pt) \
+    USB_VENDOR(v), USB_PRODUCT(p), \
+    USB_IFACE_CLASS(c), USB_IFACE_SUBCLASS(sc), \
+    USB_IFACE_PROTOCOL(pt)
+
 static int
 ipheth_get_mac_addr(struct ipheth_softc *sc)
 {

Modified: head/sys/dev/usb/net/if_kue.c
==============================================================================
--- head/sys/dev/usb/net/if_kue.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/net/if_kue.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -219,6 +219,7 @@ MODULE_DEPEND(kue, uether, 1, 1, 1);
 MODULE_DEPEND(kue, usb, 1, 1, 1);
 MODULE_DEPEND(kue, ether, 1, 1, 1);
 MODULE_VERSION(kue, 1);
+USB_PNP_HOST_INFO(kue_devs);
 
 static const struct usb_ether_methods kue_ue_methods = {
 	.ue_attach_post = kue_attach_post,

Modified: head/sys/dev/usb/net/if_mos.c
==============================================================================
--- head/sys/dev/usb/net/if_mos.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/net/if_mos.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -247,6 +247,7 @@ MODULE_DEPEND(mos, uether, 1, 1, 1);
 MODULE_DEPEND(mos, usb, 1, 1, 1);
 MODULE_DEPEND(mos, ether, 1, 1, 1);
 MODULE_DEPEND(mos, miibus, 1, 1, 1);
+USB_PNP_HOST_INFO(mos_devs);
 
 static const struct usb_ether_methods mos_ue_methods = {
 	.ue_attach_post = mos_attach_post,

Modified: head/sys/dev/usb/net/if_rue.c
==============================================================================
--- head/sys/dev/usb/net/if_rue.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/net/if_rue.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -214,6 +214,7 @@ MODULE_DEPEND(rue, usb, 1, 1, 1);
 MODULE_DEPEND(rue, ether, 1, 1, 1);
 MODULE_DEPEND(rue, miibus, 1, 1, 1);
 MODULE_VERSION(rue, 1);
+USB_PNP_HOST_INFO(rue_devs);
 
 static const struct usb_ether_methods rue_ue_methods = {
 	.ue_attach_post = rue_attach_post,

Modified: head/sys/dev/usb/net/if_smsc.c
==============================================================================
--- head/sys/dev/usb/net/if_smsc.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/net/if_smsc.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -1858,3 +1858,4 @@ MODULE_DEPEND(smsc, usb, 1, 1, 1);
 MODULE_DEPEND(smsc, ether, 1, 1, 1);
 MODULE_DEPEND(smsc, miibus, 1, 1, 1);
 MODULE_VERSION(smsc, 1);
+USB_PNP_HOST_INFO(smsc_devs);

Modified: head/sys/dev/usb/net/if_udav.c
==============================================================================
--- head/sys/dev/usb/net/if_udav.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/net/if_udav.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -165,6 +165,21 @@ static driver_t udav_driver = {
 
 static devclass_t udav_devclass;
 
+static const STRUCT_USB_HOST_ID udav_devs[] = {
+	/* ShanTou DM9601 USB NIC */
+	{USB_VPI(USB_VENDOR_SHANTOU, USB_PRODUCT_SHANTOU_DM9601, 0)},
+	/* ShanTou ST268 USB NIC */
+	{USB_VPI(USB_VENDOR_SHANTOU, USB_PRODUCT_SHANTOU_ST268, 0)},
+	/* Corega USB-TXC */
+	{USB_VPI(USB_VENDOR_COREGA, USB_PRODUCT_COREGA_FETHER_USB_TXC, 0)},
+	/* ShanTou AMD8515 USB NIC */
+	{USB_VPI(USB_VENDOR_SHANTOU, USB_PRODUCT_SHANTOU_ADM8515, 0)},
+	/* Kontron AG USB Ethernet */
+	{USB_VPI(USB_VENDOR_KONTRON, USB_PRODUCT_KONTRON_DM9601, 0)},
+	{USB_VPI(USB_VENDOR_KONTRON, USB_PRODUCT_KONTRON_JP1082,
+	    UDAV_FLAG_NO_PHY)},
+};
+
 DRIVER_MODULE(udav, uhub, udav_driver, udav_devclass, NULL, 0);
 DRIVER_MODULE(miibus, udav, miibus_driver, miibus_devclass, 0, 0);
 MODULE_DEPEND(udav, uether, 1, 1, 1);
@@ -172,6 +187,7 @@ MODULE_DEPEND(udav, usb, 1, 1, 1);
 MODULE_DEPEND(udav, ether, 1, 1, 1);
 MODULE_DEPEND(udav, miibus, 1, 1, 1);
 MODULE_VERSION(udav, 1);
+USB_PNP_HOST_INFO(udav_devs);
 
 static const struct usb_ether_methods udav_ue_methods = {
 	.ue_attach_post = udav_attach_post,
@@ -208,21 +224,6 @@ SYSCTL_INT(_hw_usb_udav, OID_AUTO, debug
 #define	UDAV_CLRBIT(sc, reg, x)	\
 	udav_csr_write1(sc, reg, udav_csr_read1(sc, reg) & ~(x))
 
-static const STRUCT_USB_HOST_ID udav_devs[] = {
-	/* ShanTou DM9601 USB NIC */
-	{USB_VPI(USB_VENDOR_SHANTOU, USB_PRODUCT_SHANTOU_DM9601, 0)},
-	/* ShanTou ST268 USB NIC */
-	{USB_VPI(USB_VENDOR_SHANTOU, USB_PRODUCT_SHANTOU_ST268, 0)},
-	/* Corega USB-TXC */
-	{USB_VPI(USB_VENDOR_COREGA, USB_PRODUCT_COREGA_FETHER_USB_TXC, 0)},
-	/* ShanTou AMD8515 USB NIC */
-	{USB_VPI(USB_VENDOR_SHANTOU, USB_PRODUCT_SHANTOU_ADM8515, 0)},
-	/* Kontron AG USB Ethernet */
-	{USB_VPI(USB_VENDOR_KONTRON, USB_PRODUCT_KONTRON_DM9601, 0)},
-	{USB_VPI(USB_VENDOR_KONTRON, USB_PRODUCT_KONTRON_JP1082,
-	    UDAV_FLAG_NO_PHY)},
-};
-
 static void
 udav_attach_post(struct usb_ether *ue)
 {

Modified: head/sys/dev/usb/net/if_urndis.c
==============================================================================
--- head/sys/dev/usb/net/if_urndis.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/net/if_urndis.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -161,21 +161,6 @@ static driver_t urndis_driver = {
 
 static devclass_t urndis_devclass;
 
-DRIVER_MODULE(urndis, uhub, urndis_driver, urndis_devclass, NULL, NULL);
-MODULE_VERSION(urndis, 1);
-MODULE_DEPEND(urndis, uether, 1, 1, 1);
-MODULE_DEPEND(urndis, usb, 1, 1, 1);
-MODULE_DEPEND(urndis, ether, 1, 1, 1);
-
-static const struct usb_ether_methods urndis_ue_methods = {
-	.ue_attach_post = urndis_attach_post,
-	.ue_start = urndis_start,
-	.ue_init = urndis_init,
-	.ue_stop = urndis_stop,
-	.ue_setmulti = urndis_setmulti,
-	.ue_setpromisc = urndis_setpromisc,
-};
-
 static const STRUCT_USB_HOST_ID urndis_host_devs[] = {
 	/* Generic RNDIS class match */
 	{USB_IFACE_CLASS(UICLASS_CDC),
@@ -191,6 +176,22 @@ static const STRUCT_USB_HOST_ID urndis_h
 		USB_IFACE_PROTOCOL(0xff)},
 };
 
+DRIVER_MODULE(urndis, uhub, urndis_driver, urndis_devclass, NULL, NULL);
+MODULE_VERSION(urndis, 1);
+MODULE_DEPEND(urndis, uether, 1, 1, 1);
+MODULE_DEPEND(urndis, usb, 1, 1, 1);
+MODULE_DEPEND(urndis, ether, 1, 1, 1);
+USB_PNP_HOST_INFO(urndis_host_devs);
+
+static const struct usb_ether_methods urndis_ue_methods = {
+	.ue_attach_post = urndis_attach_post,
+	.ue_start = urndis_start,
+	.ue_init = urndis_init,
+	.ue_stop = urndis_stop,
+	.ue_setmulti = urndis_setmulti,
+	.ue_setpromisc = urndis_setpromisc,
+};
+
 static int
 urndis_probe(device_t dev)
 {

Modified: head/sys/dev/usb/net/if_usie.c
==============================================================================
--- head/sys/dev/usb/net/if_usie.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/net/if_usie.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -212,6 +212,7 @@ DRIVER_MODULE(usie, uhub, usie_driver, u
 MODULE_DEPEND(usie, ucom, 1, 1, 1);
 MODULE_DEPEND(usie, usb, 1, 1, 1);
 MODULE_VERSION(usie, 1);
+USB_PNP_HOST_INFO(usie_devs);
 
 static const struct ucom_callback usie_uc_callback = {
 	.ucom_cfg_get_status = &usie_uc_cfg_get_status,

Modified: head/sys/dev/usb/net/uhso.c
==============================================================================
--- head/sys/dev/usb/net/uhso.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/net/uhso.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -497,6 +497,7 @@ DRIVER_MODULE(uhso, uhub, uhso_driver, u
 MODULE_DEPEND(uhso, ucom, 1, 1, 1);
 MODULE_DEPEND(uhso, usb, 1, 1, 1);
 MODULE_VERSION(uhso, 1);
+USB_PNP_HOST_INFO(uhso_devs);
 
 static struct ucom_callback uhso_ucom_callback = {
 	.ucom_cfg_get_status = &uhso_ucom_cfg_get_status,

Modified: head/sys/dev/usb/serial/u3g.c
==============================================================================
--- head/sys/dev/usb/serial/u3g.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/serial/u3g.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -198,11 +198,6 @@ static driver_t u3g_driver = {
 	.size = sizeof(struct u3g_softc),
 };
 
-DRIVER_MODULE(u3g, uhub, u3g_driver, u3g_devclass, u3g_driver_loaded, 0);
-MODULE_DEPEND(u3g, ucom, 1, 1, 1);
-MODULE_DEPEND(u3g, usb, 1, 1, 1);
-MODULE_VERSION(u3g, 1);
-
 static const STRUCT_USB_HOST_ID u3g_devs[] = {
 #define	U3G_DEV(v,p,i) { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, i) }
 	U3G_DEV(ACERP, H10, 0),
@@ -587,6 +582,12 @@ static const STRUCT_USB_HOST_ID u3g_devs
 #undef	U3G_DEV
 };
 
+DRIVER_MODULE(u3g, uhub, u3g_driver, u3g_devclass, u3g_driver_loaded, 0);
+MODULE_DEPEND(u3g, ucom, 1, 1, 1);
+MODULE_DEPEND(u3g, usb, 1, 1, 1);
+MODULE_VERSION(u3g, 1);
+USB_PNP_HOST_INFO(u3g_devs);
+
 static int
 u3g_sierra_init(struct usb_device *udev)
 {

Modified: head/sys/dev/usb/serial/uark.c
==============================================================================
--- head/sys/dev/usb/serial/uark.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/serial/uark.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -168,14 +168,15 @@ static driver_t uark_driver = {
 	.size = sizeof(struct uark_softc),
 };
 
+static const STRUCT_USB_HOST_ID uark_devs[] = {
+	{USB_VPI(USB_VENDOR_ARKMICRO, USB_PRODUCT_ARKMICRO_ARK3116, 0)},
+};
+
 DRIVER_MODULE(uark, uhub, uark_driver, uark_devclass, NULL, 0);
 MODULE_DEPEND(uark, ucom, 1, 1, 1);
 MODULE_DEPEND(uark, usb, 1, 1, 1);
 MODULE_VERSION(uark, 1);
-
-static const STRUCT_USB_HOST_ID uark_devs[] = {
-	{USB_VPI(USB_VENDOR_ARKMICRO, USB_PRODUCT_ARKMICRO_ARK3116, 0)},
-};
+USB_PNP_HOST_INFO(uark_devs);
 
 static int
 uark_probe(device_t dev)

Modified: head/sys/dev/usb/serial/ubsa.c
==============================================================================
--- head/sys/dev/usb/serial/ubsa.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/serial/ubsa.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -273,6 +273,7 @@ DRIVER_MODULE(ubsa, uhub, ubsa_driver, u
 MODULE_DEPEND(ubsa, ucom, 1, 1, 1);
 MODULE_DEPEND(ubsa, usb, 1, 1, 1);
 MODULE_VERSION(ubsa, 1);
+USB_PNP_HOST_INFO(ubsa_devs);
 
 static int
 ubsa_probe(device_t dev)

Modified: head/sys/dev/usb/serial/uchcom.c
==============================================================================
--- head/sys/dev/usb/serial/uchcom.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/serial/uchcom.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -874,3 +874,4 @@ DRIVER_MODULE(uchcom, uhub, uchcom_drive
 MODULE_DEPEND(uchcom, ucom, 1, 1, 1);
 MODULE_DEPEND(uchcom, usb, 1, 1, 1);
 MODULE_VERSION(uchcom, 1);
+USB_PNP_HOST_INFO(uchcom_devs);

Modified: head/sys/dev/usb/serial/ucycom.c
==============================================================================
--- head/sys/dev/usb/serial/ucycom.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/serial/ucycom.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -174,11 +174,6 @@ static driver_t ucycom_driver = {
 	.size = sizeof(struct ucycom_softc),
 };
 
-DRIVER_MODULE(ucycom, uhub, ucycom_driver, ucycom_devclass, NULL, 0);
-MODULE_DEPEND(ucycom, ucom, 1, 1, 1);
-MODULE_DEPEND(ucycom, usb, 1, 1, 1);
-MODULE_VERSION(ucycom, 1);
-
 /*
  * Supported devices
  */
@@ -186,6 +181,12 @@ static const STRUCT_USB_HOST_ID ucycom_d
 	{USB_VPI(USB_VENDOR_DELORME, USB_PRODUCT_DELORME_EARTHMATE, MODEL_CY7C64013)},
 };
 
+DRIVER_MODULE(ucycom, uhub, ucycom_driver, ucycom_devclass, NULL, 0);
+MODULE_DEPEND(ucycom, ucom, 1, 1, 1);
+MODULE_DEPEND(ucycom, usb, 1, 1, 1);
+MODULE_VERSION(ucycom, 1);
+USB_PNP_HOST_INFO(ucycom_devs);
+
 #define	UCYCOM_DEFAULT_RATE	 4800
 #define	UCYCOM_DEFAULT_CFG	 0x03	/* N-8-1 */
 

Modified: head/sys/dev/usb/serial/ufoma.c
==============================================================================
--- head/sys/dev/usb/serial/ufoma.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/serial/ufoma.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -317,16 +317,17 @@ static driver_t ufoma_driver = {
 	.size = sizeof(struct ufoma_softc),
 };
 
-DRIVER_MODULE(ufoma, uhub, ufoma_driver, ufoma_devclass, NULL, 0);
-MODULE_DEPEND(ufoma, ucom, 1, 1, 1);
-MODULE_DEPEND(ufoma, usb, 1, 1, 1);
-MODULE_VERSION(ufoma, 1);
-
 static const STRUCT_USB_HOST_ID ufoma_devs[] = {
 	{USB_IFACE_CLASS(UICLASS_CDC),
 	 USB_IFACE_SUBCLASS(UISUBCLASS_MCPC),},
 };
 
+DRIVER_MODULE(ufoma, uhub, ufoma_driver, ufoma_devclass, NULL, 0);
+MODULE_DEPEND(ufoma, ucom, 1, 1, 1);
+MODULE_DEPEND(ufoma, usb, 1, 1, 1);
+MODULE_VERSION(ufoma, 1);
+USB_PNP_HOST_INFO(ufoma_devs);
+
 static int
 ufoma_probe(device_t dev)
 {

Modified: head/sys/dev/usb/serial/uftdi.c
==============================================================================
--- head/sys/dev/usb/serial/uftdi.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/serial/uftdi.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -265,11 +265,6 @@ static driver_t uftdi_driver = {
 	.size = sizeof(struct uftdi_softc),
 };
 
-DRIVER_MODULE(uftdi, uhub, uftdi_driver, uftdi_devclass, NULL, NULL);
-MODULE_DEPEND(uftdi, ucom, 1, 1, 1);
-MODULE_DEPEND(uftdi, usb, 1, 1, 1);
-MODULE_VERSION(uftdi, 1);
-
 static const STRUCT_USB_HOST_ID uftdi_devs[] = {
 #define	UFTDI_DEV(v, p, i) \
   { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, i) }
@@ -914,6 +909,12 @@ static const STRUCT_USB_HOST_ID uftdi_de
 #undef UFTDI_DEV
 };
 
+DRIVER_MODULE(uftdi, uhub, uftdi_driver, uftdi_devclass, NULL, NULL);
+MODULE_DEPEND(uftdi, ucom, 1, 1, 1);
+MODULE_DEPEND(uftdi, usb, 1, 1, 1);
+MODULE_VERSION(uftdi, 1);
+USB_PNP_HOST_INFO(uftdi_devs);
+
 /*
  * Jtag product name strings table.  Some products have one or more interfaces
  * dedicated to jtag or gpio, but use a product ID that's the same as other

Modified: head/sys/dev/usb/serial/ugensa.c
==============================================================================
--- head/sys/dev/usb/serial/ugensa.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/serial/ugensa.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -152,11 +152,6 @@ static driver_t ugensa_driver = {
 	.size = sizeof(struct ugensa_softc),
 };
 
-DRIVER_MODULE(ugensa, uhub, ugensa_driver, ugensa_devclass, NULL, 0);
-MODULE_DEPEND(ugensa, ucom, 1, 1, 1);
-MODULE_DEPEND(ugensa, usb, 1, 1, 1);
-MODULE_VERSION(ugensa, 1);
-
 static const STRUCT_USB_HOST_ID ugensa_devs[] = {
 	{USB_VPI(USB_VENDOR_AIRPRIME, USB_PRODUCT_AIRPRIME_PC5220, 0)},
 	{USB_VPI(USB_VENDOR_CMOTECH, USB_PRODUCT_CMOTECH_CDMA_MODEM1, 0)},
@@ -165,6 +160,12 @@ static const STRUCT_USB_HOST_ID ugensa_d
 	{USB_VPI(USB_VENDOR_NOVATEL2, USB_PRODUCT_NOVATEL2_FLEXPACKGPS, 0)},
 };
 
+DRIVER_MODULE(ugensa, uhub, ugensa_driver, ugensa_devclass, NULL, 0);
+MODULE_DEPEND(ugensa, ucom, 1, 1, 1);
+MODULE_DEPEND(ugensa, usb, 1, 1, 1);
+MODULE_VERSION(ugensa, 1);
+USB_PNP_HOST_INFO(ugensa_devs);
+
 static int
 ugensa_probe(device_t dev)
 {

Modified: head/sys/dev/usb/serial/uipaq.c
==============================================================================
--- head/sys/dev/usb/serial/uipaq.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/serial/uipaq.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -1088,6 +1088,7 @@ DRIVER_MODULE(uipaq, uhub, uipaq_driver,
 MODULE_DEPEND(uipaq, ucom, 1, 1, 1);
 MODULE_DEPEND(uipaq, usb, 1, 1, 1);
 MODULE_VERSION(uipaq, 1);
+USB_PNP_HOST_INFO(uipaq_devs);
 
 static int
 uipaq_probe(device_t dev)

Modified: head/sys/dev/usb/serial/ulpt.c
==============================================================================
--- head/sys/dev/usb/serial/ulpt.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/serial/ulpt.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -759,3 +759,4 @@ static driver_t ulpt_driver = {
 DRIVER_MODULE(ulpt, uhub, ulpt_driver, ulpt_devclass, NULL, 0);
 MODULE_DEPEND(ulpt, usb, 1, 1, 1);
 MODULE_VERSION(ulpt, 1);
+USB_PNP_HOST_INFO(ulpt_devs);

Modified: head/sys/dev/usb/serial/umcs.c
==============================================================================
--- head/sys/dev/usb/serial/umcs.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/serial/umcs.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -278,6 +278,7 @@ DRIVER_MODULE(umcs7840, uhub, umcs7840_d
 MODULE_DEPEND(umcs7840, ucom, 1, 1, 1);
 MODULE_DEPEND(umcs7840, usb, 1, 1, 1);
 MODULE_VERSION(umcs7840, UMCS7840_MODVER);
+USB_PNP_HOST_INFO(umcs7840_devs);
 
 static int
 umcs7840_probe(device_t dev)

Modified: head/sys/dev/usb/serial/umct.c
==============================================================================
--- head/sys/dev/usb/serial/umct.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/serial/umct.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -221,6 +221,7 @@ DRIVER_MODULE(umct, uhub, umct_driver, u
 MODULE_DEPEND(umct, ucom, 1, 1, 1);
 MODULE_DEPEND(umct, usb, 1, 1, 1);
 MODULE_VERSION(umct, 1);
+USB_PNP_HOST_INFO(umct_devs);
 
 static int
 umct_probe(device_t dev)

Modified: head/sys/dev/usb/serial/umodem.c
==============================================================================
--- head/sys/dev/usb/serial/umodem.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/serial/umodem.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -298,6 +298,8 @@ DRIVER_MODULE(umodem, uhub, umodem_drive
 MODULE_DEPEND(umodem, ucom, 1, 1, 1);
 MODULE_DEPEND(umodem, usb, 1, 1, 1);
 MODULE_VERSION(umodem, UMODEM_MODVER);
+USB_PNP_DUAL_INFO(umodem_dual_devs);
+USB_PNP_HOST_INFO(umodem_host_devs);
 
 static int
 umodem_probe(device_t dev)

Modified: head/sys/dev/usb/serial/umoscom.c
==============================================================================
--- head/sys/dev/usb/serial/umoscom.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/serial/umoscom.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -278,14 +278,15 @@ static driver_t umoscom_driver = {
 	.size = sizeof(struct umoscom_softc),
 };
 
+static const STRUCT_USB_HOST_ID umoscom_devs[] = {
+	{USB_VPI(USB_VENDOR_MOSCHIP, USB_PRODUCT_MOSCHIP_MCS7703, 0)}
+};
+
 DRIVER_MODULE(umoscom, uhub, umoscom_driver, umoscom_devclass, NULL, 0);
 MODULE_DEPEND(umoscom, ucom, 1, 1, 1);
 MODULE_DEPEND(umoscom, usb, 1, 1, 1);
 MODULE_VERSION(umoscom, 1);
-
-static const STRUCT_USB_HOST_ID umoscom_devs[] = {
-	{USB_VPI(USB_VENDOR_MOSCHIP, USB_PRODUCT_MOSCHIP_MCS7703, 0)}
-};
+USB_PNP_HOST_INFO(umoscom_devs);
 
 static int
 umoscom_probe(device_t dev)

Modified: head/sys/dev/usb/serial/uplcom.c
==============================================================================
--- head/sys/dev/usb/serial/uplcom.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/serial/uplcom.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -326,6 +326,7 @@ DRIVER_MODULE(uplcom, uhub, uplcom_drive
 MODULE_DEPEND(uplcom, ucom, 1, 1, 1);
 MODULE_DEPEND(uplcom, usb, 1, 1, 1);
 MODULE_VERSION(uplcom, UPLCOM_MODVER);
+USB_PNP_HOST_INFO(uplcom_devs);
 
 static int
 uplcom_probe(device_t dev)

Modified: head/sys/dev/usb/serial/uslcom.c
==============================================================================
--- head/sys/dev/usb/serial/uslcom.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/serial/uslcom.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -382,6 +382,7 @@ DRIVER_MODULE(uslcom, uhub, uslcom_drive
 MODULE_DEPEND(uslcom, ucom, 1, 1, 1);
 MODULE_DEPEND(uslcom, usb, 1, 1, 1);
 MODULE_VERSION(uslcom, 1);
+USB_PNP_HOST_INFO(uslcom_devs);
 
 static void
 uslcom_watchdog(void *arg)

Modified: head/sys/dev/usb/serial/uvisor.c
==============================================================================
--- head/sys/dev/usb/serial/uvisor.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/serial/uvisor.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -251,11 +251,6 @@ static driver_t uvisor_driver = {
 	.size = sizeof(struct uvisor_softc),
 };
 
-DRIVER_MODULE(uvisor, uhub, uvisor_driver, uvisor_devclass, NULL, 0);
-MODULE_DEPEND(uvisor, ucom, 1, 1, 1);
-MODULE_DEPEND(uvisor, usb, 1, 1, 1);
-MODULE_VERSION(uvisor, 1);
-
 static const STRUCT_USB_HOST_ID uvisor_devs[] = {
 #define	UVISOR_DEV(v,p,i) { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, i) }
 	UVISOR_DEV(ACEECA, MEZ1000, UVISOR_FLAG_PALM4),
@@ -288,6 +283,12 @@ static const STRUCT_USB_HOST_ID uvisor_d
 #undef UVISOR_DEV
 };
 
+DRIVER_MODULE(uvisor, uhub, uvisor_driver, uvisor_devclass, NULL, 0);
+MODULE_DEPEND(uvisor, ucom, 1, 1, 1);
+MODULE_DEPEND(uvisor, usb, 1, 1, 1);
+MODULE_VERSION(uvisor, 1);
+USB_PNP_HOST_INFO(uvisor_devs);
+
 static int
 uvisor_probe(device_t dev)
 {

Modified: head/sys/dev/usb/serial/uvscom.c
==============================================================================
--- head/sys/dev/usb/serial/uvscom.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/serial/uvscom.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -268,6 +268,7 @@ DRIVER_MODULE(uvscom, uhub, uvscom_drive
 MODULE_DEPEND(uvscom, ucom, 1, 1, 1);
 MODULE_DEPEND(uvscom, usb, 1, 1, 1);
 MODULE_VERSION(uvscom, UVSCOM_MODVER);
+USB_PNP_HOST_INFO(uvscom_devs);
 
 static int
 uvscom_probe(device_t dev)

Modified: head/sys/dev/usb/storage/umass.c
==============================================================================
--- head/sys/dev/usb/storage/umass.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/storage/umass.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -706,20 +706,21 @@ static driver_t umass_driver = {
 	.size = sizeof(struct umass_softc),
 };
 
+static const STRUCT_USB_HOST_ID __used umass_devs[] = {
+	/* generic mass storage class */
+	{USB_IFACE_CLASS(UICLASS_MASS),},
+};
+
 DRIVER_MODULE(umass, uhub, umass_driver, umass_devclass, NULL, 0);
 MODULE_DEPEND(umass, usb, 1, 1, 1);
 MODULE_DEPEND(umass, cam, 1, 1, 1);
 MODULE_VERSION(umass, 1);
+USB_PNP_HOST_INFO(umass_devs);
 
 /*
  * USB device probe/attach/detach
  */
 
-static const STRUCT_USB_HOST_ID __used umass_devs[] = {
-	/* generic mass storage class */
-	{USB_IFACE_CLASS(UICLASS_MASS),},
-};
-
 static uint16_t
 umass_get_proto(struct usb_interface *iface)
 {

Modified: head/sys/dev/usb/storage/urio.c
==============================================================================
--- head/sys/dev/usb/storage/urio.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/storage/urio.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -195,16 +195,17 @@ static driver_t urio_driver = {
 	.size = sizeof(struct urio_softc),
 };
 
-DRIVER_MODULE(urio, uhub, urio_driver, urio_devclass, NULL, 0);
-MODULE_DEPEND(urio, usb, 1, 1, 1);
-MODULE_VERSION(urio, 1);
-
 static const STRUCT_USB_HOST_ID urio_devs[] = {
 	{USB_VPI(USB_VENDOR_DIAMOND, USB_PRODUCT_DIAMOND_RIO500USB, 0)},
 	{USB_VPI(USB_VENDOR_DIAMOND2, USB_PRODUCT_DIAMOND2_RIO600USB, 0)},
 	{USB_VPI(USB_VENDOR_DIAMOND2, USB_PRODUCT_DIAMOND2_RIO800USB, 0)},
 };
 
+DRIVER_MODULE(urio, uhub, urio_driver, urio_devclass, NULL, 0);
+MODULE_DEPEND(urio, usb, 1, 1, 1);
+MODULE_VERSION(urio, 1);
+USB_PNP_HOST_INFO(urio_devs);
+
 static int
 urio_probe(device_t dev)
 {

Modified: head/sys/dev/usb/usb_hub.c
==============================================================================
--- head/sys/dev/usb/usb_hub.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/usb_hub.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -1731,6 +1731,7 @@ uhub_child_pnpinfo_string(device_t paren
 	if (iface && iface->idesc) {
 		snprintf(buf, buflen, "vendor=0x%04x product=0x%04x "
 		    "devclass=0x%02x devsubclass=0x%02x "
+		    "devproto=0x%02x "
 		    "sernum=\"%s\" "
 		    "release=0x%04x "
 		    "mode=%s "
@@ -1740,6 +1741,7 @@ uhub_child_pnpinfo_string(device_t paren
 		    UGETW(res.udev->ddesc.idProduct),
 		    res.udev->ddesc.bDeviceClass,
 		    res.udev->ddesc.bDeviceSubClass,
+		    res.udev->ddesc.bDeviceProtocol,
 		    usb_get_serial(res.udev),
 		    UGETW(res.udev->ddesc.bcdDevice),
 		    (res.udev->flags.usb_mode == USB_MODE_HOST) ? "host" : "device",

Modified: head/sys/dev/usb/usbdi.h
==============================================================================
--- head/sys/dev/usb/usbdi.h	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/usbdi.h	Fri Dec 11 05:28:00 2015	(r292080)
@@ -266,8 +266,38 @@ struct usb_config {
  */
 struct usb_device_id {
 
-	/* Hook for driver specific information */
-	unsigned long driver_info;
+	/* Select which fields to match against */
+#if _BYTE_ORDER == _LITTLE_ENDIAN
+	uint16_t
+		match_flag_vendor:1,
+		match_flag_product:1,
+		match_flag_dev_lo:1,
+		match_flag_dev_hi:1,
+
+		match_flag_dev_class:1,
+		match_flag_dev_subclass:1,
+		match_flag_dev_protocol:1,
+		match_flag_int_class:1,
+
+		match_flag_int_subclass:1,
+		match_flag_int_protocol:1,
+		match_flag_unused:6;
+#else
+	uint16_t
+		match_flag_unused:6,
+		match_flag_int_protocol:1,
+		match_flag_int_subclass:1,
+
+		match_flag_int_class:1,
+		match_flag_dev_protocol:1,
+		match_flag_dev_subclass:1,
+		match_flag_dev_class:1,
+
+		match_flag_dev_hi:1,
+		match_flag_dev_lo:1,
+		match_flag_product:1,
+		match_flag_vendor:1;
+#endif
 
 	/* Used for product specific matches; the BCD range is inclusive */
 	uint16_t idVendor;
@@ -285,21 +315,13 @@ struct usb_device_id {
 	uint8_t	bInterfaceSubClass;
 	uint8_t	bInterfaceProtocol;
 
-	/* Select which fields to match against */
-	uint8_t	match_flag_vendor:1;
-	uint8_t	match_flag_product:1;
-	uint8_t	match_flag_dev_lo:1;
-	uint8_t	match_flag_dev_hi:1;
-
-	uint8_t	match_flag_dev_class:1;
-	uint8_t	match_flag_dev_subclass:1;
-	uint8_t	match_flag_dev_protocol:1;
-	uint8_t	match_flag_int_class:1;
-
-	uint8_t	match_flag_int_subclass:1;
-	uint8_t	match_flag_int_protocol:1;
-	uint8_t match_flag_unused:6;
+	/* Hook for driver specific information */
+	unsigned long driver_info;
 
+/*
+ * XXX can't currently participate in auto driver loading
+ * XXX making it a union with the match_flag_* above messes up init
+ */
 #if USB_HAVE_COMPAT_LINUX
 	/* which fields to match against */
 	uint16_t match_flags;
@@ -316,6 +338,21 @@ struct usb_device_id {
 #endif
 } __aligned(32);
 
+#define USB_STD_PNP_INFO "M16:mask;U16:vendor;U16:product;L16:product;G16:product;" \
+	"U8:devclass;U8:devsubclass;U8:devprotocol;" \
+	"U8:intclass;U8:intsubclass;U8:intprotocol;"
+#define USB_STD_PNP_HOST_INFO USB_STD_PNP_INFO "T:mode=host;"
+#define USB_STD_PNP_DEVICE_INFO USB_STD_PNP_INFO "T:mode=device;"
+#define USB_PNP_HOST_INFO(table)					\
+	MODULE_PNP_INFO(USB_STD_PNP_HOST_INFO, usb, table, table, sizeof(table[0]), \
+	    sizeof(table) / sizeof(table[0]))
+#define USB_PNP_DEVICE_INFO(table)					\
+	MODULE_PNP_INFO(USB_STD_PNP_DEVICE_INFO, usb, table, table, sizeof(table[0]), \
+	    sizeof(table) / sizeof(table[0]))
+#define USB_PNP_DUAL_INFO(table)					\
+	MODULE_PNP_INFO(USB_STD_PNP_INFO, usb, table, table, sizeof(table[0]), \
+	    sizeof(table) / sizeof(table[0]))
+
 /* check that the size of the structure above is correct */
 extern char usb_device_id_assert[(sizeof(struct usb_device_id) == 32) ? 1 : -1];
 

Modified: head/sys/dev/usb/wlan/if_rsu.c
==============================================================================
--- head/sys/dev/usb/wlan/if_rsu.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/wlan/if_rsu.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -249,6 +249,7 @@ MODULE_DEPEND(rsu, wlan, 1, 1, 1);
 MODULE_DEPEND(rsu, usb, 1, 1, 1);
 MODULE_DEPEND(rsu, firmware, 1, 1, 1);
 MODULE_VERSION(rsu, 1);
+USB_PNP_HOST_INFO(rsu_devs);
 
 static uint8_t rsu_wme_ac_xfer_map[4] = {
 	[WME_AC_BE] = RSU_BULK_TX_BE_BK,

Modified: head/sys/dev/usb/wlan/if_rum.c
==============================================================================
--- head/sys/dev/usb/wlan/if_rum.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/wlan/if_rum.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -3016,3 +3016,4 @@ DRIVER_MODULE(rum, uhub, rum_driver, rum
 MODULE_DEPEND(rum, wlan, 1, 1, 1);
 MODULE_DEPEND(rum, usb, 1, 1, 1);
 MODULE_VERSION(rum, 1);
+USB_PNP_HOST_INFO(rum_devs);

Modified: head/sys/dev/usb/wlan/if_run.c
==============================================================================
--- head/sys/dev/usb/wlan/if_run.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/wlan/if_run.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -6236,3 +6236,4 @@ MODULE_DEPEND(run, wlan, 1, 1, 1);
 MODULE_DEPEND(run, usb, 1, 1, 1);
 MODULE_DEPEND(run, firmware, 1, 1, 1);
 MODULE_VERSION(run, 1);
+USB_PNP_HOST_INFO(run_devs);

Modified: head/sys/dev/usb/wlan/if_uath.c
==============================================================================
--- head/sys/dev/usb/wlan/if_uath.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/wlan/if_uath.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -2794,3 +2794,4 @@ DRIVER_MODULE(uath, uhub, uath_driver, u
 MODULE_DEPEND(uath, wlan, 1, 1, 1);
 MODULE_DEPEND(uath, usb, 1, 1, 1);
 MODULE_VERSION(uath, 1);
+USB_PNP_HOST_INFO(uath_devs);

Modified: head/sys/dev/usb/wlan/if_upgt.c
==============================================================================
--- head/sys/dev/usb/wlan/if_upgt.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/wlan/if_upgt.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -2347,3 +2347,4 @@ MODULE_VERSION(if_upgt, 1);
 MODULE_DEPEND(if_upgt, usb, 1, 1, 1);
 MODULE_DEPEND(if_upgt, wlan, 1, 1, 1);
 MODULE_DEPEND(if_upgt, upgtfw_fw, 1, 1, 1);
+USB_PNP_HOST_INFO(upgt_devs);

Modified: head/sys/dev/usb/wlan/if_ural.c
==============================================================================
--- head/sys/dev/usb/wlan/if_ural.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/wlan/if_ural.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -401,6 +401,7 @@ DRIVER_MODULE(ural, uhub, ural_driver, u
 MODULE_DEPEND(ural, usb, 1, 1, 1);
 MODULE_DEPEND(ural, wlan, 1, 1, 1);
 MODULE_VERSION(ural, 1);
+USB_PNP_HOST_INFO(ural_devs);
 
 static int
 ural_match(device_t self)

Modified: head/sys/dev/usb/wlan/if_urtw.c
==============================================================================
--- head/sys/dev/usb/wlan/if_urtw.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/wlan/if_urtw.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -4382,3 +4382,4 @@ DRIVER_MODULE(urtw, uhub, urtw_driver, u
 MODULE_DEPEND(urtw, wlan, 1, 1, 1);
 MODULE_DEPEND(urtw, usb, 1, 1, 1);
 MODULE_VERSION(urtw, 1);
+USB_PNP_HOST_INFO(urtw_devs);

Modified: head/sys/dev/usb/wlan/if_urtwn.c
==============================================================================
--- head/sys/dev/usb/wlan/if_urtwn.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/wlan/if_urtwn.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -4156,3 +4156,4 @@ MODULE_DEPEND(urtwn, usb, 1, 1, 1);
 MODULE_DEPEND(urtwn, wlan, 1, 1, 1);
 MODULE_DEPEND(urtwn, firmware, 1, 1, 1);
 MODULE_VERSION(urtwn, 1);
+USB_PNP_HOST_INFO(urtwn_devs);

Modified: head/sys/dev/usb/wlan/if_zyd.c
==============================================================================
--- head/sys/dev/usb/wlan/if_zyd.c	Fri Dec 11 05:27:56 2015	(r292079)
+++ head/sys/dev/usb/wlan/if_zyd.c	Fri Dec 11 05:28:00 2015	(r292080)
@@ -2893,3 +2893,4 @@ DRIVER_MODULE(zyd, uhub, zyd_driver, zyd
 MODULE_DEPEND(zyd, usb, 1, 1, 1);
 MODULE_DEPEND(zyd, wlan, 1, 1, 1);
 MODULE_VERSION(zyd, 1);
+USB_PNP_HOST_INFO(zyd_devs);

Modified: head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c
==============================================================================
--- head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c	Fri Dec 11 05:27:56 2015	(r292079)

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201512110528.tBB5S1rW012042>