From: Hans Verkuil <[email protected]>

Just like vb2 does, use u64 internally to store the timestamps
of the buffers. Only convert to timeval when interfacing with
userspace.

Signed-off-by: Hans Verkuil <[email protected]>
---
 drivers/media/pci/meye/meye.c | 8 ++++----
 drivers/media/pci/meye/meye.h | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/media/pci/meye/meye.c b/drivers/media/pci/meye/meye.c
index bd870e60c32b..896d2d856795 100644
--- a/drivers/media/pci/meye/meye.c
+++ b/drivers/media/pci/meye/meye.c
@@ -805,7 +805,7 @@ static irqreturn_t meye_irq(int irq, void *dev_id)
                                      mchip_hsize() * mchip_vsize() * 2);
                meye.grab_buffer[reqnr].size = mchip_hsize() * mchip_vsize() * 
2;
                meye.grab_buffer[reqnr].state = MEYE_BUF_DONE;
-               v4l2_get_timestamp(&meye.grab_buffer[reqnr].timestamp);
+               meye.grab_buffer[reqnr].ts = ktime_get_ns();
                meye.grab_buffer[reqnr].sequence = sequence++;
                kfifo_in_locked(&meye.doneq, (unsigned char *)&reqnr,
                                sizeof(int), &meye.doneq_lock);
@@ -826,7 +826,7 @@ static irqreturn_t meye_irq(int irq, void *dev_id)
                       size);
                meye.grab_buffer[reqnr].size = size;
                meye.grab_buffer[reqnr].state = MEYE_BUF_DONE;
-               v4l2_get_timestamp(&meye.grab_buffer[reqnr].timestamp);
+               meye.grab_buffer[reqnr].ts = ktime_get_ns();
                meye.grab_buffer[reqnr].sequence = sequence++;
                kfifo_in_locked(&meye.doneq, (unsigned char *)&reqnr,
                                sizeof(int), &meye.doneq_lock);
@@ -1283,7 +1283,7 @@ static int vidioc_querybuf(struct file *file, void *fh, 
struct v4l2_buffer *buf)
                buf->flags |= V4L2_BUF_FLAG_DONE;
 
        buf->field = V4L2_FIELD_NONE;
-       buf->timestamp = meye.grab_buffer[index].timestamp;
+       buf->timestamp = ns_to_timeval(meye.grab_buffer[index].ts);
        buf->sequence = meye.grab_buffer[index].sequence;
        buf->memory = V4L2_MEMORY_MMAP;
        buf->m.offset = index * gbufsize;
@@ -1349,7 +1349,7 @@ static int vidioc_dqbuf(struct file *file, void *fh, 
struct v4l2_buffer *buf)
        buf->bytesused = meye.grab_buffer[reqnr].size;
        buf->flags = V4L2_BUF_FLAG_MAPPED | V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
        buf->field = V4L2_FIELD_NONE;
-       buf->timestamp = meye.grab_buffer[reqnr].timestamp;
+       buf->timestamp = ns_to_timeval(meye.grab_buffer[reqnr].ts);
        buf->sequence = meye.grab_buffer[reqnr].sequence;
        buf->memory = V4L2_MEMORY_MMAP;
        buf->m.offset = reqnr * gbufsize;
diff --git a/drivers/media/pci/meye/meye.h b/drivers/media/pci/meye/meye.h
index c4a8a5fe040c..0af868eb6210 100644
--- a/drivers/media/pci/meye/meye.h
+++ b/drivers/media/pci/meye/meye.h
@@ -277,7 +277,7 @@
 struct meye_grab_buffer {
        int state;                      /* state of buffer */
        unsigned long size;             /* size of jpg frame */
-       struct timeval timestamp;       /* timestamp */
+       u64 ts;                         /* timestamp */
        unsigned long sequence;         /* sequence number */
 };
 
-- 
2.20.1

Reply via email to