Re: [PATCH] Genesys Logic UVC microscopes used to work with Linux

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

 



Maybe you want to handle this with a quirk? I suspect that some
devices might work differently with this patches?

On Sun, Jun 6, 2021 at 3:36 PM Hans Petter Selasky <hps@xxxxxxxxxxx> wrote:
>
> Hi,
>
> Some USB video class compliant devices, like Genesys Logic camera chips,
> used in cheap microscopes, doesn't provide any image if there are UVC
> SET current value commands for the processing unit, before the camera
> stream is activated. Fix this by not issuing any UVC SET current value
> commands, if the value was not changed. This should also work fine with
> existing UVC compliant webcams and optimized the number of needed
> processing unit control endpoint requests.
>
> Signed-off-by: Hans Petter Selasky <hps@xxxxxxxxxxx>
>
> diff --git a/drivers/media/usb/uvc/uvc_ctrl.c
> b/drivers/media/usb/uvc/uvc_ctrl.c
> index b3dde98499f4..0d7137eca331 100644
> --- a/drivers/media/usb/uvc/uvc_ctrl.c
> +++ b/drivers/media/usb/uvc/uvc_ctrl.c
> @@ -1697,7 +1697,13 @@ int uvc_ctrl_set(struct uvc_fh *handle,
>          if (ctrl->info.flags & UVC_CTRL_FLAG_ASYNCHRONOUS)
>                  ctrl->handle = handle;
>
> -       ctrl->dirty = 1;
> +       /* Avoid setting the current value. */
> +       if (!ctrl->dirty &&
> +           memcmp(uvc_ctrl_data(ctrl, UVC_CTRL_DATA_BACKUP),
> +                  uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT),
> +                  ctrl->info.size) != 0)
> +               ctrl->dirty = 1;
> +
>          ctrl->modified = 1;
>          return 0;
>   }



-- 
Ricardo Ribalda



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux