Download raw body.
Support LG UltraFine Display Camera
On Sat, Nov 30, 2024 at 11:25:15PM GMT, Kirill A. Korinsky wrote:
> tech@,
>
> A new quirk UVIDEO_FLAG_RENEGOTIATE_AFTER_SET_ALT from this thread [1] is
> required for at least one more camera: LG UltraFine Display Camera. And this
> camera allows to discover a bug with bulk processing inside uvideo: here
> usbd_get_xfer_status is missing and current code is built on the assumption
> that device always returns dwMaxPayloadTransferSize bytes.
>
> Here is a diff that adds the missing usbd_get_xfer_status and the quirk.
>
> Feedback? Tests? Ok?
I currently have no bulk device here to regression test, but the size
fix makes sense to me.
ok mglocker@
> Index: sys/dev/usb/uvideo.c
> ===================================================================
> RCS file: /home/cvs/src/sys/dev/usb/uvideo.c,v
> diff -u -p -r1.224 uvideo.c
> --- sys/dev/usb/uvideo.c 30 Nov 2024 17:47:23 -0000 1.224
> +++ sys/dev/usb/uvideo.c 30 Nov 2024 22:20:00 -0000
> @@ -386,6 +386,12 @@ const struct uvideo_devs {
> NULL,
> UVIDEO_FLAG_RENEGOTIATE_AFTER_SET_ALT
> },
> + { /* Needs renegotiate after setting alternate interface */
> + { USB_VENDOR_LG, USB_PRODUCT_LG_ULTRA_FINE_VIDEO },
> + NULL,
> + NULL,
> + UVIDEO_FLAG_RENEGOTIATE_AFTER_SET_ALT
> + },
> };
> #define uvideo_lookup(v, p) \
> ((const struct uvideo_devs *)usb_lookup(uvideo_devs, v, p))
> @@ -2051,6 +2057,9 @@ uvideo_vs_start_bulk_thread(void *arg)
> DEVNAME(sc), usbd_errstr(error));
> break;
> }
> +
> + usbd_get_xfer_status(sc->sc_vs_cur->bxfer.xfer,
> + NULL, NULL, &size, NULL);
>
> DPRINTF(2, "%s: *** buffer len = %d\n", DEVNAME(sc), size);
>
> Index: sys/dev/usb/usbdevs
> ===================================================================
> RCS file: /home/cvs/src/sys/dev/usb/usbdevs,v
> diff -u -p -r1.772 usbdevs
> --- sys/dev/usb/usbdevs 30 Nov 2024 17:41:57 -0000 1.772
> +++ sys/dev/usb/usbdevs 30 Nov 2024 22:21:37 -0000
> @@ -2704,6 +2704,7 @@ product LEXMARK S2450 0x0009 Optra S 24
> /* LG products */
> product LG RTL8153 0x9819 RTL8153
> product LG RTL8153B 0x9820 RTL8153
> +product LG ULTRA_FINE_VIDEO 0x9a68 LG UltraFine Display Camera
>
> /* Liebert products */
> product LIEBERT UPS 0xffff UPS
> Index: share/man/man4/uvideo.4
> ===================================================================
> RCS file: /home/cvs/src/share/man/man4/uvideo.4,v
> diff -u -p -r1.44 uvideo.4
> --- share/man/man4/uvideo.4 30 Nov 2024 20:15:03 -0000 1.44
> +++ share/man/man4/uvideo.4 30 Nov 2024 22:07:06 -0000
> @@ -47,6 +47,8 @@ Jabra PanaCast 20
> .It
> Lenovo EasyCamera (Lenovo IdeaPad s10e Notebooks)
> .It
> +LG UltraFine Display Camera
> +.It
> Logitech QuickCam for Notebooks Pro
> .It
> Logitech QuickCam Communicate Deluxe
>
>
> Footnotes:
> [1] https://marc.info/?t=173266150800001&r=1&w=2
>
> --
> wbr, Kirill
Support LG UltraFine Display Camera