This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: uvcvideo: Fix the bandwdith quirk on USB 3.x
Author:  Michal Pecio <michal.pe...@gmail.com>
Date:    Sun Apr 14 19:00:40 2024 +0200

The bandwidth fixup quirk doesn't know that SuperSpeed exists and has
the same 8 service intervals per millisecond as High Speed, hence its
calculations are wrong.

Assume that all speeds from HS up use 8 intervals per millisecond.

No further changes are needed, updated code has been confirmed to work
with all speeds from FS to SS.

Signed-off-by: Michal Pecio <michal.pe...@gmail.com>
Reviewed-by: Ricardo Ribalda <riba...@chromium.org>
Reviewed-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
Link: https://lore.kernel.org/r/20240414190040.2255a0bc@foxbook
Signed-off-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>

 drivers/media/usb/uvc/uvc_video.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

---

diff --git a/drivers/media/usb/uvc/uvc_video.c 
b/drivers/media/usb/uvc/uvc_video.c
index 4dfc1b86bdee..cd9c29532fb0 100644
--- a/drivers/media/usb/uvc/uvc_video.c
+++ b/drivers/media/usb/uvc/uvc_video.c
@@ -214,13 +214,13 @@ static void uvc_fixup_video_ctrl(struct uvc_streaming 
*stream,
                 * Compute a bandwidth estimation by multiplying the frame
                 * size by the number of video frames per second, divide the
                 * result by the number of USB frames (or micro-frames for
-                * high-speed devices) per second and add the UVC header size
-                * (assumed to be 12 bytes long).
+                * high- and super-speed devices) per second and add the UVC
+                * header size (assumed to be 12 bytes long).
                 */
                bandwidth = frame->wWidth * frame->wHeight / 8 * format->bpp;
                bandwidth *= 10000000 / interval + 1;
                bandwidth /= 1000;
-               if (stream->dev->udev->speed == USB_SPEED_HIGH)
+               if (stream->dev->udev->speed >= USB_SPEED_HIGH)
                        bandwidth /= 8;
                bandwidth += 12;
 

Reply via email to