From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 33E764749F4 for ; Wed, 22 Jul 2026 16:07:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784736478; cv=none; b=cobB5hueyhCgryXpXnmbO7MR7A4Sw2Rl0Wt3cxIFL8ELdwedc9XcgNusLmc2S1HipY9UODmTJsjiU/k2+DYN8lYusTFu3lMbf2baGuj0VrfXI6NyTWTLKJpXK7/BQCNyFKbUp57oeAylVx/hrGO3TQE74SZOopCwW2lbubjrRZE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784736478; c=relaxed/simple; bh=shq54+WTnIchYWBZz7r0iQvAbG7KkG+yVAGTofTt0QA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=g1yT6WxkrCU5BUIGyaM/UAcCcTR7BeCUrg9nz3QpWcQJTuwjyeLFYXYeTUdnjVKsh0HJvtwbiZQ4AuYBy7ASGtvGPrw5xiRXSIncANEE4viy9NK9GQfSFbwB6nDn6e1j1x8HHncIt1Um/4afUtnodH35VkKjfVTLRb4jIdrpwys= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iWrgtwa6; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="iWrgtwa6" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 18DD41F00A3D; Wed, 22 Jul 2026 16:07:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1784736476; bh=9tl/X1CwGL1c1pkNO74wUt5jhdx8VaZ1sV8t+nJZVxk=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=iWrgtwa6F/SypD5xKyEP0mDQFADKpHxpuDYjEK7wOmBOTRG+zZ5rqQHn2H8+EtvWG EI9nAAELic9BCY3pSJErO8RYnr1P50/HxjOn2F9MPunmZpThVTnRbOYTnAzOvOzSMe SrJ9nJdlARVmGaYao4M8crV5Az2S2B1pcCjS8ezGA8Iq2ddQAP0mX7Yzu65oJwrDN/ Y/A73TLj22NKSy/4q9y97ATbBw4UqbXpnvJc2wlCIm0aENBT7AwmIxB0WlwuqlhNZ8 UH1v9jf5qehh7GAi0a1Sde8Py6Yr6/uiC1KvkKTBrpCMmPFbGO1NvwSZ701w0quvOy lp4PIrKSd9juA== From: Sasha Levin To: stable@vger.kernel.org Cc: Ricardo Ribalda , Greg Kroah-Hartman , Devinder Khroad , Sergey Senozhatsky , Laurent Pinchart , Sasha Levin Subject: [PATCH 5.15.y 2/6] media: uvcvideo: Add quirk for Logitech Rally Bar Date: Wed, 22 Jul 2026 12:07:49 -0400 Message-ID: <20260722160753.1740303-2-sashal@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260722160753.1740303-1-sashal@kernel.org> References: <2026072041-shame-chaplain-6dce@gregkh> <20260722160753.1740303-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Ricardo Ribalda [ Upstream commit 07731053d11f7647d5d8bc23caac997a4d562dfe ] Logitech Rally Bar devices, despite behaving as UVC cameras, have a different power management system that the other cameras from Logitech. USB_QUIRK_RESET_RESUME is applied to all the UVC cameras from Logitech at the usb core. Unfortunately, USB_QUIRK_RESET_RESUME causes undesired USB disconnects in the Rally Bar that make them completely unusable. There is an open discussion about if we should fix this in the core or add a quirk in the UVC driver. In order to enable this hardware, let's land this patch first, and we can revert it later if there is a different conclusion. Fixes: e387ef5c47dd ("usb: Add USB_QUIRK_RESET_RESUME for all Logitech UVC webcams") Acked-by: Greg Kroah-Hartman Reviewed-by: Devinder Khroad Reviewed-by: Sergey Senozhatsky Reviewed-by: Laurent Pinchart Signed-off-by: Ricardo Ribalda Link: https://lore.kernel.org/r/20240404-rallybar-v6-1-6d67bb6b69af@chromium.org Signed-off-by: Laurent Pinchart Stable-dep-of: f078966ca1fb ("media: uvcvideo: Fix sequence number when no EOF") Signed-off-by: Sasha Levin --- drivers/media/usb/uvc/uvc_driver.c | 31 ++++++++++++++++++++++++++++++ drivers/media/usb/uvc/uvcvideo.h | 1 + 2 files changed, 32 insertions(+) diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c index 1cd68501fdc505..64de4c9863c59e 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -2562,6 +2563,9 @@ static int uvc_probe(struct usb_interface *intf, goto error; } + if (dev->quirks & UVC_QUIRK_NO_RESET_RESUME) + udev->quirks &= ~USB_QUIRK_RESET_RESUME; + uvc_dbg(dev, PROBE, "UVC device initialized\n"); usb_enable_autosuspend(udev); return 0; @@ -2864,6 +2868,33 @@ static const struct usb_device_id uvc_ids[] = { .bInterfaceSubClass = 1, .bInterfaceProtocol = 0, .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_RESTORE_CTRLS_ON_INIT) }, + /* Logitech Rally Bar Huddle */ + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE + | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x046d, + .idProduct = 0x087c, + .bInterfaceClass = USB_CLASS_VIDEO, + .bInterfaceSubClass = 1, + .bInterfaceProtocol = 0, + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME) }, + /* Logitech Rally Bar */ + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE + | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x046d, + .idProduct = 0x089b, + .bInterfaceClass = USB_CLASS_VIDEO, + .bInterfaceSubClass = 1, + .bInterfaceProtocol = 0, + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME) }, + /* Logitech Rally Bar Mini */ + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE + | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x046d, + .idProduct = 0x08d3, + .bInterfaceClass = USB_CLASS_VIDEO, + .bInterfaceSubClass = 1, + .bInterfaceProtocol = 0, + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_NO_RESET_RESUME) }, /* Chicony CNF7129 (Asus EEE 100HE) */ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h index be4b746d902c63..304b7679e50c44 100644 --- a/drivers/media/usb/uvc/uvcvideo.h +++ b/drivers/media/usb/uvc/uvcvideo.h @@ -212,6 +212,7 @@ #define UVC_QUIRK_FORCE_Y8 0x00000800 #define UVC_QUIRK_FORCE_BPP 0x00001000 #define UVC_QUIRK_WAKE_AUTOSUSPEND 0x00002000 +#define UVC_QUIRK_NO_RESET_RESUME 0x00004000 /* Format flags */ #define UVC_FMT_FLAG_COMPRESSED 0x00000001 -- 2.53.0