Merge tag 'usb-6.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
[platform/kernel/linux-rpi.git] / drivers / media / usb / uvc / uvc_driver.c
index 2891bc9..215fb48 100644 (file)
@@ -1265,10 +1265,6 @@ static int uvc_gpio_parse(struct uvc_device *dev)
        if (IS_ERR_OR_NULL(gpio_privacy))
                return PTR_ERR_OR_ZERO(gpio_privacy);
 
-       unit = uvc_alloc_entity(UVC_EXT_GPIO_UNIT, UVC_EXT_GPIO_UNIT_ID, 0, 1);
-       if (!unit)
-               return -ENOMEM;
-
        irq = gpiod_to_irq(gpio_privacy);
        if (irq < 0) {
                if (irq != EPROBE_DEFER)
@@ -1277,6 +1273,10 @@ static int uvc_gpio_parse(struct uvc_device *dev)
                return irq;
        }
 
+       unit = uvc_alloc_entity(UVC_EXT_GPIO_UNIT, UVC_EXT_GPIO_UNIT_ID, 0, 1);
+       if (!unit)
+               return -ENOMEM;
+
        unit->gpio.gpio_privacy = gpio_privacy;
        unit->gpio.irq = irq;
        unit->gpio.bControlSize = 1;
@@ -2452,7 +2452,7 @@ static const struct usb_device_id uvc_ids[] = {
          .idProduct            = 0x4034,
          .bInterfaceClass      = USB_CLASS_VIDEO,
          .bInterfaceSubClass   = 1,
-         .bInterfaceProtocol   = 0,
+         .bInterfaceProtocol   = UVC_PC_PROTOCOL_15,
          .driver_info          = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
        /* LogiLink Wireless Webcam */
        { .match_flags          = USB_DEVICE_ID_MATCH_DEVICE
@@ -2976,6 +2976,15 @@ static const struct usb_device_id uvc_ids[] = {
          .bInterfaceSubClass   = 1,
          .bInterfaceProtocol   = 0,
          .driver_info          = UVC_INFO_QUIRK(UVC_QUIRK_FORCE_BPP) },
+       /* Sonix Technology USB 2.0 Camera */
+       { .match_flags          = USB_DEVICE_ID_MATCH_DEVICE
+                               | USB_DEVICE_ID_MATCH_INT_INFO,
+         .idVendor             = 0x3277,
+         .idProduct            = 0x0072,
+         .bInterfaceClass      = USB_CLASS_VIDEO,
+         .bInterfaceSubClass   = 1,
+         .bInterfaceProtocol   = 0,
+         .driver_info          = (kernel_ulong_t)&uvc_ctrl_power_line_limited },
        /* Acer EasyCamera */
        { .match_flags          = USB_DEVICE_ID_MATCH_DEVICE
                                | USB_DEVICE_ID_MATCH_INT_INFO,