Add a little infrastructure so that individual drivers can easily check

if thee was a vendor+product locator match.
This commit is contained in:
augustss 2001-08-15 00:04:59 +00:00
parent 937e77aec5
commit dfe96bae01
2 changed files with 15 additions and 2 deletions

@ -1,4 +1,4 @@
/* $NetBSD: usb_subr.c,v 1.86 2001/05/16 04:50:11 lukem Exp $ */
/* $NetBSD: usb_subr.c,v 1.87 2001/08/15 00:04:59 augustss Exp $ */
/* $FreeBSD: src/sys/dev/usb/usb_subr.c,v 1.18 1999/11/17 22:33:47 n_hibma Exp $ */
/*
@ -1165,6 +1165,18 @@ usbd_submatch(struct device *parent, void *match, void *aux)
)
)
return 0;
if (cf->uhubcf_vendor != UHUB_UNK_VENDOR &&
cf->uhubcf_vendor == uaa->vendor &&
cf->uhubcf_product != UHUB_UNK_PRODUCT &&
cf->uhubcf_product == uaa->product) {
/* We have a vendor&product locator match */
if (cf->uhubcf_release != UHUB_UNK_RELEASE &&
cf->uhubcf_release == uaa->release)
uaa->matchlvl = UMATCH_VENDOR_PRODUCT_REV;
else
uaa->matchlvl = UMATCH_VENDOR_PRODUCT;
} else
uaa->matchlvl = 0;
return ((*cf->cf_attach->ca_match)(parent, cf, aux));
}

@ -1,4 +1,4 @@
/* $NetBSD: usbdi.h,v 1.52 2001/05/01 16:43:44 lukem Exp $ */
/* $NetBSD: usbdi.h,v 1.53 2001/08/15 00:04:59 augustss Exp $ */
/* $FreeBSD: src/sys/dev/usb/usbdi.h,v 1.18 1999/11/17 22:33:49 n_hibma Exp $ */
/*
@ -202,6 +202,7 @@ struct usb_attach_arg {
int vendor;
int product;
int release;
int matchlvl;
usbd_device_handle device; /* current device */
usbd_interface_handle iface; /* current interface */
int usegeneric;