diff mbox series

media/uvcvideo: add quirk for invalid dev_sof in Logitech C920

Message ID 20240325142611.15550-1-oleksandr@natalenko.name (mailing list archive)
State New
Headers show
Series media/uvcvideo: add quirk for invalid dev_sof in Logitech C920 | expand

Commit Message

Oleksandr Natalenko March 25, 2024, 2:26 p.m. UTC
Similarly to Logitech C922, C920 seems to also suffer from a firmware
bug that breaks hardware timestamping.

Add a quirk for this camera model too.

Before applying the quirk:

```
100 (4) [-] none 100 200717 B 212.919114 213.079004 33.727 fps ts mono/SoE
101 (5) [-] none 101 200889 B 213.003703 213.114996 11.822 fps ts mono/SoE
102 (6) [-] none 102 200926 B 213.035571 213.146999 31.379 fps ts mono/SoE
103 (7) [-] none 103 200839 B 213.067424 213.179003 31.394 fps ts mono/SoE
104 (0) [-] none 104 200692 B 213.293180 213.214991 4.430 fps ts mono/SoE
105 (1) [-] none 105 200937 B 213.322374 213.247001 34.254 fps ts mono/SoE
106 (2) [-] none 106 201013 B 213.352228 213.279005 33.496 fps ts mono/SoE
…
```

After applying the quirk:

```
154 (2) [-] none 154 192417 B 42.199823 42.207788 27.779 fps ts mono/SoE
155 (3) [-] none 155 192040 B 42.231834 42.239791 31.239 fps ts mono/SoE
156 (4) [-] none 156 192213 B 42.263823 42.271822 31.261 fps ts mono/SoE
157 (5) [-] none 157 191981 B 42.299824 42.303827 27.777 fps ts mono/SoE
158 (6) [-] none 158 191953 B 42.331835 42.339811 31.239 fps ts mono/SoE
159 (7) [-] none 159 191904 B 42.363824 42.371813 31.261 fps ts mono/SoE
160 (0) [-] none 160 192210 B 42.399834 42.407801 27.770 fps ts mono/SoE
```

Link: https://lore.kernel.org/lkml/5764213.DvuYhMxLoT@natalenko.name/
Reviewed-by: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: Oleksandr Natalenko <oleksandr@natalenko.name>
---
 drivers/media/usb/uvc/uvc_driver.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Oleksandr Natalenko April 1, 2024, 4:45 p.m. UTC | #1
On pondělí 25. března 2024 15:26:11, CEST Oleksandr Natalenko wrote:
> Similarly to Logitech C922, C920 seems to also suffer from a firmware
> bug that breaks hardware timestamping.
> 
> Add a quirk for this camera model too.
> 
> Before applying the quirk:
> 
> ```
> 100 (4) [-] none 100 200717 B 212.919114 213.079004 33.727 fps ts mono/SoE
> 101 (5) [-] none 101 200889 B 213.003703 213.114996 11.822 fps ts mono/SoE
> 102 (6) [-] none 102 200926 B 213.035571 213.146999 31.379 fps ts mono/SoE
> 103 (7) [-] none 103 200839 B 213.067424 213.179003 31.394 fps ts mono/SoE
> 104 (0) [-] none 104 200692 B 213.293180 213.214991 4.430 fps ts mono/SoE
> 105 (1) [-] none 105 200937 B 213.322374 213.247001 34.254 fps ts mono/SoE
> 106 (2) [-] none 106 201013 B 213.352228 213.279005 33.496 fps ts mono/SoE
> …
> ```
> 
> After applying the quirk:
> 
> ```
> 154 (2) [-] none 154 192417 B 42.199823 42.207788 27.779 fps ts mono/SoE
> 155 (3) [-] none 155 192040 B 42.231834 42.239791 31.239 fps ts mono/SoE
> 156 (4) [-] none 156 192213 B 42.263823 42.271822 31.261 fps ts mono/SoE
> 157 (5) [-] none 157 191981 B 42.299824 42.303827 27.777 fps ts mono/SoE
> 158 (6) [-] none 158 191953 B 42.331835 42.339811 31.239 fps ts mono/SoE
> 159 (7) [-] none 159 191904 B 42.363824 42.371813 31.261 fps ts mono/SoE
> 160 (0) [-] none 160 192210 B 42.399834 42.407801 27.770 fps ts mono/SoE
> ```
> 
> Link: https://lore.kernel.org/lkml/5764213.DvuYhMxLoT@natalenko.name/
> Reviewed-by: Ricardo Ribalda <ribalda@chromium.org>
> Signed-off-by: Oleksandr Natalenko <oleksandr@natalenko.name>
> ---
>  drivers/media/usb/uvc/uvc_driver.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> index 723e6d5680c2e..444d7089885ea 100644
> --- a/drivers/media/usb/uvc/uvc_driver.c
> +++ b/drivers/media/usb/uvc/uvc_driver.c
> @@ -2573,7 +2573,8 @@ static const struct usb_device_id uvc_ids[] = {
>  	  .bInterfaceClass	= USB_CLASS_VIDEO,
>  	  .bInterfaceSubClass	= 1,
>  	  .bInterfaceProtocol	= 0,
> -	  .driver_info		= UVC_INFO_QUIRK(UVC_QUIRK_RESTORE_CTRLS_ON_INIT) },
> +	  .driver_info		= UVC_INFO_QUIRK(UVC_QUIRK_RESTORE_CTRLS_ON_INIT
> +					       | UVC_QUIRK_INVALID_DEVICE_SOF) },
>  	/* Logitech HD Pro Webcam C922 */
>  	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
>  				| USB_DEVICE_ID_MATCH_INT_INFO,
> 

Gentle ping on this one.

Also, should I have added:

Fixes: 5d0fd3c806b9 ("[media] uvcvideo: Disable hardware timestamps by default")

?

(it's not that this change re-enables HW timestamping, but 5d0fd3c806b9 explicitly mentions C920 as affected)
Laurent Pinchart April 4, 2024, 1:11 a.m. UTC | #2
Hi Oleksandr,

On Mon, Apr 01, 2024 at 06:45:16PM +0200, Oleksandr Natalenko wrote:
> On pondělí 25. března 2024 15:26:11, CEST Oleksandr Natalenko wrote:
> > Similarly to Logitech C922, C920 seems to also suffer from a firmware
> > bug that breaks hardware timestamping.
> > 
> > Add a quirk for this camera model too.
> > 
> > Before applying the quirk:
> > 
> > ```
> > 100 (4) [-] none 100 200717 B 212.919114 213.079004 33.727 fps ts mono/SoE
> > 101 (5) [-] none 101 200889 B 213.003703 213.114996 11.822 fps ts mono/SoE
> > 102 (6) [-] none 102 200926 B 213.035571 213.146999 31.379 fps ts mono/SoE
> > 103 (7) [-] none 103 200839 B 213.067424 213.179003 31.394 fps ts mono/SoE
> > 104 (0) [-] none 104 200692 B 213.293180 213.214991 4.430 fps ts mono/SoE
> > 105 (1) [-] none 105 200937 B 213.322374 213.247001 34.254 fps ts mono/SoE
> > 106 (2) [-] none 106 201013 B 213.352228 213.279005 33.496 fps ts mono/SoE
> > …
> > ```
> > 
> > After applying the quirk:
> > 
> > ```
> > 154 (2) [-] none 154 192417 B 42.199823 42.207788 27.779 fps ts mono/SoE
> > 155 (3) [-] none 155 192040 B 42.231834 42.239791 31.239 fps ts mono/SoE
> > 156 (4) [-] none 156 192213 B 42.263823 42.271822 31.261 fps ts mono/SoE
> > 157 (5) [-] none 157 191981 B 42.299824 42.303827 27.777 fps ts mono/SoE
> > 158 (6) [-] none 158 191953 B 42.331835 42.339811 31.239 fps ts mono/SoE
> > 159 (7) [-] none 159 191904 B 42.363824 42.371813 31.261 fps ts mono/SoE
> > 160 (0) [-] none 160 192210 B 42.399834 42.407801 27.770 fps ts mono/SoE
> > ```
> > 
> > Link: https://lore.kernel.org/lkml/5764213.DvuYhMxLoT@natalenko.name/
> > Reviewed-by: Ricardo Ribalda <ribalda@chromium.org>
> > Signed-off-by: Oleksandr Natalenko <oleksandr@natalenko.name>
> > ---
> >  drivers/media/usb/uvc/uvc_driver.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> > index 723e6d5680c2e..444d7089885ea 100644
> > --- a/drivers/media/usb/uvc/uvc_driver.c
> > +++ b/drivers/media/usb/uvc/uvc_driver.c
> > @@ -2573,7 +2573,8 @@ static const struct usb_device_id uvc_ids[] = {
> >  	  .bInterfaceClass	= USB_CLASS_VIDEO,
> >  	  .bInterfaceSubClass	= 1,
> >  	  .bInterfaceProtocol	= 0,
> > -	  .driver_info		= UVC_INFO_QUIRK(UVC_QUIRK_RESTORE_CTRLS_ON_INIT) },
> > +	  .driver_info		= UVC_INFO_QUIRK(UVC_QUIRK_RESTORE_CTRLS_ON_INIT
> > +					       | UVC_QUIRK_INVALID_DEVICE_SOF) },
> >  	/* Logitech HD Pro Webcam C922 */
> >  	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
> >  				| USB_DEVICE_ID_MATCH_INT_INFO,
> > 
> 
> Gentle ping on this one.

Ricardo, could you include this in the next version of your hw timestamp
series ?

> Also, should I have added:
> 
> Fixes: 5d0fd3c806b9 ("[media] uvcvideo: Disable hardware timestamps by default")
> 
> ?

I don't think that's needed, no.

> (it's not that this change re-enables HW timestamping, but
> 5d0fd3c806b9 explicitly mentions C920 as affected)
Ricardo Ribalda April 4, 2024, 6:35 a.m. UTC | #3
Hi Laurent

On Thu, 4 Apr 2024 at 03:11, Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> Hi Oleksandr,
>
> On Mon, Apr 01, 2024 at 06:45:16PM +0200, Oleksandr Natalenko wrote:
> > On pondělí 25. března 2024 15:26:11, CEST Oleksandr Natalenko wrote:
> > > Similarly to Logitech C922, C920 seems to also suffer from a firmware
> > > bug that breaks hardware timestamping.
> > >
> > > Add a quirk for this camera model too.
> > >
> > > Before applying the quirk:
> > >
> > > ```
> > > 100 (4) [-] none 100 200717 B 212.919114 213.079004 33.727 fps ts mono/SoE
> > > 101 (5) [-] none 101 200889 B 213.003703 213.114996 11.822 fps ts mono/SoE
> > > 102 (6) [-] none 102 200926 B 213.035571 213.146999 31.379 fps ts mono/SoE
> > > 103 (7) [-] none 103 200839 B 213.067424 213.179003 31.394 fps ts mono/SoE
> > > 104 (0) [-] none 104 200692 B 213.293180 213.214991 4.430 fps ts mono/SoE
> > > 105 (1) [-] none 105 200937 B 213.322374 213.247001 34.254 fps ts mono/SoE
> > > 106 (2) [-] none 106 201013 B 213.352228 213.279005 33.496 fps ts mono/SoE
> > > …
> > > ```
> > >
> > > After applying the quirk:
> > >
> > > ```
> > > 154 (2) [-] none 154 192417 B 42.199823 42.207788 27.779 fps ts mono/SoE
> > > 155 (3) [-] none 155 192040 B 42.231834 42.239791 31.239 fps ts mono/SoE
> > > 156 (4) [-] none 156 192213 B 42.263823 42.271822 31.261 fps ts mono/SoE
> > > 157 (5) [-] none 157 191981 B 42.299824 42.303827 27.777 fps ts mono/SoE
> > > 158 (6) [-] none 158 191953 B 42.331835 42.339811 31.239 fps ts mono/SoE
> > > 159 (7) [-] none 159 191904 B 42.363824 42.371813 31.261 fps ts mono/SoE
> > > 160 (0) [-] none 160 192210 B 42.399834 42.407801 27.770 fps ts mono/SoE
> > > ```
> > >
> > > Link: https://lore.kernel.org/lkml/5764213.DvuYhMxLoT@natalenko.name/
> > > Reviewed-by: Ricardo Ribalda <ribalda@chromium.org>
> > > Signed-off-by: Oleksandr Natalenko <oleksandr@natalenko.name>
> > > ---
> > >  drivers/media/usb/uvc/uvc_driver.c | 3 ++-
> > >  1 file changed, 2 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> > > index 723e6d5680c2e..444d7089885ea 100644
> > > --- a/drivers/media/usb/uvc/uvc_driver.c
> > > +++ b/drivers/media/usb/uvc/uvc_driver.c
> > > @@ -2573,7 +2573,8 @@ static const struct usb_device_id uvc_ids[] = {
> > >       .bInterfaceClass      = USB_CLASS_VIDEO,
> > >       .bInterfaceSubClass   = 1,
> > >       .bInterfaceProtocol   = 0,
> > > -     .driver_info          = UVC_INFO_QUIRK(UVC_QUIRK_RESTORE_CTRLS_ON_INIT) },
> > > +     .driver_info          = UVC_INFO_QUIRK(UVC_QUIRK_RESTORE_CTRLS_ON_INIT
> > > +                                          | UVC_QUIRK_INVALID_DEVICE_SOF) },
> > >     /* Logitech HD Pro Webcam C922 */
> > >     { .match_flags          = USB_DEVICE_ID_MATCH_DEVICE
> > >                             | USB_DEVICE_ID_MATCH_INT_INFO,
> > >
> >
> > Gentle ping on this one.
>
> Ricardo, could you include this in the next version of your hw timestamp
> series ?

There are no outstanding comments on the series
https://patchwork.linuxtv.org/project/linux-media/list/?series=12485

Do you need me to send a v11 with this patch? or you can take that
directly from your tree?

Thanks!

>
> > Also, should I have added:
> >
> > Fixes: 5d0fd3c806b9 ("[media] uvcvideo: Disable hardware timestamps by default")
> >
> > ?
>
> I don't think that's needed, no.
>
> > (it's not that this change re-enables HW timestamping, but
> > 5d0fd3c806b9 explicitly mentions C920 as affected)
>
> --
> Regards,
>
> Laurent Pinchart
diff mbox series

Patch

diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
index 723e6d5680c2e..444d7089885ea 100644
--- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c
@@ -2573,7 +2573,8 @@  static const struct usb_device_id uvc_ids[] = {
 	  .bInterfaceClass	= USB_CLASS_VIDEO,
 	  .bInterfaceSubClass	= 1,
 	  .bInterfaceProtocol	= 0,
-	  .driver_info		= UVC_INFO_QUIRK(UVC_QUIRK_RESTORE_CTRLS_ON_INIT) },
+	  .driver_info		= UVC_INFO_QUIRK(UVC_QUIRK_RESTORE_CTRLS_ON_INIT
+					       | UVC_QUIRK_INVALID_DEVICE_SOF) },
 	/* Logitech HD Pro Webcam C922 */
 	{ .match_flags		= USB_DEVICE_ID_MATCH_DEVICE
 				| USB_DEVICE_ID_MATCH_INT_INFO,