staging: bcm2835-camera use ktime_t for timestamps
authorArnd Bergmann <arnd@arndb.de>
Mon, 27 Nov 2017 13:19:56 +0000 (14:19 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 28 Nov 2017 12:52:48 +0000 (13:52 +0100)
struct timeval is deprecated for in-kernel use, and converting
this function to use ktime_t makes it simpler as well.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h

index be936b8..d8766b1 100644 (file)
@@ -343,37 +343,18 @@ static void buffer_cb(struct vchiq_mmal_instance *instance,
                if (dev->capture.frame_count) {
                        if (dev->capture.vc_start_timestamp != -1 &&
                            pts != 0) {
-                               struct timeval timestamp;
+                               ktime_t timestamp;
                                s64 runtime_us = pts -
                                    dev->capture.vc_start_timestamp;
-                               u32 div = 0;
-                               u32 rem = 0;
-
-                               div =
-                                   div_u64_rem(runtime_us, USEC_PER_SEC, &rem);
-                               timestamp.tv_sec =
-                                   dev->capture.kernel_start_ts.tv_sec + div;
-                               timestamp.tv_usec =
-                                   dev->capture.kernel_start_ts.tv_usec + rem;
-
-                               if (timestamp.tv_usec >=
-                                   USEC_PER_SEC) {
-                                       timestamp.tv_sec++;
-                                       timestamp.tv_usec -=
-                                           USEC_PER_SEC;
-                               }
+                               timestamp = ktime_add_us(dev->capture.kernel_start_ts,
+                                                        runtime_us);
                                v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
-                                        "Convert start time %d.%06d and %llu "
-                                        "with offset %llu to %d.%06d\n",
-                                        (int)dev->capture.kernel_start_ts.
-                                        tv_sec,
-                                        (int)dev->capture.kernel_start_ts.
-                                        tv_usec,
+                                        "Convert start time %llu and %llu "
+                                        "with offset %llu to %llu\n",
+                                        ktime_to_ns(dev->capture.kernel_start_ts),
                                         dev->capture.vc_start_timestamp, pts,
-                                        (int)timestamp.tv_sec,
-                                        (int)timestamp.tv_usec);
-                               buf->vb.vb2_buf.timestamp = timestamp.tv_sec * 1000000000ULL +
-                                       timestamp.tv_usec * 1000ULL;
+                                        ktime_to_ns(timestamp));
+                               buf->vb.vb2_buf.timestamp = ktime_to_ns(timestamp);
                        } else {
                                buf->vb.vb2_buf.timestamp = ktime_get_ns();
                        }
@@ -547,7 +528,7 @@ static int start_streaming(struct vb2_queue *vq, unsigned int count)
                         "Start time %lld size %d\n",
                         dev->capture.vc_start_timestamp, parameter_size);
 
-       v4l2_get_timestamp(&dev->capture.kernel_start_ts);
+       dev->capture.kernel_start_ts = ktime_get();
 
        /* enable the camera port */
        dev->capture.port->cb_ctx = dev;
index 4040374..8392068 100644 (file)
@@ -92,7 +92,7 @@ struct bm2835_mmal_dev {
                /* VC start timestamp for streaming */
                s64         vc_start_timestamp;
                /* Kernel start timestamp for streaming */
-               struct timeval kernel_start_ts;
+               ktime_t kernel_start_ts;
 
                struct vchiq_mmal_port  *port; /* port being used for capture */
                /* camera port being used for capture */