staging: bcm2835-camera use ktime_t for timestamps
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>
This commit is contained in:
parent
f15e3ad3ef
commit
6cf83f2a9e
@ -343,37 +343,18 @@ static void buffer_cb(struct vchiq_mmal_instance *instance,
|
|||||||
if (dev->capture.frame_count) {
|
if (dev->capture.frame_count) {
|
||||||
if (dev->capture.vc_start_timestamp != -1 &&
|
if (dev->capture.vc_start_timestamp != -1 &&
|
||||||
pts != 0) {
|
pts != 0) {
|
||||||
struct timeval timestamp;
|
ktime_t timestamp;
|
||||||
s64 runtime_us = pts -
|
s64 runtime_us = pts -
|
||||||
dev->capture.vc_start_timestamp;
|
dev->capture.vc_start_timestamp;
|
||||||
u32 div = 0;
|
timestamp = ktime_add_us(dev->capture.kernel_start_ts,
|
||||||
u32 rem = 0;
|
runtime_us);
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
|
v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
|
||||||
"Convert start time %d.%06d and %llu "
|
"Convert start time %llu and %llu "
|
||||||
"with offset %llu to %d.%06d\n",
|
"with offset %llu to %llu\n",
|
||||||
(int)dev->capture.kernel_start_ts.
|
ktime_to_ns(dev->capture.kernel_start_ts),
|
||||||
tv_sec,
|
|
||||||
(int)dev->capture.kernel_start_ts.
|
|
||||||
tv_usec,
|
|
||||||
dev->capture.vc_start_timestamp, pts,
|
dev->capture.vc_start_timestamp, pts,
|
||||||
(int)timestamp.tv_sec,
|
ktime_to_ns(timestamp));
|
||||||
(int)timestamp.tv_usec);
|
buf->vb.vb2_buf.timestamp = ktime_to_ns(timestamp);
|
||||||
buf->vb.vb2_buf.timestamp = timestamp.tv_sec * 1000000000ULL +
|
|
||||||
timestamp.tv_usec * 1000ULL;
|
|
||||||
} else {
|
} else {
|
||||||
buf->vb.vb2_buf.timestamp = ktime_get_ns();
|
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",
|
"Start time %lld size %d\n",
|
||||||
dev->capture.vc_start_timestamp, parameter_size);
|
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 */
|
/* enable the camera port */
|
||||||
dev->capture.port->cb_ctx = dev;
|
dev->capture.port->cb_ctx = dev;
|
||||||
|
@ -92,7 +92,7 @@ struct bm2835_mmal_dev {
|
|||||||
/* VC start timestamp for streaming */
|
/* VC start timestamp for streaming */
|
||||||
s64 vc_start_timestamp;
|
s64 vc_start_timestamp;
|
||||||
/* Kernel start timestamp for streaming */
|
/* 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 */
|
struct vchiq_mmal_port *port; /* port being used for capture */
|
||||||
/* camera port being used for capture */
|
/* camera port being used for capture */
|
||||||
|
Loading…
Reference in New Issue
Block a user