From nobody Fri Apr 3 20:54:59 2026 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CC45E1CF7D5 for ; Mon, 23 Mar 2026 13:03:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774271001; cv=none; b=EW+MNjjZaMz2UTbg3TsIq3QO+UMK+G1R6Y8X1HENQYXgoNpKkQW5wO82Vu/LZnwYCWBneobZBJf6NDmTyut96tOzWKTvlNKBV6ha2JJBpF71iDr7ylyu9fyY647RAEF36eUkg12sr6KvEIOUh8Rxb6lfy9brVLDgHUmS/bskuPU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774271001; c=relaxed/simple; bh=rm8yRXyKEMtcqCElasHXW+eehwQwuzwxvRFVsv2V3QE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=Aa2GhOnBqiydq8LJwg9bkdcx65FOnQEYqa5DlWDRmK0MrOT1zbclmtFZ4AnvKqzBqoAZ3uNe9SS2AnsXjSKHruI8z4WHhFgwIREgio6noMPctaQrfNAY9eUaufw+DNTzSgMf/iO2iI0ija6TxTW0llLlC+ukZYSwjYghLmrodVo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=geSBPm+J; arc=none smtp.client-ip=209.85.167.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="geSBPm+J" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-5a10d130b37so3229304e87.0 for ; Mon, 23 Mar 2026 06:03:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1774270998; x=1774875798; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=rum/8YcSfFzn+mIlRZrRd8RBJkU4CF1JIzKByDx2Qcc=; b=geSBPm+J+umm9t+vd3JeuXnuQm6SBGqG34cLEXmjfgejaCv8hbzsBPXZ3wGyoi5vX8 4VUWKD0FRWyoXGi22Sfd1QHqOiThegLN4tz6W8KKfQQ44qRcwEwEkV8FF0JOUH1hRJ2T 2dcpItemcmDk5kqA7zZhkXEHvoQDklBzTYxWg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774270998; x=1774875798; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=rum/8YcSfFzn+mIlRZrRd8RBJkU4CF1JIzKByDx2Qcc=; b=N9G6Ode7KnyrWAu7BgHFrDAKd5RbdJi+0xTLf50VG2hLlAa0ZeeaRCvYmR1e2S/y8P dzot5aHSs5/j9PId+/7VV61xPWY3iZ1uX23hN74fXiI+sc17NQ7O9SLbGDLEQPefC7yv IUb6/mR9UySsaX2u0mQY89CrYxaE2MXEQ9IrMDHJZCcCpYIIWYoH1qicAPUA3bQwJRch 4LMVXABvcYHYS2yu6APeVj/CLc1IV1r+TtOMlB2uBB8t86yEz+oonI0Jx2osU1G38Hnv SLpg4wSkn5TBoJE4u8Kwi6S4LTs9YlaBvlQf0IpowYuhKDVwGOsZvInIJWAGyV+CQE8i 2Cig== X-Forwarded-Encrypted: i=1; AJvYcCVmjMa8qMc+uyOx3g7FEqsKPBde4EeZ92tYJDK+27nGqby3ibtru9euG+svf2PM6c2dKgTf+MAsvAuC+zs=@vger.kernel.org X-Gm-Message-State: AOJu0YzhkZpbSOPXDvS4HHYl1z5MnGAQ5L3Qzrc+v20/8XzBiZzPfcU+ RdWa7LmhvyaDlVIB8l2UxqvfN9jVx6oPJASignpLjj25MaKcM4LnxDPM3nm0yuo3Bw== X-Gm-Gg: ATEYQzziKHX6Cl/l1HgdoC/42E2xr279Hvzqn4oKEv1ns9xAtsenAig1dkyUW1BFqzK FrHjYjO2/0vNdGWvtWPS8QI31D/Olk81ewkNN4Vw14xz24LxS5xV5tXU9/+P4LDKik4n60vZnfs NAdigyNSkfobvZkzcVq7oXsOfBIgNx0ujAXQOQ5pGKgInjZJBpyJMGlwjIBE6MAn/HEb+Yghrkx vR2u522JvRDZ1JkADXyu84TDJFBTNDStlmo/wwUbAZXfVAwhYIeyp45rgW7xGeOYDOk5U8qo3i6 srCT/i0ksnKSvETK3ltm3wJ/HyKy7idVWw7jUVGiP056sVD2dKqpSxrDDA/CJUpO00S23H6fC1A M02VNyP4Z27dCF5RQ0GGqaEfPdn1/qKrRfs9NLas3QsqIJcgzwSuM8mTGTSUUnA2kkWESdhg6k8 T5A/Eqpi6F9RTEbaEifRcz1ftMKjMyPMV3dcvV/hVEi6s2/P50JZAZL4l5ntaLyLIHxIAW4PxXt fPMfGy84XQShFjHdQ== X-Received: by 2002:ac2:4e01:0:b0:5a1:5994:2773 with SMTP id 2adb3069b0e04-5a2855efc89mr3443970e87.14.1774270997925; Mon, 23 Mar 2026 06:03:17 -0700 (PDT) Received: from ribalda.c.googlers.com (252.116.88.34.bc.googleusercontent.com. [34.88.116.252]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a28530bd55sm2534556e87.72.2026.03.23.06.03.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 06:03:15 -0700 (PDT) From: Ricardo Ribalda Date: Mon, 23 Mar 2026 13:03:03 +0000 Subject: [PATCH] media: uvcvideo: Undup use uvc_endpoint_max_bpi() code Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260323-uvc-backport-bpi-v1-1-5b62c6798ccf@chromium.org> X-B4-Tracking: v=1; b=H4sIAAY6wWkC/x3MQQqAIBBA0avIrBtIDZOuEi3KphoCFa0IorsnL d/i/wcyJaYMnXgg0cWZgy+QlQC3jX4l5LkYVK1MrZXG83I4jW6PIR04RUZjtbG0yEa2GkoWEy1 8/8t+eN8P4ra/Q2IAAAA= X-Change-ID: 20260323-uvc-backport-bpi-68368ef14173 To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.14.3 [ Upstream commit 5b9c75c794ce041e6e00789efef75d71915c4f4c ] Replace manual decoding of psize in uvc_parse_streaming(), with the code from uvc_endpoint_max_bpi(). It also handles usb3 devices. Cc: stable@vger.kernel.org # v5.4+ Signed-off-by: Ricardo Ribalda Signed-off-by: Laurent Pinchart Signed-off-by: Mauro Carvalho Chehab --- The commit: 9764401bf6f8 ("media: uvcvideo: Fix bandwidth issue for Alcor camera"), which has been backported to 5.4+, depends on this patch. Without it, cameras connected to USB3.0 will stop working properly, because the bandwidth quirk will be applied wrongly. Please help adding this patch to 5.4, 5.10 and 5.15. Thanks! --- drivers/media/usb/uvc/uvc_driver.c | 4 +--- drivers/media/usb/uvc/uvc_video.c | 3 +-- drivers/media/usb/uvc/uvcvideo.h | 1 + 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc= _driver.c index 858fc5b26a5e..4ee187a503b8 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -1007,9 +1007,7 @@ static int uvc_parse_streaming(struct uvc_device *dev, streaming->header.bEndpointAddress); if (ep =3D=3D NULL) continue; - - psize =3D le16_to_cpu(ep->desc.wMaxPacketSize); - psize =3D (psize & 0x07ff) * (1 + ((psize >> 11) & 3)); + psize =3D uvc_endpoint_max_bpi(dev->udev, ep); if (psize > streaming->maxpsize) streaming->maxpsize =3D psize; } diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_= video.c index f868a13280a1..fb69d534e299 100644 --- a/drivers/media/usb/uvc/uvc_video.c +++ b/drivers/media/usb/uvc/uvc_video.c @@ -1797,8 +1797,7 @@ static void uvc_video_stop_transfer(struct uvc_stream= ing *stream, /* * Compute the maximum number of bytes per interval for an endpoint. */ -static unsigned int uvc_endpoint_max_bpi(struct usb_device *dev, - struct usb_host_endpoint *ep) +u16 uvc_endpoint_max_bpi(struct usb_device *dev, struct usb_host_endpoint = *ep) { u16 psize; u16 mult; diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvi= deo.h index 95af1591f105..f5bc9fa2c385 100644 --- a/drivers/media/usb/uvc/uvcvideo.h +++ b/drivers/media/usb/uvc/uvcvideo.h @@ -920,6 +920,7 @@ void uvc_simplify_fraction(u32 *numerator, u32 *denomin= ator, u32 uvc_fraction_to_interval(u32 numerator, u32 denominator); struct usb_host_endpoint *uvc_find_endpoint(struct usb_host_interface *alt= s, u8 epaddr); +u16 uvc_endpoint_max_bpi(struct usb_device *dev, struct usb_host_endpoint = *ep); =20 /* Quirks support */ void uvc_video_decode_isight(struct uvc_urb *uvc_urb, --- base-commit: 91d48252ad4b17577cf8cc8d3e1353402e4da8f1 change-id: 20260323-uvc-backport-bpi-68368ef14173 Best regards, --=20 Ricardo Ribalda