Since we cannot really guarantee that devices will be at the same place on the USB tree and this stuff is unused, I don't see a reason to keep it.
ok? Index: usb_subr.c =================================================================== RCS file: /cvs/src/sys/dev/usb/usb_subr.c,v retrieving revision 1.110 diff -u -p -r1.110 usb_subr.c --- usb_subr.c 5 Oct 2014 08:40:29 -0000 1.110 +++ usb_subr.c 30 Oct 2014 22:45:02 -0000 @@ -66,7 +66,6 @@ void usbd_devinfo_vp(struct usbd_device char *usbd_get_string(struct usbd_device *, int, char *, size_t); int usbd_getnewaddr(struct usbd_bus *); int usbd_print(void *, const char *); -int usbd_submatch(struct device *, void *, void *); void usbd_free_iface_data(struct usbd_device *, int); usbd_status usbd_probe_and_attach(struct device *, struct usbd_device *, int, int); @@ -873,7 +872,7 @@ usbd_probe_and_attach(struct device *par /* First try with device specific drivers. */ DPRINTF(("usbd_probe_and_attach trying device specific drivers\n")); - dv = config_found_sm(parent, &uaa, usbd_print, usbd_submatch); + dv = config_found(parent, &uaa, usbd_print); if (dv) { dev->subdevs = malloc(2 * sizeof dv, M_USB, M_NOWAIT); if (dev->subdevs == NULL) { @@ -933,8 +932,7 @@ usbd_probe_and_attach(struct device *par continue; uaa.iface = ifaces[i]; uaa.ifaceno = ifaces[i]->idesc->bInterfaceNumber; - dv = config_found_sm(parent, &uaa, usbd_print, - usbd_submatch); + dv = config_found(parent, &uaa, usbd_print); if (dv != NULL) { dev->subdevs[dev->ndevs++] = dv; usbd_claim_iface(dev, i); @@ -970,7 +968,7 @@ generic: uaa.configno = dev->ndevs == 0 ? UHUB_UNK_CONFIGURATION : dev->cdesc->bConfigurationValue; uaa.ifaceno = UHUB_UNK_INTERFACE; - dv = config_found_sm(parent, &uaa, usbd_print, usbd_submatch); + dv = config_found(parent, &uaa, usbd_print); if (dv != NULL) { if (dev->ndevs == 0) { dev->subdevs = malloc(2 * sizeof dv, M_USB, M_NOWAIT); @@ -1257,45 +1255,6 @@ usbd_print(void *aux, const char *pnp) printf(" %s\n", devinfop); free(devinfop, M_TEMP, 0); return (UNCONF); -} - -int -usbd_submatch(struct device *parent, void *match, void *aux) -{ - struct cfdata *cf = match; - struct usb_attach_arg *uaa = aux; - - DPRINTFN(5,("usbd_submatch port=%d,%d configno=%d,%d " - "ifaceno=%d,%d vendor=0x%x,0x%x product=0x%x,0x%x release=%d,%d\n", - uaa->port, cf->uhubcf_port, - uaa->configno, cf->uhubcf_configuration, - uaa->ifaceno, cf->uhubcf_interface, - uaa->vendor, cf->uhubcf_vendor, - uaa->product, cf->uhubcf_product, - uaa->release, cf->uhubcf_release)); - if (uaa->port != 0 && /* root hub has port 0, it should match */ - ((uaa->port != 0 && - cf->uhubcf_port != UHUB_UNK_PORT && - cf->uhubcf_port != uaa->port) || - (uaa->configno != UHUB_UNK_CONFIGURATION && - cf->uhubcf_configuration != UHUB_UNK_CONFIGURATION && - cf->uhubcf_configuration != uaa->configno) || - (uaa->ifaceno != UHUB_UNK_INTERFACE && - cf->uhubcf_interface != UHUB_UNK_INTERFACE && - cf->uhubcf_interface != uaa->ifaceno) || - (uaa->vendor != UHUB_UNK_VENDOR && - cf->uhubcf_vendor != UHUB_UNK_VENDOR && - cf->uhubcf_vendor != uaa->vendor) || - (uaa->product != UHUB_UNK_PRODUCT && - cf->uhubcf_product != UHUB_UNK_PRODUCT && - cf->uhubcf_product != uaa->product) || - (uaa->release != UHUB_UNK_RELEASE && - cf->uhubcf_release != UHUB_UNK_RELEASE && - cf->uhubcf_release != uaa->release) - ) - ) - return 0; - return ((*cf->cf_attach->ca_match)(parent, cf, aux)); } void Index: usbdivar.h =================================================================== RCS file: /cvs/src/sys/dev/usb/usbdivar.h,v retrieving revision 1.62 diff -u -p -r1.62 usbdivar.h --- usbdivar.h 9 Aug 2014 09:45:14 -0000 1.62 +++ usbdivar.h 30 Oct 2014 22:47:06 -0000 @@ -253,39 +253,8 @@ void usb_needs_explore(struct usbd_devi void usb_needs_reattach(struct usbd_device *); void usb_schedsoftintr(struct usbd_bus *); -/* Locator stuff. */ - -/* XXX these values are used to statically bind some elements in the USB tree - * to specific driver instances. This should be somehow emulated in FreeBSD - * but can be done later on. - * The values are copied from the files.usb file in the NetBSD sources. - */ -#define UHUBCF_PORT_DEFAULT -1 -#define UHUBCF_CONFIGURATION_DEFAULT -1 -#define UHUBCF_INTERFACE_DEFAULT -1 -#define UHUBCF_VENDOR_DEFAULT -1 -#define UHUBCF_PRODUCT_DEFAULT -1 -#define UHUBCF_RELEASE_DEFAULT -1 - -#define UHUBCF_PORT 0 -#define UHUBCF_CONFIGURATION 1 -#define UHUBCF_INTERFACE 2 -#define UHUBCF_VENDOR 3 -#define UHUBCF_PRODUCT 4 -#define UHUBCF_RELEASE 5 - -#define uhubcf_port cf_loc[UHUBCF_PORT] -#define uhubcf_configuration cf_loc[UHUBCF_CONFIGURATION] -#define uhubcf_interface cf_loc[UHUBCF_INTERFACE] -#define uhubcf_vendor cf_loc[UHUBCF_VENDOR] -#define uhubcf_product cf_loc[UHUBCF_PRODUCT] -#define uhubcf_release cf_loc[UHUBCF_RELEASE] -#define UHUB_UNK_PORT UHUBCF_PORT_DEFAULT /* wildcarded 'port' */ -#define UHUB_UNK_CONFIGURATION UHUBCF_CONFIGURATION_DEFAULT /* wildcarded 'configuration' */ -#define UHUB_UNK_INTERFACE UHUBCF_INTERFACE_DEFAULT /* wildcarded 'interface' */ -#define UHUB_UNK_VENDOR UHUBCF_VENDOR_DEFAULT /* wildcarded 'vendor' */ -#define UHUB_UNK_PRODUCT UHUBCF_PRODUCT_DEFAULT /* wildcarded 'product' */ -#define UHUB_UNK_RELEASE UHUBCF_RELEASE_DEFAULT /* wildcarded 'release' */ +#define UHUB_UNK_CONFIGURATION -1 +#define UHUB_UNK_INTERFACE -1 static inline int usbd_xfer_isread(struct usbd_xfer *xfer)