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
This commit is contained in:
parent
77eac42e70
commit
372c4744b6
@ -6118,3 +6118,4 @@ DRIVER_MODULE_ORDERED(uaudio, uhub, uaudio_driver, uaudio_devclass, NULL, 0, SI_
|
||||
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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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, void *data)
|
||||
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)
|
||||
{
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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_config[UGOLD_N_TRANSFER] = {
|
||||
},
|
||||
};
|
||||
|
||||
static const STRUCT_USB_HOST_ID ugold_devs[] = {
|
||||
{USB_VPI(USB_VENDOR_CHICONY2, USB_PRODUCT_CHICONY2_TEMPER, 0)},
|
||||
};
|
||||
|
||||
static void
|
||||
ugold_timeout(void *arg)
|
||||
{
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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_dual_devs[] = {
|
||||
{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
|
||||
|
@ -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,
|
||||
|
@ -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_devs[] = {
|
||||
#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)
|
||||
{
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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);
|
||||
|
@ -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, CTLFLAG_RWTUN, &udav_debug, 0,
|
||||
#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)
|
||||
{
|
||||
|
@ -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_host_devs[] = {
|
||||
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)
|
||||
{
|
||||
|
@ -212,6 +212,7 @@ DRIVER_MODULE(usie, uhub, usie_driver, usie_devclass, usie_driver_loaded, 0);
|
||||
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,
|
||||
|
@ -497,6 +497,7 @@ DRIVER_MODULE(uhso, uhub, uhso_driver, uhso_devclass, uhso_driver_loaded, 0);
|
||||
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,
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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)
|
||||
|
@ -273,6 +273,7 @@ DRIVER_MODULE(ubsa, uhub, ubsa_driver, ubsa_devclass, NULL, 0);
|
||||
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)
|
||||
|
@ -874,3 +874,4 @@ DRIVER_MODULE(uchcom, uhub, uchcom_driver, uchcom_devclass, NULL, 0);
|
||||
MODULE_DEPEND(uchcom, ucom, 1, 1, 1);
|
||||
MODULE_DEPEND(uchcom, usb, 1, 1, 1);
|
||||
MODULE_VERSION(uchcom, 1);
|
||||
USB_PNP_HOST_INFO(uchcom_devs);
|
||||
|
@ -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_devs[] = {
|
||||
{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 */
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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_devs[] = {
|
||||
#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
|
||||
|
@ -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_devs[] = {
|
||||
{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)
|
||||
{
|
||||
|
@ -1088,6 +1088,7 @@ DRIVER_MODULE(uipaq, uhub, uipaq_driver, uipaq_devclass, NULL, 0);
|
||||
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)
|
||||
|
@ -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);
|
||||
|
@ -278,6 +278,7 @@ DRIVER_MODULE(umcs7840, uhub, umcs7840_driver, umcs7840_devclass, 0, 0);
|
||||
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)
|
||||
|
@ -221,6 +221,7 @@ DRIVER_MODULE(umct, uhub, umct_driver, umct_devclass, NULL, 0);
|
||||
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)
|
||||
|
@ -298,6 +298,8 @@ DRIVER_MODULE(umodem, uhub, umodem_driver, umodem_devclass, NULL, 0);
|
||||
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)
|
||||
|
@ -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)
|
||||
|
@ -326,6 +326,7 @@ DRIVER_MODULE(uplcom, uhub, uplcom_driver, uplcom_devclass, NULL, 0);
|
||||
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)
|
||||
|
@ -382,6 +382,7 @@ DRIVER_MODULE(uslcom, uhub, uslcom_driver, uslcom_devclass, NULL, 0);
|
||||
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)
|
||||
|
@ -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_devs[] = {
|
||||
#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)
|
||||
{
|
||||
|
@ -268,6 +268,7 @@ DRIVER_MODULE(uvscom, uhub, uvscom_driver, uvscom_devclass, NULL, 0);
|
||||
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)
|
||||
|
@ -706,20 +706,21 @@ static driver_t umass_driver = {
|
||||
.size = sizeof(struct umass_softc),
|
||||
};
|
||||
|
||||
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 device probe/attach/detach
|
||||
*/
|
||||
|
||||
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 uint16_t
|
||||
umass_get_proto(struct usb_interface *iface)
|
||||
{
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -1731,6 +1731,7 @@ uhub_child_pnpinfo_string(device_t parent, device_t child,
|
||||
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 parent, device_t child,
|
||||
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",
|
||||
|
@ -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];
|
||||
|
||||
|
@ -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,
|
||||
|
@ -3016,3 +3016,4 @@ DRIVER_MODULE(rum, uhub, rum_driver, rum_devclass, NULL, 0);
|
||||
MODULE_DEPEND(rum, wlan, 1, 1, 1);
|
||||
MODULE_DEPEND(rum, usb, 1, 1, 1);
|
||||
MODULE_VERSION(rum, 1);
|
||||
USB_PNP_HOST_INFO(rum_devs);
|
||||
|
@ -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);
|
||||
|
@ -2794,3 +2794,4 @@ DRIVER_MODULE(uath, uhub, uath_driver, uath_devclass, NULL, 0);
|
||||
MODULE_DEPEND(uath, wlan, 1, 1, 1);
|
||||
MODULE_DEPEND(uath, usb, 1, 1, 1);
|
||||
MODULE_VERSION(uath, 1);
|
||||
USB_PNP_HOST_INFO(uath_devs);
|
||||
|
@ -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);
|
||||
|
@ -401,6 +401,7 @@ DRIVER_MODULE(ural, uhub, ural_driver, ural_devclass, NULL, 0);
|
||||
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)
|
||||
|
@ -4382,3 +4382,4 @@ DRIVER_MODULE(urtw, uhub, urtw_driver, urtw_devclass, NULL, 0);
|
||||
MODULE_DEPEND(urtw, wlan, 1, 1, 1);
|
||||
MODULE_DEPEND(urtw, usb, 1, 1, 1);
|
||||
MODULE_VERSION(urtw, 1);
|
||||
USB_PNP_HOST_INFO(urtw_devs);
|
||||
|
@ -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);
|
||||
|
@ -2893,3 +2893,4 @@ DRIVER_MODULE(zyd, uhub, zyd_driver, zyd_devclass, NULL, 0);
|
||||
MODULE_DEPEND(zyd, usb, 1, 1, 1);
|
||||
MODULE_DEPEND(zyd, wlan, 1, 1, 1);
|
||||
MODULE_VERSION(zyd, 1);
|
||||
USB_PNP_HOST_INFO(zyd_devs);
|
||||
|
@ -1872,4 +1872,4 @@ MODULE_VERSION(ng_ubt, NG_BLUETOOTH_VERSION);
|
||||
MODULE_DEPEND(ng_ubt, netgraph, NG_ABI_VERSION, NG_ABI_VERSION, NG_ABI_VERSION);
|
||||
MODULE_DEPEND(ng_ubt, ng_hci, NG_BLUETOOTH_VERSION, NG_BLUETOOTH_VERSION, NG_BLUETOOTH_VERSION);
|
||||
MODULE_DEPEND(ng_ubt, usb, 1, 1, 1);
|
||||
|
||||
USB_PNP_HOST_INFO(ubt_devs);
|
||||
|
@ -170,8 +170,15 @@ static driver_t ubtbcmfw_driver =
|
||||
.size = sizeof(struct ubtbcmfw_softc),
|
||||
};
|
||||
|
||||
static const STRUCT_USB_HOST_ID ubtbcmfw_devs[] = {
|
||||
/* Broadcom BCM2033 devices only */
|
||||
{ USB_VPI(USB_VENDOR_BROADCOM, USB_PRODUCT_BROADCOM_BCM2033, 0) },
|
||||
};
|
||||
|
||||
|
||||
DRIVER_MODULE(ubtbcmfw, uhub, ubtbcmfw_driver, ubtbcmfw_devclass, NULL, 0);
|
||||
MODULE_DEPEND(ubtbcmfw, usb, 1, 1, 1);
|
||||
USB_PNP_HOST_INFO(ubtbcmfw_devs);
|
||||
|
||||
/*
|
||||
* Probe for a USB Bluetooth device
|
||||
@ -180,11 +187,6 @@ MODULE_DEPEND(ubtbcmfw, usb, 1, 1, 1);
|
||||
static int
|
||||
ubtbcmfw_probe(device_t dev)
|
||||
{
|
||||
static const STRUCT_USB_HOST_ID devs[] = {
|
||||
/* Broadcom BCM2033 devices only */
|
||||
{ USB_VPI(USB_VENDOR_BROADCOM, USB_PRODUCT_BROADCOM_BCM2033, 0) },
|
||||
};
|
||||
|
||||
struct usb_attach_arg *uaa = device_get_ivars(dev);
|
||||
|
||||
if (uaa->usb_mode != USB_MODE_HOST)
|
||||
@ -193,7 +195,7 @@ ubtbcmfw_probe(device_t dev)
|
||||
if (uaa->info.bIfaceIndex != 0)
|
||||
return (ENXIO);
|
||||
|
||||
return (usbd_lookup_id_by_uaa(devs, sizeof(devs), uaa));
|
||||
return (usbd_lookup_id_by_uaa(ubtbcmfw_devs, sizeof(ubtbcmfw_devs), uaa));
|
||||
} /* ubtbcmfw_probe */
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user