From nobody Fri Apr 3 22:27:42 2026 Received: from mail-lf1-f50.google.com (mail-lf1-f50.google.com [209.85.167.50]) (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 D1BCF3A63E1 for ; Mon, 23 Mar 2026 13:10:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774271442; cv=none; b=stkhRRjwZ2McHW2dsERIXiJBOtOzy5xfoTyzKGtL/tp7+mKY797WNWvKtqae5cpebDsq70JjDlyqBkQASLGfXuxKYnSsssjXygcd620tVAjz1FimRalDDAtqdhjSpr0KSChwUDzIWPNGEz6WcnABS2EOujYrwQVJI0XZMLrznpA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774271442; c=relaxed/simple; bh=vY4TcenAOFgGP74tpglPTaL2A4UIW1qGNpu9kH26VSc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pNWPpz8yGS2gMhijbFPv1ESh8oyhzhgq15zq/A2dp0nWTJ8j6jPP/tnqyzeBb5yHIGnlYdFhb1ccqAk+LNifP4rJKBO5JvpJkYPD55fBDhqjm/tqzWgaLh2oiMkg6KEwHETtNKGEU/Uu+Qcg5bXJN3i50mBl22IDQwgGEHUi0Cg= 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=OLO94n08; arc=none smtp.client-ip=209.85.167.50 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="OLO94n08" Received: by mail-lf1-f50.google.com with SMTP id 2adb3069b0e04-5a1307438ddso2913891e87.1 for ; Mon, 23 Mar 2026 06:10:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1774271439; x=1774876239; 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=WzNp/JcL77myXdZwPsBD1eDno+MS1KWcO+UVbGYOu0k=; b=OLO94n08y70qU8jA9GyFN2o5tEp3oLLfqEKv/9xdr6ByaqSdZcgCw5YI+0Zb1IUYnX PmGY4V7uEZTqGtLV0kPZLDC/u9OLH7AW7UJSJ/Ve0wkqwKJDl09tVvGUualpnPFvl2MD ZfXXrao+0LoiAd+2eUlQv1AOYlm6HobwOQMYQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774271439; x=1774876239; 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=WzNp/JcL77myXdZwPsBD1eDno+MS1KWcO+UVbGYOu0k=; b=DonT9V/2A3ukK2sucwW8+7k04VfTcJ2FXt9N2VQ2NNoAxRuh6M4RYhZI45tu2xUsPW pcoE7dceU2j/FUYjXYEH9GUyk+//4XgAxxGM33q7wzG3ttX4ad5IhOxo7/9KZJDivTlc qwDXBWtnXsgTfLkxPnJB6UFsxXcEWHOXjji2lB6ylrlwKUw391lJUN8lHjmta5FFEt8o pTNwzKZjbsFQYg+CasjCoUr0x+vsAJkNsXgEGwf3Kc/ZjbH7G9mgEki5+m9c7uuUXnCs O8wH2h0RT+Jh/9UzHgvFD8PL2gM7rbZ+ZsRHFSUiV6IHvpOcIPJISP0qeRheFrRq1rrF b2OA== X-Forwarded-Encrypted: i=1; AJvYcCXco4RFqU0elKLs66SO+fWkobtbrTNLwRa7r73NUzTwIfUH7cAiuQlypxvavETE2R8ZfCfQQmu2WsPWtlg=@vger.kernel.org X-Gm-Message-State: AOJu0YzuugPOK7oTPAvV3gJBNSN77QhqAf9jXHOj1W6cCgx8C1MOu0al tU8XdVUTCA52HMM0Q7l8Ye1UHuNrRbzDQkXNRmCLZy13hlOVBFGtdbQvAYCQ31EoOupChBERZfh FkPo16g== X-Gm-Gg: ATEYQzyGdejQpw76nL8QuPsEIHt7nfqYKd/rBRuthKvDflRuv8/tA0pjt9lgoPT1eVv +XVtIOlmuhtfcN5QYZfbdyG0rCmgrTKgJkjYc3XKyR5wjRReB+w/QdSLCCLLvomTz8PFvITSOJZ /PU4uDoS9yzWPZT4+fFJIvikI22GTtlkyQ1SSPoWtzBelzC8D+HDp4pfZCyMddvzA8SGcHgnT0b G1zZPbrEAZXB64jjq6XzKqRU+rf8FeN2REldyGVix1aV6P1Omi3E2M5f3+yK93mp9HP2vOSyfeG TRLGVt3tDlwurOZWs0LjFiF57lXtOVn9Vgwuwp7/MYw35tfkr0kxwxUa8X6Oc2HfyXYx1s3hRdJ RJvHKZsU8CGHaPCq+8u9H4KmwdVwaKAtUAMJ8tovqF3eH+u91fDF6WB6MeVuzLie6S65tJSW3AS 1puZ1AJH70IqrHtXSPECcP1hP7okNrQR3GIWBY8abifsCZe5CCzeZfpQNGP6F36Kc9lfo2tXWny ZjZ6jI= X-Received: by 2002:a05:6512:158a:b0:5a2:7eb8:2f90 with SMTP id 2adb3069b0e04-5a285b5d65fmr3764860e87.39.1774271439020; Mon, 23 Mar 2026 06:10:39 -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.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2026 06:10:37 -0700 (PDT) From: Ricardo Ribalda Date: Mon, 23 Mar 2026 13:10:29 +0000 Subject: [PATCH 2/4] media: uvcvideo: Use hw timestaming if the clock buffer is full 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-2-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 In some situations, even with a full clock buffer, it does not contain 250msec of data. This results in the driver jumping back from software to hardware timestapsing creating a nasty artifact in the video. If the clock buffer is full, use it to calculate the timestamp instead of defaulting to software stamps, the reduced accuracy is less visible than jumping from one timestamping mechanism to the other. Fixes: 6243c83be6ee8 ("media: uvcvideo: Allow hw clock updates with buffers= not full") Cc: stable@vger.kernel.org Signed-off-by: Ricardo Ribalda --- drivers/media/usb/uvc/uvc_video.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_= video.c index 6786ca38fe5e..c7ebedb3450f 100644 --- a/drivers/media/usb/uvc/uvc_video.c +++ b/drivers/media/usb/uvc/uvc_video.c @@ -842,7 +842,7 @@ void uvc_video_clock_update(struct uvc_streaming *strea= m, * dev_sof runs at 1KHz, and we have a fixed point precision of * 16 bits. */ - if ((y2 - y1) < ((1000 / 4) << 16)) + if (clock->size !=3D clock->count && (y2 - y1) < ((1000 / 4) << 16)) goto done; =20 y =3D (u64)(y2 - y1) * (1ULL << 31) + (u64)y1 * (u64)x2 --=20 2.53.0.959.g497ff81fa9-goog