V4L/DVB (13897): gspca - main: Check the interface class at probe time.
authorJean-Francois Moine <moinejf@free.fr>
Tue, 5 Jan 2010 07:44:00 +0000 (04:44 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 26 Feb 2010 18:10:29 +0000 (15:10 -0300)
The USB video interface was checked as having the number zero, but
some webcams have other values. The test is now done on the interface
class which may be either 255 (vendor spec) or 0 (class per interface).

Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/gspca/gspca.c

index 61be007e8fb3affef1c7ce12499ab31689808bd8..351cf8a658fc577e32203068dfaa3a0e1c116946 100644 (file)
@@ -2062,9 +2062,13 @@ int gspca_dev_probe(struct usb_interface *intf,
                PDEBUG(D_ERR, "Too many config");
                return -ENODEV;
        }
+
+       /* check the interface class and ignore the sound interfaces */
        interface = &intf->cur_altsetting->desc;
-       if (interface->bInterfaceNumber > 0) {
-               PDEBUG(D_ERR, "intf != 0");
+       if (interface->bInterfaceClass != USB_CLASS_VENDOR_SPEC
+           && interface->bInterfaceClass != USB_CLASS_PER_INTERFACE) {
+               PDEBUG(D_PROBE, "Interface class %d not handled here",
+                       interface->bInterfaceClass);
                return -ENODEV;
        }