On Wed, 9 Oct 2019, Bastien Nocera wrote: > Match a usb_device with a table of IDs. > > Signed-off-by: Bastien Nocera <hadess@xxxxxxxxxx> > --- > drivers/usb/core/driver.c | 15 +++++++++++++++ > include/linux/usb.h | 2 ++ > 2 files changed, 17 insertions(+) > > diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c > index 863e380a272b..50f92da8afcf 100644 > --- a/drivers/usb/core/driver.c > +++ b/drivers/usb/core/driver.c > @@ -800,6 +800,21 @@ const struct usb_device_id *usb_match_id(struct usb_interface *interface, > } > EXPORT_SYMBOL_GPL(usb_match_id); > > +const struct usb_device_id *usb_device_match_id(struct usb_device *udev, > + const struct usb_device_id *id) > +{ > + if (!id) > + return NULL; > + > + for (; id->idVendor || id->idProduct ; id++) { > + if (usb_match_device(udev, id)) > + return id; > + } This would be better if you allowed matching against just the idVendor field rather than matching against both. That would make it a lot simpler to match all Apple devices, for instance. Alan Stern