All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ricardo Ribalda <ribalda@chromium.org>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	 Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
	 "hn.chen" <hn.chen@sunplusit.com>,
	Hans Verkuil <hverkuil@xs4all.nl>,
	 Ricardo Ribalda <ribalda@chromium.org>,
	 Sergey Senozhatsky <senozhatsky@chromium.org>
Subject: [PATCH v10 1/6] media: uvcvideo: Support timestamp lists of any size
Date: Sat, 23 Mar 2024 10:48:02 +0000	[thread overview]
Message-ID: <20240323-resend-hwtimestamp-v10-1-b08e590d97c7@chromium.org> (raw)
In-Reply-To: <20240323-resend-hwtimestamp-v10-0-b08e590d97c7@chromium.org>

The tail of the list lives at the position before the head. This is
mathematically noted as:
```
(head-1) mod size.
```
Unfortunately C, does not have a modulus operator, but a remainder
operator (%).
The reminder operation has a different result than the modulus if
(head -1) is a negative number and size is not a power of two.

Adding size to (head-1) allows the code to run with any value of size.

This does not change the current behaviour of the driver, as the size is
always a power of two, but avoid tedious debugging if we ever change its
size.

Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
 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 7cbf4692bd875..659c9e9880a99 100644
--- a/drivers/media/usb/uvc/uvc_video.c
+++ b/drivers/media/usb/uvc/uvc_video.c
@@ -732,7 +732,7 @@ void uvc_video_clock_update(struct uvc_streaming *stream,
 		goto done;
 
 	first = &clock->samples[clock->head];
-	last = &clock->samples[(clock->head - 1) % clock->size];
+	last = &clock->samples[(clock->head - 1 + clock->size) % clock->size];
 
 	/* First step, PTS to SOF conversion. */
 	delta_stc = buf->pts - (1UL << 31);

-- 
2.44.0.396.g6e790dbe36-goog


  reply	other threads:[~2024-03-23 10:48 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-23 10:48 [PATCH v10 0/6] uvcvideo: Fixes for hw timestamping Ricardo Ribalda
2024-03-23 10:48 ` Ricardo Ribalda [this message]
2024-03-23 10:48 ` [PATCH v10 2/6] media: uvcvideo: Ignore empty TS packets Ricardo Ribalda
2024-03-23 10:48 ` [PATCH v10 3/6] media: uvcvideo: Quirk for invalid dev_sof in Logitech C922 Ricardo Ribalda
2024-03-23 12:16   ` Oleksandr Natalenko
2024-03-25  7:52     ` Ricardo Ribalda
2024-03-25  9:23       ` Oleksandr Natalenko
2024-03-25  9:25         ` Ricardo Ribalda
2024-03-25 12:50           ` Oleksandr Natalenko
2024-03-25 14:13             ` Ricardo Ribalda
2024-03-23 10:48 ` [PATCH v10 4/6] media: uvcvideo: Allow hw clock updates with buffers not full Ricardo Ribalda
2024-03-23 10:48 ` [PATCH v10 5/6] media: uvcvideo: Refactor clock circular buffer Ricardo Ribalda
2024-03-23 10:48 ` [PATCH v10 6/6] media: uvcvideo: Fix hw timestamp handling for slow FPS Ricardo Ribalda

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240323-resend-hwtimestamp-v10-1-b08e590d97c7@chromium.org \
    --to=ribalda@chromium.org \
    --cc=hn.chen@sunplusit.com \
    --cc=hverkuil@xs4all.nl \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=senozhatsky@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.