From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752406AbdK0NW1 (ORCPT ); Mon, 27 Nov 2017 08:22:27 -0500 Received: from mout.kundenserver.de ([217.72.192.75]:62821 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752083AbdK0NWZ (ORCPT ); Mon, 27 Nov 2017 08:22:25 -0500 From: Arnd Bergmann To: Eric Anholt , Stefan Wahren , Greg Kroah-Hartman , Florian Fainelli , Ray Jui , Scott Branden , bcm-kernel-feedback-list@broadcom.com Cc: y2038@lists.linaro.org, Arnd Bergmann , Narcisa Ana Maria Vasile , Michael Zoran , Aishwarya Pant , Derek Robson , linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/8] [media] staging: bcm2835-camera use ktime_t for timestamps Date: Mon, 27 Nov 2017 14:19:56 +0100 Message-Id: <20171127132027.1734806-4-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20171127132027.1734806-1-arnd@arndb.de> References: <20171127132027.1734806-1-arnd@arndb.de> X-Provags-ID: V03:K0:MVl04qGSRhXhkCMD9+Gi42dvUTcVZ9FC4uN2YpDCwZOkrZKv3Ce BlPC4UlSDWzLQQalaVUuoH5iQFmrYgY5/cwadlHSQZXZY+LNFhnpxSfdbIcGycVi0YEPro8 9QJOqtqkahATzMgSYNY4IZgSodBC4zMQgf8HcLWZ62P8sST52qB4I6I9O1oBjO5ZtBR4rvn weS6N49yzhl/+e5k07fBA== X-UI-Out-Filterresults: notjunk:1;V01:K0:Igjie9rb1Lw=:7etzPtGzjSgbWHFNTzaLow Zmxr9+R4dj/lzo+1EOKpVGKwH8mYFJJWBQwUn0W7i8UQyaw4S3xOgXPA6QPP6W1Ya3UDTO/8T CzTJiAEOHwBwAKRon8BXlgq/6JdYJ6WXb7Mv3yoO1Goze9fyUXKXiwHR9sW+CpEQT8YSDEHcY KY1Ar3+wJIRxZhGN56QiS+p+sjeE2gFTR4UXSK9wmD+BXeqKX9ibv+y+3GFgRhQRAnhrlFzqS yabfdULyPKD2hqEOOki8Oey6n3wGswzrlAu87NHfetqSV2xhZQj0WDgb+Ii5c5QX3lELsUSVD aH5drHvtcKbm77pJemr5jVvcL5pZ8uK0alWLU1esYpIlaz/l+saY+7EYtwafmkPcfkdPCHgh8 CYL6klUCUYCfc1m08S7MEoFt9tJoVYjIRFBMIiUDev1I0Jq+oafKw4yK4H/fesuQDEggBmbuQ woRZvMBsbCmlmoQU5PTP/4bpM0grVpeoL/420i5DzapvPDMgjW7q1yB06gbs24uy4AOCduzPD GrliXiIQHXZdYBKEHKlkM6N/qo3czdwVWj/A06Q65CuV10I6tKUWiG0VMBx13gr5RYR80HTcN 8iDiOUNvKyWeEIvdADTT2b+jmiABefl3js48h5meRRhhNjQp5lHjEtPfkYn7i1wTziRpe3L0z +zWTsyMgK+YmwF93Lb02xgeziwARO/Za7Sn7BSF7RCSfTO8X57tcV1ZH7IYrc2RZPitlMAgcu TeiWzJPKMjwNruJWXaQUNzOCvL9jSUEPuyXpkw== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- .../vc04_services/bcm2835-camera/bcm2835-camera.c | 37 ++++++---------------- .../vc04_services/bcm2835-camera/bcm2835-camera.h | 2 +- 2 files changed, 10 insertions(+), 29 deletions(-) diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c index be936b8fe317..d8766b166675 100644 --- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c +++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c @@ -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; diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h index 404037476bc5..83920683a448 100644 --- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h +++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h @@ -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 */ -- 2.9.0