From nobody Fri Sep 25 13:54:44 2026 Received: from mail-lj1-f172.google.com (mail-lj1-f172.google.com [209.85.208.172]) (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 F1C1D485500 for ; Fri, 11 Sep 2026 13:22:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789132959; cv=none; b=YgxUS7APVRh8JA7ktnGuSlI86pdiShCQ6UH9siFAxXnwYgEpojhy4NkP1umdbm7K2NNU8w4woq9AiiQQ7LrVZ76xwphoITLwswE4LYZawCKLJ4dcv5P/8mOroUykgoRbGVsCGxOEOqAL4CInalE4AVNKmWzMzVar1wmAye6J+pE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789132959; c=relaxed/simple; bh=bOQ/MUtV4oABfhpMfaORamrLvXRLrnJxJ8E3V8zPxPw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qho3wPbV4YX0uiEKu3f6+Z2r3EeSydc6he1egPtW7OlHuHIyJKP9v8mcrnDoXjT582cafPmayyDfV3uyL9o9Txg+w2jjVkNFk8ncXLuNadPYnhMH2SP2oGwiuslSH5IZ6CREzlxCBIUT+CnwrhDS9HwLNYKaaqyYmjBt7ueD0x4= 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=fQ5arWep; arc=none smtp.client-ip=209.85.208.172 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="fQ5arWep" Received: by mail-lj1-f172.google.com with SMTP id 38308e7fff4ca-3a309f92daaso7236261fa.3 for ; Fri, 11 Sep 2026 06:22:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1789132956; x=1789737756; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=axORLmg8T0T4dSUmkU6VVFtEBAwXnJ3GuirIwOgJeOI=; b=fQ5arWepsPpabgndkLNl5iRZ2bKo+uI+JRRjkDvfcbt0eM3P1wbujxBFxq9Z3AQ4M3 H6bVw1W12qbQMoSrQB2Si/8deu2g8jse3qmqa8sBbIKnKRGqcWSzDOQSuvehx07Vpq0M cZs7FGki/lZxY1zM0DRUqq7FTvB9vx+uf7kHs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789132956; x=1789737756; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=axORLmg8T0T4dSUmkU6VVFtEBAwXnJ3GuirIwOgJeOI=; b=krgWnoOFGg0xZDdbZ+UDJq9RZL0aD9w6Fcq30UZv2DnyhwLEvK5BygqKtKP1Skhnay jtVcd30fxJ9j/nO3KUHYUuz0LVHywcaxlu4oX/WVZVfIMoJJUASQmSkBPESq2aYUWxnc Jf0TLOaZHZZm5rLc2mQLCo+/vjo8h4FIzjNw4EI1a1TlHwPP6dRxbkhazsJ327yjuquD PvnU6Yw/e14A+A55yOZubZu0+UuurZ6zpIOXBRUaVIitm8qEuYi0zTRgNciQggIB8cZr 9Ze0pP8ywMRF2Nci+j222xW0w1JNUltb26Dx14LXcgOnp/bzhRkV8Mk2e4C8EAhj2baQ qzew== X-Forwarded-Encrypted: i=1; AKwUvBzQCX5IfAwXyj+yP4x1hWwpnSC2RpbI53DQCH5mvNbkR0UfTiB1AXbpGD6N6DtjrqS4ixuMhBL3oO24oYU=@vger.kernel.org X-Gm-Message-State: AFuF++mHNRzgfH5zKG5pe+wpgsJf4i4KYekLIWPbgXgoos+LE99MuMf+ obMNUk8ODvYD+SusYq9DX1nuFStvl/2hKI4N48KSW/SCuwbVjnYy5jJ/9nLknM0OPQ== X-Gm-Gg: AYBFou31NsnowgXKKv+nClF8AkSVJs10TvLCIGTyJjmGqKnwqjCD2nwSpRQhdtnuPz2 QlrlwbOKkUJYePk+/9dE/Q3PwcVMsiPv5Oqw0Oi7xcf96Z7REJfeU3no4WEL+zuZo6EQ2A2Z6or nGEE3zMOYWkPGHwG7zAXPkIFkO1NxmPpWnPVkGeUBZrgOz/VfNybA1aJmC3vmKZe8nB+WRnYCr7 aPXI+GsFpEGWzLtuah5ZN5DjX4I2ccZK5JPAYaz84mnrouXWL37DtJWKrORhEXZWRC/HYqlxACZ KsRJKLyP0NXnTnSlTr33sMBfvcTkpuP8meSKfVSG0Fypu39SElSB3r6wX3UvjkxfQIhVsszJtwL dy7MPYS+ClcCge4VYhmGTmJS28L2imTikrX7RUjlOHLfukdCO3yKLsyU3NObTpDLCRY9eQl1SZh jURFoLWEQynU8H/v5al91Zxpe/pzfH5lBVFrr/cKs9kAIVp+xk80asniYh+LETxEBLnd1hjuhqz w6nLRnn24w8muTFsNQcFjK6JUpLTo+wEMi72hR0Pwgu9lLjYw== X-Received: by 2002:a05:651c:2127:b0:3a5:a54d:c8cc with SMTP id 38308e7fff4ca-3a5a54eb73fmr4938891fa.23.1789132955799; Fri, 11 Sep 2026 06:22:35 -0700 (PDT) Received: from ribalda.c.googlers.com (11.36.88.34.bc.googleusercontent.com. [34.88.36.11]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3a5a3303fc9sm6677511fa.6.2026.09.11.06.22.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Sep 2026 06:22:34 -0700 (PDT) From: Ricardo Ribalda Date: Fri, 11 Sep 2026 13:22:25 +0000 Subject: [PATCH v3 1/5] media: uvcvideo: uvc_warn should warn not info 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: <20260911-uvc-version-v3-1-604328d8a0dd@chromium.org> References: <20260911-uvc-version-v3-0-604328d8a0dd@chromium.org> In-Reply-To: <20260911-uvc-version-v3-0-604328d8a0dd@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab Cc: Edwin Gatier , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Ricardo Ribalda X-Mailer: b4 0.14.3 Now the uvc_warn_once macro triggers a info message. Use the correct level. Signed-off-by: Ricardo Ribalda --- drivers/media/usb/uvc/uvcvideo.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvi= deo.h index b6bcee4a222f..a80406f20beb 100644 --- a/drivers/media/usb/uvc/uvcvideo.h +++ b/drivers/media/usb/uvc/uvcvideo.h @@ -685,7 +685,7 @@ do { \ #define uvc_warn_once(_dev, warn, fmt, ...) \ do { \ if (!test_and_set_bit(warn, &(_dev)->warnings)) \ - dev_info(&(_dev)->intf->dev, fmt, ##__VA_ARGS__); \ + dev_warn(&(_dev)->intf->dev, fmt, ##__VA_ARGS__); \ } while (0) =20 /* -----------------------------------------------------------------------= --- --=20 2.55.0.1007.g17ff1f9808-goog From nobody Fri Sep 25 13:54:44 2026 Received: from mail-lj1-f173.google.com (mail-lj1-f173.google.com [209.85.208.173]) (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 DC30748125C for ; Fri, 11 Sep 2026 13:22:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789132960; cv=none; b=gZagptTNTwheJPMe20pdbjO7aUAtAJjfBUwOWbzC3X8MJPqxMYYG7he3soucqAJ2MSvmNKAq7NJjaXKFT1SGpqUouMbFXGW+30y20bwxXmKArx1TcVnHRvvwlR/woQonaKqqQ2PQmcZDiBun89nuAAH5wiwRwRz/M8xKG2wDdbQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789132960; c=relaxed/simple; bh=GtuyPJ5P8lbyUrTfh0GZRYAsrA++ZQ5zBOp4E9kCYro=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Jrc3b1aZN/EJGnD7UQEq6/wV1+QjqxZ/vNbQEvK6VjTWIxpXbus7afAl23o61U8R8Bki7MzSc1+EF5yFsKhaTFLxHEEpKr4zb46nxoIEjSC38O5mDz7ob41dXgFdWsPEB09/IHrjoWwtNB7Xv9LENybwTvBlIyNLDVJALwVqjS8= 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=C7tLjX1G; arc=none smtp.client-ip=209.85.208.173 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="C7tLjX1G" Received: by mail-lj1-f173.google.com with SMTP id 38308e7fff4ca-3a49a022221so7351181fa.3 for ; Fri, 11 Sep 2026 06:22:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1789132957; x=1789737757; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=sC8m3daIJ79tgZkSrk/HqNKaifQKUiCqu879ubTl/Mo=; b=C7tLjX1GigqcCGDfzh2GaqHzvHiQfQjwTGdReSRr7jmx2sMfxSHWjSsB/Uf41tpFsx yC1f+FeW3bszTjOqO/Ln7i5xusx+3A0hywr4YT8hxpYn5y6bOEb8yLUXpJ4VUpTU8SeJ 38WJPrto3O0mLLDKyQMZWBZ76Gi7Zyl+sxiJ8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789132957; x=1789737757; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=sC8m3daIJ79tgZkSrk/HqNKaifQKUiCqu879ubTl/Mo=; b=FVmHpbuGoe5CCpUbNbgNk+j+hV8/Qvsrt0ouKWYetKbiX4vniJeH+vF9efVfwRSYFu KSMpEn3zfdvWkQyEBxKSEE9pLBzqWpPPvys228sF3r5T5UsG6EzGb1OtFHypvm+cV53N JM+KR4KRR2AN3SDjDjCjXNSQDB+iTDhuGxc/ihHBEs6/0tl78jTUmdyOac8x2Php3g0A AEroNS0z7R0/gk1Ze2H2dB/s0h5B5mubrjynRtGjnUNMZ9uVd6SWN7y2/q/FvJOCaxBf EFR25u/vjQEp39nRhYzPnES3KqjHEwsxkYB1PAndz4HobUYrrv0lXweRN9LfzUh3HmXn GbGg== X-Forwarded-Encrypted: i=1; AKwUvBzb8Ay8UGytvAYzE50a0GgiAz8F9B4v+0HkEDqogybm+KKnIjzQtU6REQSrhWi3Ctvf/295MfneRXhK+58=@vger.kernel.org X-Gm-Message-State: AFuF++lRMFzhcJguJM5Q9W4ZiaRFTbKOJLE4/i/uEK9KieBmcy+U2Tra VR/RlnfHj0jSaJXZ2NFP/bt8ZRSgBFS12QjLGXPqd/o+qc+pKKQsCgog4KCbUtZ6fw== X-Gm-Gg: AYBFou2VqTsN0sETHsiC1iQGh5/rGTi1mGSR3mYGMgZhco/5UBFfKIlON9HXG8s2+p/ 7g9AxmdHDujeAi6m8vMQh4BYOfLTp42NUvUEZk3zG7l6hJMgGMjr7+w1FpjWZ2Ee77z7NYHYBU9 BFG97bry9T7zEf7bPTzypvbaT2A3p7J5g0D25GJa42mWbqZ0N4xXhfhaOGICaThgCS/6C2C5SZo GnUay2+fxoIubMQMNCKd/WCafFOg3eyARTfyd8sroultmrJGw+7WAFBVtth8A1GjQ9vnjoAfrbd ntHeq3EhnITg9YhvX6pmwNg2IdcyCueBqYd2TxR0eqgmixXEelBiJ3/r6C0HTTRm5G72lvvmvOA xzNPKrovOgZEMJYh+HHIjMex1Rwl76kUrgtUWM33PldDMwJ4KVuB1+Ol3gIKeiXkfPUkZoWz2/S Ha3wXMqZmkzbI+y4VL0ooJAqM+hpsp89OpOmXox6OtmqXONqDL0saE86KBV4ZTNmKYTSQsjnVBA qG6IM5y+i2/NMJmzNR47oASDmgMijlEl4m/CW/AbsurWyqYyA== X-Received: by 2002:a05:651c:198d:b0:3a5:afec:9ce1 with SMTP id 38308e7fff4ca-3a5afeca0bdmr642021fa.12.1789132956876; Fri, 11 Sep 2026 06:22:36 -0700 (PDT) Received: from ribalda.c.googlers.com (11.36.88.34.bc.googleusercontent.com. [34.88.36.11]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3a5a3303fc9sm6677511fa.6.2026.09.11.06.22.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Sep 2026 06:22:36 -0700 (PDT) From: Ricardo Ribalda Date: Fri, 11 Sep 2026 13:22:26 +0000 Subject: [PATCH v3 2/5] media: uvcvideo: Use uvc_warn_once when it make sense 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: <20260911-uvc-version-v3-2-604328d8a0dd@chromium.org> References: <20260911-uvc-version-v3-0-604328d8a0dd@chromium.org> In-Reply-To: <20260911-uvc-version-v3-0-604328d8a0dd@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab Cc: Edwin Gatier , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Ricardo Ribalda X-Mailer: b4 0.14.3 If there are multiple cameras in the system affected by a compliance error now we only show an error message for one of them. Use uvc_warn_once() to print an error message per device. Signed-off-by: Ricardo Ribalda --- drivers/media/usb/uvc/uvc_video.c | 2 +- drivers/media/usb/uvc/uvcvideo.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_= video.c index fc3536a4399f..2a3b7431cc68 100644 --- a/drivers/media/usb/uvc/uvc_video.c +++ b/drivers/media/usb/uvc/uvc_video.c @@ -95,7 +95,7 @@ int uvc_query_ctrl(struct uvc_device *dev, u8 query, u8 u= nit, */ if (ret > 0 && query !=3D UVC_GET_INFO) { memset(data + ret, 0, size - ret); - dev_warn_once(&dev->intf->dev, + uvc_warn_once(dev, UVC_WARN_QUERY_CTRL, "UVC non compliance: %s control %u on unit %u returned %d bytes w= hen we expected %u.\n", uvc_query_name(query), cs, unit, ret, size); return 0; diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvi= deo.h index a80406f20beb..abcafd929c9e 100644 --- a/drivers/media/usb/uvc/uvcvideo.h +++ b/drivers/media/usb/uvc/uvcvideo.h @@ -661,6 +661,7 @@ static inline struct uvc_fh *to_uvc_fh(struct file *fil= p) #define UVC_WARN_MINMAX 0 #define UVC_WARN_PROBE_DEF 1 #define UVC_WARN_XU_GET_RES 2 +#define UVC_WARN_QUERY_CTRL 3 =20 extern unsigned int uvc_clock_param; extern unsigned int uvc_no_drop_param; --=20 2.55.0.1007.g17ff1f9808-goog From nobody Fri Sep 25 13:54:44 2026 Received: from mail-lr2-f12.google.com (mail-lr2-f12.google.com [74.125.230.76]) (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 99832485511 for ; Fri, 11 Sep 2026 13:22:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.230.76 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789132964; cv=none; b=cEATJh0OWtkXVRlzPjDheYTNL5P4/IQLlku77xefRbTbSbI3dgSn42SIe4SwvSJhhshfzUG6B5B1q/t5Q8dW3LltUyxbdvEmVjeMk73OQkEI+5jMxcjXmvvYp51Gzry9/xhf7EOkIiSs8KfouQDzM5HBTp4nY49rcFT0KI/YGsM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789132964; c=relaxed/simple; bh=CZ490TnQ+QDRO3YbnkfW5wNQ9T5PhgFDg8/101hqOcg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cD57uVnEgsO8Qqt8kvHwyUvItCpp6eViMkCU4X42Ej9chbUfOgefhvN4hqawhWlPNwFTlpJhib3tqag7Rkq+UzrZF7Kevd2MXUuHf+NqW3UOgImNAH2/TNz7hxdWXZrKDX93YteSyUpEzJh8EllXIXB3BAA2wIxlnKnQme6sHqs= 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=eH/aG7FM; arc=none smtp.client-ip=74.125.230.76 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="eH/aG7FM" Received: by mail-lr2-f12.google.com with SMTP id 38308e7fff4ca-3a5919af39dso8864021fa.1 for ; Fri, 11 Sep 2026 06:22:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1789132959; x=1789737759; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=5p2P+h3m4/e/nj8H9is13HHWai02bAXGCTLAfQ+oro0=; b=eH/aG7FM9eLziVMDXglDlPUACeGZlb4g5tn4LdnbzdR/9mkzyqG8y9fQLwStzDQdSn T9UH1GdfIyRRdayYUxrGoLQm/dqyAO+yRQ7ueNROiK1+UbSl0IKiOpANvaWygY3a/VLG IvofhyvBQ1Fu1j1hTJjp5EMljQtXiC3+3mo5U= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789132959; x=1789737759; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=5p2P+h3m4/e/nj8H9is13HHWai02bAXGCTLAfQ+oro0=; b=ZMXES76t8bdY2GdhRfA9mSIv0pTZWO6RkcDlXsE3j51qX5WY0oL6/HL4mDkq4szqtf Vwru/O8RFlIRCC4oj2AifpzgEoAQNT2FNyGtBqb9ZTKkRkQRzl5fluXnht+am82fKGhT FPdsquf6zMrWyxiD+t8lQIs5MV5FNZtZ4zBoK/0EgHcRm+bZ94kgaXFMIOU3gCcALNIC b4aNaUoIQAmy1lC4nuXIseHQU4dXRENMe1gjIZOk7tgKSlPsJiHmhayRNMfO1ioFNqMi 24TqsMh1suzx9hohMf59i4XxJ6EfJdb9mUCFap7WnqKGfqCiMnjdOGQZHYn8TyjW93pX zVGQ== X-Forwarded-Encrypted: i=1; AKwUvByY0Kr5YQu5c0TBzJQUwTX3i8x+fD+UZGzEinbYsbzvKXVygaWV6VBokOXEYlzUj8h8VXdmiUIKWGfuwXY=@vger.kernel.org X-Gm-Message-State: AFuF++kLiV/vUhp2kwdadVJD/RSNxKnMRl+TcmM/qG2zWcLLrIXlFtAO WYbdh+w+nludvpUTxgjx6cMYTWgnSXE5xfUkYe8Oh5n4mb953MOO7MlEuC7Jom8CAQ== X-Gm-Gg: AYBFou32L3qxNqabA1eBUp1Ywwcc2dKnEZcUh62DfGuJLc7swwFOAZQh5s+uy2ikSQt nzbZhjJG5eGu6006YiZtQK2d9IE2BMroMHkaakSUjeM5nXZode4RcqGAHr2WTkaFgOTNKUA7Dva 9pU9DvJ9SmZ0LgelNxlHzCvfRr6VFEQWiNKBYVTwPravFfEtADLy9RMJ4vXrNs4fcMz2dUF6x+h mZvh/KcwzcKokW1Fm87RGJwWFgzFchRA1/6CAEbM+RqQDGSyS/2RHmEBevSc5KMsW57W0UnjA7g jDLL5h7kkfio6EfGCEsIj61yjo2hvI29nH3sNlZ7a/28/5rb5TfUQhTYMbQ5J9eB324YsfZbEra 2PRWyigEQWPbCkxTBD84OPWOK1Nt4nPTpcUb4ZWcA5t2eqvnz5wL1/1WfV0cvGRDHTGJF9Uxem0 wZ6AwsFvxuvCjWQfLXATkQwuqhe4amuTermUa8GMfJJAH+VvE6T9EKCTuNflM5y+3KshpRk1GGQ age90yZoa8XfsykipgryMLXuYXXmmXIcigGjDWdqzD3O9IZQA== X-Received: by 2002:a05:651c:1102:b0:39b:3e32:4a58 with SMTP id 38308e7fff4ca-3a5a5271285mr9449581fa.10.1789132958926; Fri, 11 Sep 2026 06:22:38 -0700 (PDT) Received: from ribalda.c.googlers.com (11.36.88.34.bc.googleusercontent.com. [34.88.36.11]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3a5a3303fc9sm6677511fa.6.2026.09.11.06.22.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Sep 2026 06:22:38 -0700 (PDT) From: Ricardo Ribalda Date: Fri, 11 Sep 2026 13:22:27 +0000 Subject: [PATCH v3 3/5] media: uvcvideo: Automatically handle cameras with invalid uvc_version 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: <20260911-uvc-version-v3-3-604328d8a0dd@chromium.org> References: <20260911-uvc-version-v3-0-604328d8a0dd@chromium.org> In-Reply-To: <20260911-uvc-version-v3-0-604328d8a0dd@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab Cc: Edwin Gatier , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Ricardo Ribalda X-Mailer: b4 0.14.3 Currently, the driver expects that cameras properly implement the spec version that they announce, and if they fail to do so, we do not continue probing the driver. To make drivers more fun, some vendors decided to announce that they are a UVC version that they are not. Until now, we handled those cameras via quirks. Unfortunately, reality has shown us that there are more cameras out there with an invalid uvc_version than we initially predicted. This patch tries to handle these cameras with an identity crisis automatically. We still shame them in dmesg. But now they will work. Tested-by: Edwin Gatier Signed-off-by: Ricardo Ribalda --- drivers/media/usb/uvc/uvc_driver.c | 11 +++++++---- drivers/media/usb/uvc/uvc_video.c | 40 +++++++++++++++++++++++++---------= ---- drivers/media/usb/uvc/uvcvideo.h | 2 ++ 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc= _driver.c index e289cc71ba98..ca75f8d1ec46 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -1169,9 +1169,7 @@ static int uvc_parse_standard_control(struct uvc_devi= ce *dev, =20 case UVC_VC_PROCESSING_UNIT: n =3D buflen >=3D 8 ? buffer[7] : 0; - p =3D dev->uvc_version >=3D 0x0110 ? 10 : 9; - - if (buflen < p + n) { + if (buflen < 9 + n) { uvc_dbg(dev, DESCR, "device %d videocontrol interface %d PROCESSING_UNIT error\n", udev->devnum, alts->desc.bInterfaceNumber); @@ -1188,7 +1186,12 @@ static int uvc_parse_standard_control(struct uvc_dev= ice *dev, unit->processing.bControlSize =3D buffer[7]; unit->processing.bmControls =3D (u8 *)unit + sizeof(*unit); memcpy(unit->processing.bmControls, &buffer[8], n); - if (dev->uvc_version >=3D 0x0110) + + /* + * We are not using bmVideoStandards, so there is no need to + * warn the user if it is missing. + */ + if (dev->uvc_version >=3D 0x0110 && buflen >=3D (n + 10)) unit->processing.bmVideoStandards =3D buffer[9+n]; =20 uvc_entity_set_name(dev, unit, "Processing", buffer[8+n]); diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_= video.c index 2a3b7431cc68..2f3daa920ffa 100644 --- a/drivers/media/usb/uvc/uvc_video.c +++ b/drivers/media/usb/uvc/uvc_video.c @@ -273,6 +273,8 @@ static void uvc_fixup_video_ctrl(struct uvc_streaming *= stream, } } =20 +#define UVC_VIDEO_CTRL_MIN_SIZE 26 + static size_t uvc_video_ctrl_size(struct uvc_streaming *stream) { /* @@ -280,7 +282,7 @@ static size_t uvc_video_ctrl_size(struct uvc_streaming = *stream) * on the protocol version. */ if (stream->dev->uvc_version < 0x0110) - return 26; + return UVC_VIDEO_CTRL_MIN_SIZE; else if (stream->dev->uvc_version < 0x0150) return 34; else @@ -290,7 +292,6 @@ static size_t uvc_video_ctrl_size(struct uvc_streaming = *stream) static int uvc_get_video_ctrl(struct uvc_streaming *stream, struct uvc_streaming_control *ctrl, int probe, u8 query) { - u16 size =3D uvc_video_ctrl_size(stream); u8 *data; int ret; =20 @@ -298,13 +299,13 @@ static int uvc_get_video_ctrl(struct uvc_streaming *s= tream, query =3D=3D UVC_GET_DEF) return -EIO; =20 - data =3D kmalloc(size, GFP_KERNEL); + data =3D kmalloc(stream->ctrl_size, GFP_KERNEL); if (data =3D=3D NULL) return -ENOMEM; =20 ret =3D __uvc_query_ctrl(stream->dev, query, 0, stream->intfnum, probe ? UVC_VS_PROBE_CONTROL : UVC_VS_COMMIT_CONTROL, data, - size, uvc_timeout_param); + stream->ctrl_size, uvc_timeout_param); =20 if ((query =3D=3D UVC_GET_MIN || query =3D=3D UVC_GET_MAX) && ret =3D=3D = 2) { /* @@ -319,7 +320,8 @@ static int uvc_get_video_ctrl(struct uvc_streaming *str= eam, ctrl->wCompQuality =3D le16_to_cpup((__le16 *)data); ret =3D 0; goto out; - } else if (query =3D=3D UVC_GET_DEF && probe =3D=3D 1 && ret !=3D size) { + } else if (query =3D=3D UVC_GET_DEF && probe =3D=3D 1 && + ret < UVC_VIDEO_CTRL_MIN_SIZE) { /* * Many cameras don't support the GET_DEF request on their * video probe control. Warn once and return, the caller will @@ -330,15 +332,24 @@ static int uvc_get_video_ctrl(struct uvc_streaming *s= tream, "Enabling workaround.\n"); ret =3D -EIO; goto out; - } else if (ret !=3D size) { + } else if (ret < UVC_VIDEO_CTRL_MIN_SIZE) { dev_err(&stream->intf->dev, "Failed to query (%s) UVC %s control : %d (exp. %u).\n", uvc_query_name(query), probe ? "probe" : "commit", - ret, size); + ret, stream->ctrl_size); ret =3D (ret =3D=3D -EPROTO) ? -EPROTO : -EIO; goto out; } =20 + if (ret !=3D stream->ctrl_size) { + uvc_warn_once(stream->dev, UVC_WARN_CTRL_SIZE, + "UVC non compliance: Query (%s) UVC %s control had a size of %d i= nstead of %u.\n", + uvc_query_name(query), + probe ? "probe" : "commit", ret, + stream->ctrl_size); + stream->ctrl_size =3D ret; + } + ctrl->bmHint =3D le16_to_cpup((__le16 *)&data[0]); ctrl->bFormatIndex =3D data[2]; ctrl->bFrameIndex =3D data[3]; @@ -351,7 +362,7 @@ static int uvc_get_video_ctrl(struct uvc_streaming *str= eam, ctrl->dwMaxVideoFrameSize =3D get_unaligned_le32(&data[18]); ctrl->dwMaxPayloadTransferSize =3D get_unaligned_le32(&data[22]); =20 - if (size >=3D 34) { + if (ret >=3D 34) { ctrl->dwClockFrequency =3D get_unaligned_le32(&data[26]); ctrl->bmFramingInfo =3D data[30]; ctrl->bPreferedVersion =3D data[31]; @@ -381,11 +392,10 @@ static int uvc_get_video_ctrl(struct uvc_streaming *s= tream, static int uvc_set_video_ctrl(struct uvc_streaming *stream, struct uvc_streaming_control *ctrl, int probe) { - u16 size =3D uvc_video_ctrl_size(stream); u8 *data; int ret; =20 - data =3D kzalloc(size, GFP_KERNEL); + data =3D kzalloc(stream->ctrl_size, GFP_KERNEL); if (data =3D=3D NULL) return -ENOMEM; =20 @@ -401,7 +411,7 @@ static int uvc_set_video_ctrl(struct uvc_streaming *str= eam, put_unaligned_le32(ctrl->dwMaxVideoFrameSize, &data[18]); put_unaligned_le32(ctrl->dwMaxPayloadTransferSize, &data[22]); =20 - if (size >=3D 34) { + if (stream->ctrl_size >=3D 34) { put_unaligned_le32(ctrl->dwClockFrequency, &data[26]); data[30] =3D ctrl->bmFramingInfo; data[31] =3D ctrl->bPreferedVersion; @@ -411,11 +421,11 @@ static int uvc_set_video_ctrl(struct uvc_streaming *s= tream, =20 ret =3D __uvc_query_ctrl(stream->dev, UVC_SET_CUR, 0, stream->intfnum, probe ? UVC_VS_PROBE_CONTROL : UVC_VS_COMMIT_CONTROL, data, - size, uvc_timeout_param); - if (ret !=3D size) { + stream->ctrl_size, uvc_timeout_param); + if (ret !=3D stream->ctrl_size) { dev_err(&stream->intf->dev, "Failed to set UVC %s control : %d (exp. %u).\n", - probe ? "probe" : "commit", ret, size); + probe ? "probe" : "commit", ret, stream->ctrl_size); ret =3D -EIO; } =20 @@ -2231,6 +2241,8 @@ int uvc_video_init(struct uvc_streaming *stream) =20 atomic_set(&stream->active, 0); =20 + stream->ctrl_size =3D uvc_video_ctrl_size(stream); + /* * Alternate setting 0 should be the default, yet the XBox Live Vision * Cam (and possibly other devices) crash or otherwise misbehave if diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvi= deo.h index abcafd929c9e..8d99e857a69f 100644 --- a/drivers/media/usb/uvc/uvcvideo.h +++ b/drivers/media/usb/uvc/uvcvideo.h @@ -461,6 +461,7 @@ struct uvc_streaming { struct usb_interface *intf; int intfnum; u32 maxpsize; + unsigned int ctrl_size; =20 struct uvc_streaming_header header; enum v4l2_buf_type type; @@ -662,6 +663,7 @@ static inline struct uvc_fh *to_uvc_fh(struct file *fil= p) #define UVC_WARN_PROBE_DEF 1 #define UVC_WARN_XU_GET_RES 2 #define UVC_WARN_QUERY_CTRL 3 +#define UVC_WARN_CTRL_SIZE 4 =20 extern unsigned int uvc_clock_param; extern unsigned int uvc_no_drop_param; --=20 2.55.0.1007.g17ff1f9808-goog From nobody Fri Sep 25 13:54:44 2026 Received: from mail-lj1-f178.google.com (mail-lj1-f178.google.com [209.85.208.178]) (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 E85FC486BBC for ; Fri, 11 Sep 2026 13:22:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789132964; cv=none; b=mT1+q+a7C5Izuuw8ZUrR45Ssh+i6G40JF4DqDXV182T8FPTSicQL1V/SXOG99WU0YYqLz1AQMi1C4GQDA8QqRq73wCtj2O5amySY/8H5yIRwgWllSRxJ/ie8S81H3OtASEmkPZBi+/BTTFC2O8hH0z66CH9Myg69X18CNXV4yds= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789132964; c=relaxed/simple; bh=k77MDK9fsxNk4IGQNE48VDjBKW+78svM58YOT6/utwA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bfHgDwjpDmBWJNqU2WWgMwnHYzh+As/DuojQ8Q7qHBJkQlmR/Q61B8LlJGxnd6AZ9XnScooKmuWSiGWboBFNV7+QCwUGpFZC/07z/fQmHH1j2GBRwwfuDnQH7B0WRr+MTOBXKebFnBW3AItbaU4Rpe1fwYsyI7L9QAzWIdXcCHc= 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=i1oXFx/A; arc=none smtp.client-ip=209.85.208.178 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="i1oXFx/A" Received: by mail-lj1-f178.google.com with SMTP id 38308e7fff4ca-3a309f92daaso7236971fa.3 for ; Fri, 11 Sep 2026 06:22:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1789132959; x=1789737759; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=w/+Av6iKHP1iyPdUb9qZJLeMvT4uN92seFRWGWs39TE=; b=i1oXFx/AdmCyP/vWyS/aOash1fslOsIiYZJ1Uzbn1KxBtMK93J/1ULMaggahFOhdJ4 bUnF6Io4fITNq5nMkI15t1fqsUAtmXpqowya8c/FVf5JBfSw2MB29B90Rj0GzllV6DOX PS3XWYG2uhT6MvgS6sPrR/tnArAMMOsL6/LoU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789132959; x=1789737759; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=w/+Av6iKHP1iyPdUb9qZJLeMvT4uN92seFRWGWs39TE=; b=Td/vvL8Pj9EZogSUxEWkt9j4rCqNd3NDEK2MDYx9CIjt3T8M0WOnHayQJM0Ky8A/Mw p6YS9mlHoFquOO2ZGfKmFWW1qV7b5SIwl5Kd8WN4vS5nhM49e5nSG1QWn1akX5OiylSa zzJ+atCbYm3UvdexBCTs8tUaavF3Dev4E1T+g/24lLnupZRf82qX3qBL5Q756KvuLWOv xtPxaNLz80AsqIOhcKjrLNTkSKDAnBFSWMDNaq6Q+VOKgreBscuUEL0oFYxe06AzXLWu DiBbont4U8JBFIyV3+zD6Oea+POIrBqS6EnRFzsK9WTvpEQ1U9Uq3qDMbVduR/ivK3dC FN5A== X-Forwarded-Encrypted: i=1; AKwUvByZVkDPi7zghhH+ldgxyAD31LCBEC2SqsekbCEAG0hD+V1ayNIyn5JxZKFKCzUPDOr7hLGnCip2sBmbrBs=@vger.kernel.org X-Gm-Message-State: AFuF++m66sk5Gpda0lwjY9R+Ri/6Q+NOJOkjiMozqZHKjL7qXvDPKioX 6ex0lDmL3aKSzb9Vssx0DYal+zQz/3uPn5J9pI9/VzExPNBqeRTwZ/dkogBASGb0Zg== X-Gm-Gg: AYBFou0iutZ8f04BBX62af7yf3XNWFD2R0GO07I2E4/Gt7y7u2VROdTr6zg+IfntIaZ ZkU8YfBpfTA3t4xscTcLIPSsnJHXjt00znS+MutPRBDgzrxfR41pMdOcytVZiQUFwbM7iEK6H0q D4XKwpPOwlEErqXkpF9KwEZKLmdvJrz9qXe6x5CjAPy/BsZFqAsWVdstEQ3zzqQmKT+RaMHCMqy aAU0SouuejMJ8qNRyF3VFVL9VdaGTmX3b6t0G3SgMKPns20KnLVFLtAUIch6VRCwnE1DWStrLm+ gb+/f7fFKb/mZmxmqYPF7GRHdE2BdktncyR8a9YIGnmsbdOlAK7S9DKxoz6P6TPVRrZPezjzdsM 7pyzxi/z9Hwz77oGIWJ3q6e3SeYiDCHceECyagannGZv4F8CQ042cvkwR90gBa0PjqkF9SxVWBc dv0tCyVVrmpQSakTq+ODXBOtZWJQkmjPzfAUhB8VPqK3SI7B4vWy+ja9YInFqmHO7pC3PRXQqy/ YQOq/1sNCsrkv8k7WKu3ao9ujmBPofZ+6zCNWd8SncDMUsG7LwKFkI5jEVj X-Received: by 2002:a05:651c:512:b0:3a5:9c0c:9932 with SMTP id 38308e7fff4ca-3a5a52e3465mr4870481fa.26.1789132959667; Fri, 11 Sep 2026 06:22:39 -0700 (PDT) Received: from ribalda.c.googlers.com (11.36.88.34.bc.googleusercontent.com. [34.88.36.11]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3a5a3303fc9sm6677511fa.6.2026.09.11.06.22.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Sep 2026 06:22:39 -0700 (PDT) From: Ricardo Ribalda Date: Fri, 11 Sep 2026 13:22:28 +0000 Subject: [PATCH v3 4/5] media: uvcvideo: Do not parse bmVideoStandards 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: <20260911-uvc-version-v3-4-604328d8a0dd@chromium.org> References: <20260911-uvc-version-v3-0-604328d8a0dd@chromium.org> In-Reply-To: <20260911-uvc-version-v3-0-604328d8a0dd@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab Cc: Edwin Gatier , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Ricardo Ribalda X-Mailer: b4 0.14.3 bmVideoStandards is write only, so there is no need to parse it. Remove it. Signed-off-by: Ricardo Ribalda --- drivers/media/usb/uvc/uvc_driver.c | 7 ------- drivers/media/usb/uvc/uvcvideo.h | 1 - 2 files changed, 8 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc= _driver.c index ca75f8d1ec46..adec9d1aa653 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -1187,13 +1187,6 @@ static int uvc_parse_standard_control(struct uvc_dev= ice *dev, unit->processing.bmControls =3D (u8 *)unit + sizeof(*unit); memcpy(unit->processing.bmControls, &buffer[8], n); =20 - /* - * We are not using bmVideoStandards, so there is no need to - * warn the user if it is missing. - */ - if (dev->uvc_version >=3D 0x0110 && buflen >=3D (n + 10)) - unit->processing.bmVideoStandards =3D buffer[9+n]; - uvc_entity_set_name(dev, unit, "Processing", buffer[8+n]); =20 list_add_tail(&unit->list, &dev->entities); diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvi= deo.h index 8d99e857a69f..65f232de7821 100644 --- a/drivers/media/usb/uvc/uvcvideo.h +++ b/drivers/media/usb/uvc/uvcvideo.h @@ -228,7 +228,6 @@ struct uvc_entity { u16 wMaxMultiplier; u8 bControlSize; u8 *bmControls; - u8 bmVideoStandards; } processing; =20 struct { --=20 2.55.0.1007.g17ff1f9808-goog From nobody Fri Sep 25 13:54:44 2026 Received: from mail-lj1-f176.google.com (mail-lj1-f176.google.com [209.85.208.176]) (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 D8A1C48822A for ; Fri, 11 Sep 2026 13:22:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789132966; cv=none; b=Bd8GgAsNyA28Y7oxDzFBa3ZJ3vJdBr1V3gzZl8nVjpU6Q0N1XKJ+ggCfeTDO7BY8kh64z62QCIL7cSVAgcAlq6SW7jQ/loh5zUMdktoVfzE0ZRAWPG4KS7Y8TQBYkt8qAPkbnAs8O0XeQyz+l/JzytTiiRkITqjAMflwmolaNjQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789132966; c=relaxed/simple; bh=2Z7oX5Mivlb1Jr/Rvv2p4IzppeF6NVctsHMnPInMaWg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kEaO6ljzfXA9rwG396lLkbhwaI2cLX6p7wn0OirZb4pA5OmarRKylNmxryT8oVi5Sy4WLzXlMO7kHeb5DulGDNNvwpVb3VUgeDyUbXykc8cN316gXNhYC1YC6khgR9EjhJ+LpOlpeZQ29lTphcahRL99IJNn3x3oixZghNrk/r0= 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=UcV53iS4; arc=none smtp.client-ip=209.85.208.176 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="UcV53iS4" Received: by mail-lj1-f176.google.com with SMTP id 38308e7fff4ca-3a5938ab935so7411271fa.0 for ; Fri, 11 Sep 2026 06:22:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1789132960; x=1789737760; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=z1i7FufBk3oSHRVLUNRMCx/VKAD00aWygfNdrtryjXk=; b=UcV53iS49+q6JTM7gm/BAi2LhZ3iqS69iDS7jvXfncP23azNyEW1rsPc8EUnp7aWcn OC0/7w9XnBU9/1qq/rCXGxOu8Y3LPP/6LdPhRoMWigXx3JEGpJ+buA1d/Wglv5xRZY0X qX+N+l/28JIHgzBgVg/I0EEKjJB6jfcgdB80M= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789132960; x=1789737760; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=z1i7FufBk3oSHRVLUNRMCx/VKAD00aWygfNdrtryjXk=; b=r1OYoehKF+D1u6EcEaB9z98nd36rtEPh26np4wk1Yob+0zd3nHMmk5iznXFj108H2X 5DGmhhFT5/BpKxzshRAXAsSymuT1Llwv/UM4hSU2fxrVPnJiWNIJZE0USc1wLdX+b0Vt n3wX2gPLiUrXDn1G/fv4NB1FMqYNj4UrGd1Is/xnKY8wtLltk6svL1CCTswsNeVQPwPY ocr6hCzdMmzaBbE8lMxnly89+9V29NS+wCST8urkp19BuhwluKdTl+dSr0sog7BTIJIe sY6llkmaGP0Xn1oFf4l/Su5cpyxu+pPrNaDip2LaZLLVvRzv4mKWspUz/CgYNtoNJFPC f2eA== X-Forwarded-Encrypted: i=1; AKwUvBz6dubDBjKXGNEr4FXcGzxY06iRUwnOmXkds1tI5+tiktH5tREAtzY65Z2etqnrbbI0MRyHweB8+sebTIE=@vger.kernel.org X-Gm-Message-State: AFuF++lOmybYJZovEoYKwWZ8u9WnDa5Mytf84o+Y+dtPXehxk0wIDBky izXKdsYWns0IuK0ct6KzhCHmXzD6QIMt0HZ1O0eqWAS/XrPZd7bzNNgODfwXkhRBNcvjQTE7mTs LJGSlJK8a X-Gm-Gg: AYBFou0eIqv2U4k+5Ri2iy6kGJQ5Lt7VTI6hneZN0zSCxLIYCvq0Q3W8BuHS8imFXgo qei4Qfo/KyqcDN6gStIJE7RTannZUIRs8wMMkAFuRIZjE8QNYCCZDqe/HjqrZtHEnpmofG4DIUu dysHwwczld7YJeQjcQbggugVsK4N3HC7hngKFBqkHODg75Hqz7YtzKG/H+9XRHtgEQRBJLHcXxD vTybW9sG4N2Pw88wsa5SdTJUc692MuN2kQFhQ1Y2B9+dQj71CdJdGU2tuihX/NlAB/zD1n4XvsF OrI7ss8qaKuVCaQMwHo2EuvxMCtsculMJyzZm62OJgehZWZL4FdMSCXLKpyl9qXHGpFE4qTv248 MOfhVmsDpXKgIr83XdNNhzHr8/a+ZxS0mpEy4GoPKgHJwdInyPFGCZs2ZvY2VrqppUiYYGcvLoZ axIONmV39f24AT7+WXMbIdwn7H79V5M1SGetjbboQbXiTzcw1iE1FwK3ngYhsnEG2S4PQ6q1ZOz Z8Xk6aTEnk9C3VnYZxnbgMV+WPIfWC7ngcOrYI2qavpyxS+n/+n+Z5c7a5l X-Received: by 2002:a2e:a7cf:0:b0:39b:128e:ae68 with SMTP id 38308e7fff4ca-3a5a4f3e418mr4574021fa.0.1789132960467; Fri, 11 Sep 2026 06:22:40 -0700 (PDT) Received: from ribalda.c.googlers.com (11.36.88.34.bc.googleusercontent.com. [34.88.36.11]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3a5a3303fc9sm6677511fa.6.2026.09.11.06.22.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Sep 2026 06:22:39 -0700 (PDT) From: Ricardo Ribalda Date: Fri, 11 Sep 2026 13:22:29 +0000 Subject: [PATCH v3 5/5] media: uvcvideo: Force UVC version for Avermedia GC515 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: <20260911-uvc-version-v3-5-604328d8a0dd@chromium.org> References: <20260911-uvc-version-v3-0-604328d8a0dd@chromium.org> In-Reply-To: <20260911-uvc-version-v3-0-604328d8a0dd@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab Cc: Edwin Gatier , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Mauro Carvalho Chehab , Ricardo Ribalda , stable@vger.kernel.org X-Mailer: b4 0.14.3 The device announces itself as UVC 1.5, but it only accepts UVC 1.1 controls. The camera can probably be handled by the automatic uvc_version handler, but it is more correct to add a quirk and keep some tracking of what vendors are more or less compliant. Also it might be more robust if we introduce more UVC version-dependent code. Bus 003 Device 021: ID 07ca:1515 AVerMedia Technologies, Inc. X'tra Go GC515 Negotiated speed: High Speed (480Mbps) Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 [unknown] bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 idVendor 0x07ca AVerMedia Technologies, Inc. idProduct 0x1515 X'tra Go GC515 bcdDevice 0.10 iManufacturer 1 AVerMedia iProduct 2 X'tra Go GC515 iSerial 3 5313180000221 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x03fd bNumInterfaces 4 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xc0 Self Powered MaxPower 500mA Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 0 bInterfaceCount 2 bFunctionClass 14 Video bFunctionSubClass 3 Video Interface Collection bFunctionProtocol 0 iFunction 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 1 Video Control bInterfaceProtocol 1 iInterface 0 VideoControl Interface Descriptor: bLength 13 bDescriptorType 36 bDescriptorSubtype 1 (HEADER) bcdUVC 1.50 wTotalLength 0x0059 dwClockFrequency 30.000000MHz bInCollection 1 baInterfaceNr( 0) 1 VideoControl Interface Descriptor: bLength 18 bDescriptorType 36 bDescriptorSubtype 2 (INPUT_TERMINAL) bTerminalID 1 wTerminalType 0x0201 Camera Sensor bAssocTerminal 0 iTerminal 0 wObjectiveFocalLengthMin 0 wObjectiveFocalLengthMax 0 wOcularFocalLength 0 bControlSize 3 bmControls 0x00000000 VideoControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 3 (OUTPUT_TERMINAL) bTerminalID 2 wTerminalType 0x0101 USB Streaming bAssocTerminal 0 bSourceID 4 iTerminal 0 VideoControl Interface Descriptor: bLength 7 bDescriptorType 36 bDescriptorSubtype 4 (SELECTOR_UNIT) bUnitID 3 bNrInPins 1 baSource( 0) 1 iSelector 0 VideoControl Interface Descriptor: bLength 13 bDescriptorType 36 bDescriptorSubtype 5 (PROCESSING_UNIT) bUnitID 4 bSourceID 3 wMaxMultiplier 0 bControlSize 3 bmControls 0x00000000 iProcessing 0 bmVideoStandards 0x00 VideoControl Interface Descriptor: bLength 29 bDescriptorType 36 bDescriptorSubtype 6 (EXTENSION_UNIT) bUnitID 5 guidExtensionCode {55be8e1c-2fdb-4f7a-bd8d-b9b1108d20c3} bNumControls 24 bNrInPins 1 baSourceID( 0) 4 bControlSize 4 bmControls( 0) 0xff bmControls( 1) 0xff bmControls( 2) 0xff bmControls( 3) 0x00 iExtension 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 1 VideoControl Endpoint Descriptor: bLength 5 bDescriptorType 37 bDescriptorSubtype 3 (EP_INTERRUPT) wMaxTransferSize 64 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 1 iInterface 0 VideoStreaming Interface Descriptor: bLength 16 bDescriptorType 36 bDescriptorSubtype 1 (INPUT_HEADER) bNumFormats 3 wTotalLength 0x0303 bEndpointAddress 0x81 EP 1 IN bmInfo 0 bTerminalLink 2 bStillCaptureMethod 1 bTriggerSupport 0 bTriggerUsage 0 bControlSize 1 bmaControls( 0) 4 bmaControls( 1) 4 bmaControls( 2) 0 VideoStreaming Interface Descriptor: bLength 28 bDescriptorType 36 bDescriptorSubtype 16 (FORMAT_FRAME_BASED) bFormatIndex 1 bNumFrameDescriptors 8 guidFormat {34363248-0000-0010-8000-00aa= 00389b71} bBitsPerPixel 24 bDefaultFrameIndex 1 bAspectRatioX 0 bAspectRatioY 0 bmInterlaceFlags 0x00 Interlaced stream or variable: No Fields per frame: 2 fields Field 1 first: No Field pattern: Field 1 only bCopyProtect 1 bVariableSize 1 VideoStreaming Interface Descriptor: bLength 62 bDescriptorType 36 bDescriptorSubtype 17 (FRAME_FRAME_BASED) bFrameIndex 1 bmCapabilities 0x01 Still image supported wWidth 1920 wHeight 1080 dwMinBitRate 33554432 dwMaxBitRate 268435456 dwDefaultFrameInterval 166666 bFrameIntervalType 9 dwBytesPerLine 0 dwFrameInterval( 0) 83333 dwFrameInterval( 1) 83416 dwFrameInterval( 2) 166666 dwFrameInterval( 3) 166833 dwFrameInterval( 4) 200000 dwFrameInterval( 5) 333333 dwFrameInterval( 6) 333667 dwFrameInterval( 7) 400000 dwFrameInterval( 8) 416666 VideoStreaming Interface Descriptor: bLength 42 bDescriptorType 36 bDescriptorSubtype 17 (FRAME_FRAME_BASED) bFrameIndex 2 bmCapabilities 0x01 Still image supported wWidth 3840 wHeight 2160 dwMinBitRate 33554432 dwMaxBitRate 268435456 dwDefaultFrameInterval 333333 bFrameIntervalType 4 dwBytesPerLine 0 dwFrameInterval( 0) 333333 dwFrameInterval( 1) 333667 dwFrameInterval( 2) 400000 dwFrameInterval( 3) 416666 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 17 (FRAME_FRAME_BASED) bFrameIndex 3 bmCapabilities 0x01 Still image supported wWidth 2560 wHeight 1440 dwMinBitRate 33554432 dwMaxBitRate 268435456 dwDefaultFrameInterval 166666 bFrameIntervalType 2 dwBytesPerLine 0 dwFrameInterval( 0) 166666 dwFrameInterval( 1) 166833 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 17 (FRAME_FRAME_BASED) bFrameIndex 4 bmCapabilities 0x01 Still image supported wWidth 1280 wHeight 800 dwMinBitRate 33554432 dwMaxBitRate 268435456 dwDefaultFrameInterval 166666 bFrameIntervalType 2 dwBytesPerLine 0 dwFrameInterval( 0) 166666 dwFrameInterval( 1) 166833 VideoStreaming Interface Descriptor: bLength 38 bDescriptorType 36 bDescriptorSubtype 17 (FRAME_FRAME_BASED) bFrameIndex 5 bmCapabilities 0x01 Still image supported wWidth 1280 wHeight 720 dwMinBitRate 33554432 dwMaxBitRate 268435456 dwDefaultFrameInterval 166666 bFrameIntervalType 3 dwBytesPerLine 0 dwFrameInterval( 0) 166666 dwFrameInterval( 1) 166833 dwFrameInterval( 2) 200000 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 17 (FRAME_FRAME_BASED) bFrameIndex 6 bmCapabilities 0x01 Still image supported wWidth 720 wHeight 576 dwMinBitRate 33554432 dwMaxBitRate 268435456 dwDefaultFrameInterval 200000 bFrameIntervalType 2 dwBytesPerLine 0 dwFrameInterval( 0) 200000 dwFrameInterval( 1) 400000 VideoStreaming Interface Descriptor: bLength 42 bDescriptorType 36 bDescriptorSubtype 17 (FRAME_FRAME_BASED) bFrameIndex 7 bmCapabilities 0x01 Still image supported wWidth 720 wHeight 480 dwMinBitRate 33554432 dwMaxBitRate 268435456 dwDefaultFrameInterval 166666 bFrameIntervalType 4 dwBytesPerLine 0 dwFrameInterval( 0) 166666 dwFrameInterval( 1) 166833 dwFrameInterval( 2) 333333 dwFrameInterval( 3) 333667 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 17 (FRAME_FRAME_BASED) bFrameIndex 8 bmCapabilities 0x01 Still image supported wWidth 640 wHeight 480 dwMinBitRate 33554432 dwMaxBitRate 268435456 dwDefaultFrameInterval 166666 bFrameIntervalType 2 dwBytesPerLine 0 dwFrameInterval( 0) 166666 dwFrameInterval( 1) 166833 VideoStreaming Interface Descriptor: bLength 6 bDescriptorType 36 bDescriptorSubtype 13 (COLORFORMAT) bColorPrimaries 0 (Unspecified) bTransferCharacteristics 0 (Unspecified) bMatrixCoefficients 0 (Unspecified) VideoStreaming Interface Descriptor: bLength 28 bDescriptorType 36 bDescriptorSubtype 16 (FORMAT_FRAME_BASED) bFormatIndex 2 bNumFrameDescriptors 8 guidFormat {43564548-0000-0010-8000-00aa= 00389b71} bBitsPerPixel 24 bDefaultFrameIndex 1 bAspectRatioX 0 bAspectRatioY 0 bmInterlaceFlags 0x00 Interlaced stream or variable: No Fields per frame: 2 fields Field 1 first: No Field pattern: Field 1 only bCopyProtect 1 bVariableSize 1 VideoStreaming Interface Descriptor: bLength 62 bDescriptorType 36 bDescriptorSubtype 17 (FRAME_FRAME_BASED) bFrameIndex 1 bmCapabilities 0x01 Still image supported wWidth 1920 wHeight 1080 dwMinBitRate 33554432 dwMaxBitRate 268435456 dwDefaultFrameInterval 166666 bFrameIntervalType 9 dwBytesPerLine 0 dwFrameInterval( 0) 83333 dwFrameInterval( 1) 83416 dwFrameInterval( 2) 166666 dwFrameInterval( 3) 166833 dwFrameInterval( 4) 200000 dwFrameInterval( 5) 333333 dwFrameInterval( 6) 333667 dwFrameInterval( 7) 400000 dwFrameInterval( 8) 416666 VideoStreaming Interface Descriptor: bLength 42 bDescriptorType 36 bDescriptorSubtype 17 (FRAME_FRAME_BASED) bFrameIndex 2 bmCapabilities 0x01 Still image supported wWidth 3840 wHeight 2160 dwMinBitRate 33554432 dwMaxBitRate 268435456 dwDefaultFrameInterval 333333 bFrameIntervalType 4 dwBytesPerLine 0 dwFrameInterval( 0) 333333 dwFrameInterval( 1) 333667 dwFrameInterval( 2) 400000 dwFrameInterval( 3) 416666 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 17 (FRAME_FRAME_BASED) bFrameIndex 3 bmCapabilities 0x01 Still image supported wWidth 2560 wHeight 1440 dwMinBitRate 33554432 dwMaxBitRate 268435456 dwDefaultFrameInterval 166666 bFrameIntervalType 2 dwBytesPerLine 0 dwFrameInterval( 0) 166666 dwFrameInterval( 1) 166833 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 17 (FRAME_FRAME_BASED) bFrameIndex 4 bmCapabilities 0x01 Still image supported wWidth 1280 wHeight 800 dwMinBitRate 33554432 dwMaxBitRate 268435456 dwDefaultFrameInterval 166666 bFrameIntervalType 2 dwBytesPerLine 0 dwFrameInterval( 0) 166666 dwFrameInterval( 1) 166833 VideoStreaming Interface Descriptor: bLength 38 bDescriptorType 36 bDescriptorSubtype 17 (FRAME_FRAME_BASED) bFrameIndex 5 bmCapabilities 0x01 Still image supported wWidth 1280 wHeight 720 dwMinBitRate 33554432 dwMaxBitRate 268435456 dwDefaultFrameInterval 166666 bFrameIntervalType 3 dwBytesPerLine 0 dwFrameInterval( 0) 166666 dwFrameInterval( 1) 166833 dwFrameInterval( 2) 200000 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 17 (FRAME_FRAME_BASED) bFrameIndex 6 bmCapabilities 0x01 Still image supported wWidth 720 wHeight 576 dwMinBitRate 33554432 dwMaxBitRate 268435456 dwDefaultFrameInterval 200000 bFrameIntervalType 2 dwBytesPerLine 0 dwFrameInterval( 0) 200000 dwFrameInterval( 1) 400000 VideoStreaming Interface Descriptor: bLength 42 bDescriptorType 36 bDescriptorSubtype 17 (FRAME_FRAME_BASED) bFrameIndex 7 bmCapabilities 0x01 Still image supported wWidth 720 wHeight 480 dwMinBitRate 33554432 dwMaxBitRate 268435456 dwDefaultFrameInterval 166666 bFrameIntervalType 4 dwBytesPerLine 0 dwFrameInterval( 0) 166666 dwFrameInterval( 1) 166833 dwFrameInterval( 2) 333333 dwFrameInterval( 3) 333667 VideoStreaming Interface Descriptor: bLength 34 bDescriptorType 36 bDescriptorSubtype 17 (FRAME_FRAME_BASED) bFrameIndex 8 bmCapabilities 0x01 Still image supported wWidth 640 wHeight 480 dwMinBitRate 33554432 dwMaxBitRate 268435456 dwDefaultFrameInterval 166666 bFrameIntervalType 2 dwBytesPerLine 0 dwFrameInterval( 0) 166666 dwFrameInterval( 1) 166833 VideoStreaming Interface Descriptor: bLength 6 bDescriptorType 36 bDescriptorSubtype 13 (COLORFORMAT) bColorPrimaries 0 (Unspecified) bTransferCharacteristics 0 (Unspecified) bMatrixCoefficients 0 (Unspecified) VideoStreaming Interface Descriptor: bLength 11 bDescriptorType 36 bDescriptorSubtype 6 (FORMAT_MJPEG) bFormatIndex 3 bNumFrameDescriptors 1 bFlags 0 Fixed-size samples: No bDefaultFrameIndex 1 bAspectRatioX 0 bAspectRatioY 0 bmInterlaceFlags 0x00 Interlaced stream or variable: No Fields per frame: 1 fields Field 1 first: No Field pattern: Field 1 only bCopyProtect 1 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 1 bmCapabilities 0x01 Still image supported wWidth 1920 wHeight 1080 dwMinBitRate 314572800 dwMaxBitRate 314572800 dwMaxVideoFrameBufferSize 4147200 dwDefaultFrameInterval 166666 bFrameIntervalType 1 dwFrameInterval( 0) 166666 VideoStreaming Interface Descriptor: bLength 6 bDescriptorType 36 bDescriptorSubtype 13 (COLORFORMAT) bColorPrimaries 0 (Unspecified) bTransferCharacteristics 0 (Unspecified) bMatrixCoefficients 0 (Unspecified) Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 2 bInterfaceCount 2 bFunctionClass 1 Audio bFunctionSubClass 2 Streaming bFunctionProtocol 0 iFunction 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 1 Audio bInterfaceSubClass 1 Control Device bInterfaceProtocol 0 iInterface 0 AudioControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 1 (HEADER) bcdADC 1.00 wTotalLength 0x0026 bInCollection 1 baInterfaceNr(0) 3 AudioControl Interface Descriptor: bLength 12 bDescriptorType 36 bDescriptorSubtype 2 (INPUT_TERMINAL) bTerminalID 1 wTerminalType 0x0602 Digital Audio Interface bAssocTerminal 0 bNrChannels 2 wChannelConfig 0x0003 Left Front (L) Right Front (R) iChannelNames 0 iTerminal 0 AudioControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 3 (OUTPUT_TERMINAL) bTerminalID 2 wTerminalType 0x0101 USB Streaming bAssocTerminal 0 bSourceID 3 iTerminal 0 AudioControl Interface Descriptor: bLength 8 bDescriptorType 36 bDescriptorSubtype 6 (FEATURE_UNIT) bUnitID 3 bSourceID 1 bControlSize 1 bmaControls(0) 0x03 Mute Control Volume Control iFeature 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 0 iInterface 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 1 Audio bInterfaceSubClass 2 Streaming bInterfaceProtocol 0 iInterface 0 AudioStreaming Interface Descriptor: bLength 7 bDescriptorType 36 bDescriptorSubtype 1 (AS_GENERAL) bTerminalLink 2 bDelay 1 frames wFormatTag 0x0001 PCM AudioStreaming Interface Descriptor: bLength 11 bDescriptorType 36 bDescriptorSubtype 2 (FORMAT_TYPE) bFormatType 1 (FORMAT_TYPE_I) bNrChannels 2 bSubframeSize 2 bBitResolution 16 bSamFreqType 1 Discrete tSamFreq[ 0] 48000 Endpoint Descriptor: bLength 9 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x00c4 1x 196 bytes bInterval 4 bRefresh 0 bSynchAddress 0 AudioStreaming Endpoint Descriptor: bLength 7 bDescriptorType 37 bDescriptorSubtype 1 (EP_GENERAL) bmAttributes 0x01 Sampling Frequency bLockDelayUnits 0 Undefined wLockDelay 0x0000 Cc: stable@vger.kernel.org Fixes: b400b6f28af0 ("media: uvcvideo: Force UVC version to 1.0a for 1bcf:0= b40") # When version overwritte was added Reported-by: Edwin Gatier Closes: https://lore.kernel.org/linux-media/CANiDSCu4AW=3DJZ9FS+Ny=3DDK_+Lq= qytGvSe+V6aVncRiGRiyDMfA@mail.gmail.com/T/#me584c35c4b523ac455925a1590a3de8= efc354349 Tested-by: Edwin Gatier Signed-off-by: Ricardo Ribalda --- drivers/media/usb/uvc/uvc_driver.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc= _driver.c index adec9d1aa653..bbfc409c5167 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -2847,6 +2847,17 @@ static const struct usb_device_id uvc_ids[] =3D { .bInterfaceSubClass =3D 1, .bInterfaceProtocol =3D 0, .driver_info =3D (kernel_ulong_t)&uvc_quirk_fix_bandwidth }, + /* Avermedia GC515 */ + { .match_flags =3D USB_DEVICE_ID_MATCH_DEVICE + | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor =3D 0x07ca, + .idProduct =3D 0x1515, + .bInterfaceClass =3D USB_CLASS_VIDEO, + .bInterfaceSubClass =3D 1, + .bInterfaceProtocol =3D UVC_PC_PROTOCOL_15, + .driver_info =3D (kernel_ulong_t)&(const struct uvc_device_info){ + .uvc_version =3D 0x0110, + } }, /* ViMicro Vega */ { .match_flags =3D USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, --=20 2.55.0.1007.g17ff1f9808-goog