Re: [PATCH] media: uvcvideo: fix the bandwdith quirk on USB 3.x

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

 



Hi Michal,

Thank you for the patch.

On Sun, Apr 14, 2024 at 07:00:40PM +0200, Michal Pecio wrote:
> 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.pecio@xxxxxxxxx>

Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>

> ---
>  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 28dde08ec6c5..4b86bef06a52 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;
>  

-- 
Regards,

Laurent Pinchart




[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