Re: [PATCH 3/5] USB: Implement usb_device_match_id()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2019-10-09 at 10:36 -0400, Alan Stern wrote:
> 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.

That should already be possible. The matching code is the same as for
the USB interface drivers.

Something like:
static const struct usb_device_id apple_match[] = {
    { .match_flags = USB_DEVICE_ID_MATCH_VENDOR,
      .idVendor = USB_VENDOR_APPLE
    },
    {}
}

And I couldn't use it in patch 5/5, as that's a range of product IDs,
not all of them (which would be quite a lot more).




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux