From nobody Sun Apr 5 16:31:36 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 2FC883A6B88 for ; Mon, 23 Mar 2026 13:10:37 +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=1774271439; cv=none; b=fZCvvQSCvfaKysC17E8lpZEfalUQENxSREdghnC3dCHMBFsqGGF953Tbcr9uowvA7JvWQ+QrTso1dyO9S4adABA/s8bSdfF5ZXXLnTJwyb0Xt32UkJGDwQf+3zvgiwAzEiaoK/pFnP+eqkbeSuOfgDSA/MHZDJlpzFNf76GuPBE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774271439; c=relaxed/simple; bh=Dik3qCI9WwYhQtWNVwsHglbalL0D4dBZsnePm7m7Hjk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nVCdRMFFBztd4VdOVR7Kl6UZEw+umwkARww9A/tGqF4nMktEEn5E/UkHpBZ2ntAWYyM+BrS8axWMD8+WS90dyOq+kIj3AhJXcWGKxhTg4uVwB31UJX4CmhMeBbLeTj7qCo7tAcUlXkx2OiT1q45hytcZy8GY6ytcuX2kuFcTqCU= 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=NtdAjaCv; 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="NtdAjaCv" Received: by mail-lj1-f178.google.com with SMTP id 38308e7fff4ca-38a01c80c34so32050231fa.0 for ; Mon, 23 Mar 2026 06:10:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1774271435; x=1774876235; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=l9dStjhiWrEZzM9Aql0LQkX++HFAYapf9Vi1OVY9kvs=; b=NtdAjaCvIlgJ44VFq+QAflHjV8aLwP9c0INLCzifuk0kwJ7TR4kbIzrni0cqXvRxUa a0gMG0YST+t9i4I9XX5ddX+TUG6xxCKoXd/t4TxfAC0LagLgVd60U4HZerSSpIB9/KjJ ZebhO8eyrdySNBxYfX+QkDA6OpLtYfFAd7qvA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774271435; x=1774876235; h=cc:to:in-reply-to:references: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=l9dStjhiWrEZzM9Aql0LQkX++HFAYapf9Vi1OVY9kvs=; b=PCxq3m1DBhZve94NgV1EM+JypaUy8taAiXEqWA8UomzF1jcT0d6r01wo45EYelA5YU RHmGD0gK97w3W9Ix3SrOvD42ymDp21/n/Kz5pJd56dTTvenQe0JUzvaWVLwM1agSOeam lR5UI/L0SLnB3p7H3k3Hjaa0fDPz+McjWkloIvIlLDIHGM7hILGhDWySHHhAI6vHyAsa +CFJDTo++vGLA8+whyp67rxao/RIXjBzt8pK6oiuXr/ws0+pu5MkO+9YD8Z9oH7fhPJD kM1tdr9wYGSBCZQL/RfhWuPUn5U2rls5OtLZZu3b55d5s/l+qwWK38QhbZfWL1r0cIl6 3thA== X-Forwarded-Encrypted: i=1; AJvYcCVybUL2hfb24jowZkiLtrQnB83DNBU6luwzTsMscHXpsUdsXYAwOrRV6681A9ATRrE/glaiwOUQZkgSeYY=@vger.kernel.org X-Gm-Message-State: AOJu0YwMEUJxeU69Q4bqaRRtCF7ur+o1ID2XMoNeuDmksm8BN3DZFIt1 Aqx7spgY+U+J4mavAXbCM4kOS/P63CVStcYlez+lHUXJLjlbXzzxm9CbsQtBH9XWmw== X-Gm-Gg: ATEYQzx4ivyFjU5nf/nAj5OoZVpg4uJQYz1HX14/NKd5WoRigYz/KeaJJeo49tOiuCt 8PJ8bGjgIfdqNeLvRdTkspBMEaRM3JG3qndtfxPipbAzjMMF/21bXBweOt20176uVMaTdtJnAf6 vXJlFPlSMPicvc6gdH8TkjcYWjqDJQ4Y+a2fsGykOceEa/1B0e/Oyyu12+UW7MNjBPgNnG4ZMas mlOwuA64zTOg7rYeY090xbpIxDZ697Bk+VRcnq97EHpuQuUt4xgEEXBYgGDIwdF60pndOIBj6oq jVYTz3mlbF0uljfjEXJepUtbi0tGVq1FNtns8YN2BGz+LZnvUZchLzDQjHPlYF64AiAs3eWzVSQ rNrfG+sEwngoc9nS6nAafX0qWqECQVRxwBRyb6LCY/R+qWp8kKqASZYLuM9ijd8f58tk1D3PS76 YvkreZSdxKU5RslpAlPwwJUq/NGHCzJy8jwDKdsHeXCTFsQJq/99w3ELOpgHZvxVGHW0/Ibqhpr m/pWh8= X-Received: by 2002:a05:6512:39d1:b0:5a1:2a71:cc3b with SMTP id 2adb3069b0e04-5a285b06943mr4155949e87.18.1774271435364; Mon, 23 Mar 2026 06:10:35 -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-5a285305e07sm2515904e87.66.2026.03.23.06.10.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 06:10:33 -0700 (PDT) From: Ricardo Ribalda Date: Mon, 23 Mar 2026 13:10:28 +0000 Subject: [PATCH 1/4] media: uvcvideo: Fix dev_sof filtering in hw timestamp 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-hwtimestamp-v1-1-aa42e3865204@chromium.org> References: <20260323-uvc-hwtimestamp-v1-0-aa42e3865204@chromium.org> In-Reply-To: <20260323-uvc-hwtimestamp-v1-0-aa42e3865204@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Tomasz Figa , Sergey Senozhatsky Cc: Yunke Cao , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Ricardo Ribalda , stable@vger.kernel.org X-Mailer: b4 0.14.3 To avoid filling the clock circular buffer with duplicated data we only add it if the new value sof is different than the last added sof. The issue is that we compare the unprocess sof with the processed sof. If there is a sof_offset, or UVC_QUIRK_INVALID_DEVICE_SOF is enabled, the comparison will not work as expected. This patch moves the comparison to the right place. Fixes: 141270bd95d4 ("media: uvcvideo: Refactor clock circular buffer") Cc: stable@vger.kernel.org Signed-off-by: Ricardo Ribalda --- drivers/media/usb/uvc/uvc_video.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_= video.c index 40c76c051da2..6786ca38fe5e 100644 --- a/drivers/media/usb/uvc/uvc_video.c +++ b/drivers/media/usb/uvc/uvc_video.c @@ -583,16 +583,7 @@ uvc_video_clock_decode(struct uvc_streaming *stream, s= truct uvc_buffer *buf, if (!has_scr) return; =20 - /* - * To limit the amount of data, drop SCRs with an SOF identical to the - * previous one. This filtering is also needed to support UVC 1.5, where - * all the data packets of the same frame contains the same SOF. In that - * case only the first one will match the host_sof. - */ sample.dev_sof =3D get_unaligned_le16(&data[header_size - 2]); - if (sample.dev_sof =3D=3D stream->clock.last_sof) - return; - sample.dev_stc =3D get_unaligned_le32(&data[header_size - 6]); =20 /* @@ -664,6 +655,16 @@ uvc_video_clock_decode(struct uvc_streaming *stream, s= truct uvc_buffer *buf, } =20 sample.dev_sof =3D (sample.dev_sof + stream->clock.sof_offset) & 2047; + + /* + * To limit the amount of data, drop SCRs with an SOF identical to the + * previous one. This filtering is also needed to support UVC 1.5, where + * all the data packets of the same frame contains the same SOF. In that + * case only the first one will match the host_sof. + */ + if (sample.dev_sof =3D=3D stream->clock.last_sof) + return; + uvc_video_clock_add_sample(&stream->clock, &sample); stream->clock.last_sof =3D sample.dev_sof; } --=20 2.53.0.959.g497ff81fa9-goog