提交 8e6057b5 编写于 作者: S Sakari Ailus 提交者: Mauro Carvalho Chehab

[media] v4l: Convert drivers to use monotonic timestamps

Convert drivers using wall clock time (CLOCK_REALTIME) to timestamp from the
monotonic timer (CLOCK_MONOTONIC).
Signed-off-by: NSakari Ailus <sakari.ailus@iki.fi>
Acked-by: NHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
上级 abd23295
...@@ -105,7 +105,7 @@ void saa7146_buffer_finish(struct saa7146_dev *dev, ...@@ -105,7 +105,7 @@ void saa7146_buffer_finish(struct saa7146_dev *dev,
} }
q->curr->vb.state = state; q->curr->vb.state = state;
do_gettimeofday(&q->curr->vb.ts); v4l2_get_timestamp(&q->curr->vb.ts);
wake_up(&q->curr->vb.done); wake_up(&q->curr->vb.done);
q->curr = NULL; q->curr = NULL;
......
...@@ -3835,7 +3835,7 @@ bttv_irq_wakeup_video(struct bttv *btv, struct bttv_buffer_set *wakeup, ...@@ -3835,7 +3835,7 @@ bttv_irq_wakeup_video(struct bttv *btv, struct bttv_buffer_set *wakeup,
{ {
struct timeval ts; struct timeval ts;
do_gettimeofday(&ts); v4l2_get_timestamp(&ts);
if (wakeup->top == wakeup->bottom) { if (wakeup->top == wakeup->bottom) {
if (NULL != wakeup->top && curr->top != wakeup->top) { if (NULL != wakeup->top && curr->top != wakeup->top) {
...@@ -3878,7 +3878,7 @@ bttv_irq_wakeup_vbi(struct bttv *btv, struct bttv_buffer *wakeup, ...@@ -3878,7 +3878,7 @@ bttv_irq_wakeup_vbi(struct bttv *btv, struct bttv_buffer *wakeup,
if (NULL == wakeup) if (NULL == wakeup)
return; return;
do_gettimeofday(&ts); v4l2_get_timestamp(&ts);
wakeup->vb.ts = ts; wakeup->vb.ts = ts;
wakeup->vb.field_count = btv->field_count; wakeup->vb.field_count = btv->field_count;
wakeup->vb.state = state; wakeup->vb.state = state;
...@@ -3949,7 +3949,7 @@ bttv_irq_wakeup_top(struct bttv *btv) ...@@ -3949,7 +3949,7 @@ bttv_irq_wakeup_top(struct bttv *btv)
btv->curr.top = NULL; btv->curr.top = NULL;
bttv_risc_hook(btv, RISC_SLOT_O_FIELD, NULL, 0); bttv_risc_hook(btv, RISC_SLOT_O_FIELD, NULL, 0);
do_gettimeofday(&wakeup->vb.ts); v4l2_get_timestamp(&wakeup->vb.ts);
wakeup->vb.field_count = btv->field_count; wakeup->vb.field_count = btv->field_count;
wakeup->vb.state = VIDEOBUF_DONE; wakeup->vb.state = VIDEOBUF_DONE;
wake_up(&wakeup->vb.done); wake_up(&wakeup->vb.done);
......
...@@ -439,7 +439,7 @@ void cx23885_wakeup(struct cx23885_tsport *port, ...@@ -439,7 +439,7 @@ void cx23885_wakeup(struct cx23885_tsport *port,
if ((s16) (count - buf->count) < 0) if ((s16) (count - buf->count) < 0)
break; break;
do_gettimeofday(&buf->vb.ts); v4l2_get_timestamp(&buf->vb.ts);
dprintk(2, "[%p/%d] wakeup reg=%d buf=%d\n", buf, buf->vb.i, dprintk(2, "[%p/%d] wakeup reg=%d buf=%d\n", buf, buf->vb.i,
count, buf->count); count, buf->count);
buf->vb.state = VIDEOBUF_DONE; buf->vb.state = VIDEOBUF_DONE;
......
...@@ -300,7 +300,7 @@ void cx23885_video_wakeup(struct cx23885_dev *dev, ...@@ -300,7 +300,7 @@ void cx23885_video_wakeup(struct cx23885_dev *dev,
if ((s16) (count - buf->count) < 0) if ((s16) (count - buf->count) < 0)
break; break;
do_gettimeofday(&buf->vb.ts); v4l2_get_timestamp(&buf->vb.ts);
dprintk(2, "[%p/%d] wakeup reg=%d buf=%d\n", buf, buf->vb.i, dprintk(2, "[%p/%d] wakeup reg=%d buf=%d\n", buf, buf->vb.i,
count, buf->count); count, buf->count);
buf->vb.state = VIDEOBUF_DONE; buf->vb.state = VIDEOBUF_DONE;
......
...@@ -130,7 +130,7 @@ void cx25821_video_wakeup(struct cx25821_dev *dev, struct cx25821_dmaqueue *q, ...@@ -130,7 +130,7 @@ void cx25821_video_wakeup(struct cx25821_dev *dev, struct cx25821_dmaqueue *q,
if ((s16) (count - buf->count) < 0) if ((s16) (count - buf->count) < 0)
break; break;
do_gettimeofday(&buf->vb.ts); v4l2_get_timestamp(&buf->vb.ts);
buf->vb.state = VIDEOBUF_DONE; buf->vb.state = VIDEOBUF_DONE;
list_del(&buf->vb.queue); list_del(&buf->vb.queue);
wake_up(&buf->vb.done); wake_up(&buf->vb.done);
......
...@@ -549,7 +549,7 @@ void cx88_wakeup(struct cx88_core *core, ...@@ -549,7 +549,7 @@ void cx88_wakeup(struct cx88_core *core,
* up to 32767 buffers in flight... */ * up to 32767 buffers in flight... */
if ((s16) (count - buf->count) < 0) if ((s16) (count - buf->count) < 0)
break; break;
do_gettimeofday(&buf->vb.ts); v4l2_get_timestamp(&buf->vb.ts);
dprintk(2,"[%p/%d] wakeup reg=%d buf=%d\n",buf,buf->vb.i, dprintk(2,"[%p/%d] wakeup reg=%d buf=%d\n",buf,buf->vb.i,
count, buf->count); count, buf->count);
buf->vb.state = VIDEOBUF_DONE; buf->vb.state = VIDEOBUF_DONE;
......
...@@ -811,7 +811,7 @@ static irqreturn_t meye_irq(int irq, void *dev_id) ...@@ -811,7 +811,7 @@ static irqreturn_t meye_irq(int irq, void *dev_id)
mchip_hsize() * mchip_vsize() * 2); mchip_hsize() * mchip_vsize() * 2);
meye.grab_buffer[reqnr].size = mchip_hsize() * mchip_vsize() * 2; meye.grab_buffer[reqnr].size = mchip_hsize() * mchip_vsize() * 2;
meye.grab_buffer[reqnr].state = MEYE_BUF_DONE; meye.grab_buffer[reqnr].state = MEYE_BUF_DONE;
do_gettimeofday(&meye.grab_buffer[reqnr].timestamp); v4l2_get_timestamp(&meye.grab_buffer[reqnr].timestamp);
meye.grab_buffer[reqnr].sequence = sequence++; meye.grab_buffer[reqnr].sequence = sequence++;
kfifo_in_locked(&meye.doneq, (unsigned char *)&reqnr, kfifo_in_locked(&meye.doneq, (unsigned char *)&reqnr,
sizeof(int), &meye.doneq_lock); sizeof(int), &meye.doneq_lock);
...@@ -832,7 +832,7 @@ static irqreturn_t meye_irq(int irq, void *dev_id) ...@@ -832,7 +832,7 @@ static irqreturn_t meye_irq(int irq, void *dev_id)
size); size);
meye.grab_buffer[reqnr].size = size; meye.grab_buffer[reqnr].size = size;
meye.grab_buffer[reqnr].state = MEYE_BUF_DONE; meye.grab_buffer[reqnr].state = MEYE_BUF_DONE;
do_gettimeofday(&meye.grab_buffer[reqnr].timestamp); v4l2_get_timestamp(&meye.grab_buffer[reqnr].timestamp);
meye.grab_buffer[reqnr].sequence = sequence++; meye.grab_buffer[reqnr].sequence = sequence++;
kfifo_in_locked(&meye.doneq, (unsigned char *)&reqnr, kfifo_in_locked(&meye.doneq, (unsigned char *)&reqnr,
sizeof(int), &meye.doneq_lock); sizeof(int), &meye.doneq_lock);
......
...@@ -308,7 +308,7 @@ void saa7134_buffer_finish(struct saa7134_dev *dev, ...@@ -308,7 +308,7 @@ void saa7134_buffer_finish(struct saa7134_dev *dev,
/* finish current buffer */ /* finish current buffer */
q->curr->vb.state = state; q->curr->vb.state = state;
do_gettimeofday(&q->curr->vb.ts); v4l2_get_timestamp(&q->curr->vb.ts);
wake_up(&q->curr->vb.done); wake_up(&q->curr->vb.done);
q->curr = NULL; q->curr = NULL;
} }
......
...@@ -1088,7 +1088,7 @@ static irqreturn_t vip_irq(int irq, struct sta2x11_vip *vip) ...@@ -1088,7 +1088,7 @@ static irqreturn_t vip_irq(int irq, struct sta2x11_vip *vip)
REG_WRITE(vip, DVP_CTL, REG_READ(vip, DVP_CTL) & ~DVP_CTL_ENA); REG_WRITE(vip, DVP_CTL, REG_READ(vip, DVP_CTL) & ~DVP_CTL_ENA);
if (vip->active) { if (vip->active) {
do_gettimeofday(&vip->active->ts); v4l2_get_timestamp(&vip->active->ts);
vip->active->field_count++; vip->active->field_count++;
vip->active->state = VIDEOBUF_DONE; vip->active->state = VIDEOBUF_DONE;
wake_up(&vip->active->done); wake_up(&vip->active->done);
......
...@@ -1169,7 +1169,7 @@ zoran_reap_stat_com (struct zoran *zr) ...@@ -1169,7 +1169,7 @@ zoran_reap_stat_com (struct zoran *zr)
} }
frame = zr->jpg_pend[zr->jpg_dma_tail & BUZ_MASK_FRAME]; frame = zr->jpg_pend[zr->jpg_dma_tail & BUZ_MASK_FRAME];
buffer = &zr->jpg_buffers.buffer[frame]; buffer = &zr->jpg_buffers.buffer[frame];
do_gettimeofday(&buffer->bs.timestamp); v4l2_get_timestamp(&buffer->bs.timestamp);
if (zr->codec_mode == BUZ_MODE_MOTION_COMPRESS) { if (zr->codec_mode == BUZ_MODE_MOTION_COMPRESS) {
buffer->bs.length = (stat_com & 0x7fffff) >> 1; buffer->bs.length = (stat_com & 0x7fffff) >> 1;
...@@ -1407,7 +1407,7 @@ zoran_irq (int irq, ...@@ -1407,7 +1407,7 @@ zoran_irq (int irq,
zr->v4l_buffers.buffer[zr->v4l_grab_frame].state = BUZ_STATE_DONE; zr->v4l_buffers.buffer[zr->v4l_grab_frame].state = BUZ_STATE_DONE;
zr->v4l_buffers.buffer[zr->v4l_grab_frame].bs.seq = zr->v4l_grab_seq; zr->v4l_buffers.buffer[zr->v4l_grab_frame].bs.seq = zr->v4l_grab_seq;
do_gettimeofday(&zr->v4l_buffers.buffer[zr->v4l_grab_frame].bs.timestamp); v4l2_get_timestamp(&zr->v4l_buffers.buffer[zr->v4l_grab_frame].bs.timestamp);
zr->v4l_grab_frame = NO_GRAB_ACTIVE; zr->v4l_grab_frame = NO_GRAB_ACTIVE;
zr->v4l_pend_tail++; zr->v4l_pend_tail++;
} }
......
...@@ -484,15 +484,13 @@ static irqreturn_t bcap_isr(int irq, void *dev_id) ...@@ -484,15 +484,13 @@ static irqreturn_t bcap_isr(int irq, void *dev_id)
{ {
struct ppi_if *ppi = dev_id; struct ppi_if *ppi = dev_id;
struct bcap_device *bcap_dev = ppi->priv; struct bcap_device *bcap_dev = ppi->priv;
struct timeval timevalue;
struct vb2_buffer *vb = &bcap_dev->cur_frm->vb; struct vb2_buffer *vb = &bcap_dev->cur_frm->vb;
dma_addr_t addr; dma_addr_t addr;
spin_lock(&bcap_dev->lock); spin_lock(&bcap_dev->lock);
if (bcap_dev->cur_frm != bcap_dev->next_frm) { if (bcap_dev->cur_frm != bcap_dev->next_frm) {
do_gettimeofday(&timevalue); v4l2_get_timestamp(&vb->v4l2_buf.timestamp);
vb->v4l2_buf.timestamp = timevalue;
vb2_buffer_done(vb, VB2_BUF_STATE_DONE); vb2_buffer_done(vb, VB2_BUF_STATE_DONE);
bcap_dev->cur_frm = bcap_dev->next_frm; bcap_dev->cur_frm = bcap_dev->next_frm;
} }
......
...@@ -560,10 +560,7 @@ static void vpfe_schedule_bottom_field(struct vpfe_device *vpfe_dev) ...@@ -560,10 +560,7 @@ static void vpfe_schedule_bottom_field(struct vpfe_device *vpfe_dev)
static void vpfe_process_buffer_complete(struct vpfe_device *vpfe_dev) static void vpfe_process_buffer_complete(struct vpfe_device *vpfe_dev)
{ {
struct timeval timevalue; v4l2_get_timestamp(&vpfe_dev->cur_frm->ts);
do_gettimeofday(&timevalue);
vpfe_dev->cur_frm->ts = timevalue;
vpfe_dev->cur_frm->state = VIDEOBUF_DONE; vpfe_dev->cur_frm->state = VIDEOBUF_DONE;
vpfe_dev->cur_frm->size = vpfe_dev->fmt.fmt.pix.sizeimage; vpfe_dev->cur_frm->size = vpfe_dev->fmt.fmt.pix.sizeimage;
wake_up_interruptible(&vpfe_dev->cur_frm->done); wake_up_interruptible(&vpfe_dev->cur_frm->done);
......
...@@ -411,7 +411,7 @@ static struct vb2_ops video_qops = { ...@@ -411,7 +411,7 @@ static struct vb2_ops video_qops = {
*/ */
static void vpif_process_buffer_complete(struct common_obj *common) static void vpif_process_buffer_complete(struct common_obj *common)
{ {
do_gettimeofday(&common->cur_frm->vb.v4l2_buf.timestamp); v4l2_get_timestamp(&common->cur_frm->vb.v4l2_buf.timestamp);
vb2_buffer_done(&common->cur_frm->vb, vb2_buffer_done(&common->cur_frm->vb,
VB2_BUF_STATE_DONE); VB2_BUF_STATE_DONE);
/* Make curFrm pointing to nextFrm */ /* Make curFrm pointing to nextFrm */
......
...@@ -402,7 +402,7 @@ static void process_interlaced_mode(int fid, struct common_obj *common) ...@@ -402,7 +402,7 @@ static void process_interlaced_mode(int fid, struct common_obj *common)
/* one frame is displayed If next frame is /* one frame is displayed If next frame is
* available, release cur_frm and move on */ * available, release cur_frm and move on */
/* Copy frame display time */ /* Copy frame display time */
do_gettimeofday(&common->cur_frm->vb.v4l2_buf.timestamp); v4l2_get_timestamp(&common->cur_frm->vb.v4l2_buf.timestamp);
/* Change status of the cur_frm */ /* Change status of the cur_frm */
vb2_buffer_done(&common->cur_frm->vb, vb2_buffer_done(&common->cur_frm->vb,
VB2_BUF_STATE_DONE); VB2_BUF_STATE_DONE);
...@@ -462,8 +462,8 @@ static irqreturn_t vpif_channel_isr(int irq, void *dev_id) ...@@ -462,8 +462,8 @@ static irqreturn_t vpif_channel_isr(int irq, void *dev_id)
if (!channel_first_int[i][channel_id]) { if (!channel_first_int[i][channel_id]) {
/* Mark status of the cur_frm to /* Mark status of the cur_frm to
* done and unlock semaphore on it */ * done and unlock semaphore on it */
do_gettimeofday(&common->cur_frm->vb. v4l2_get_timestamp(&common->cur_frm->vb.
v4l2_buf.timestamp); v4l2_buf.timestamp);
vb2_buffer_done(&common->cur_frm->vb, vb2_buffer_done(&common->cur_frm->vb,
VB2_BUF_STATE_DONE); VB2_BUF_STATE_DONE);
/* Make cur_frm pointing to next_frm */ /* Make cur_frm pointing to next_frm */
......
...@@ -1181,7 +1181,7 @@ static void viu_capture_intr(struct viu_dev *dev, u32 status) ...@@ -1181,7 +1181,7 @@ static void viu_capture_intr(struct viu_dev *dev, u32 status)
if (waitqueue_active(&buf->vb.done)) { if (waitqueue_active(&buf->vb.done)) {
list_del(&buf->vb.queue); list_del(&buf->vb.queue);
do_gettimeofday(&buf->vb.ts); v4l2_get_timestamp(&buf->vb.ts);
buf->vb.state = VIDEOBUF_DONE; buf->vb.state = VIDEOBUF_DONE;
buf->vb.field_count++; buf->vb.field_count++;
wake_up(&buf->vb.done); wake_up(&buf->vb.done);
......
...@@ -597,7 +597,7 @@ static void omap_vout_isr(void *arg, unsigned int irqstatus) ...@@ -597,7 +597,7 @@ static void omap_vout_isr(void *arg, unsigned int irqstatus)
return; return;
spin_lock(&vout->vbq_lock); spin_lock(&vout->vbq_lock);
do_gettimeofday(&timevalue); v4l2_get_timestamp(&timevalue);
switch (cur_display->type) { switch (cur_display->type) {
case OMAP_DISPLAY_TYPE_DSI: case OMAP_DISPLAY_TYPE_DSI:
......
...@@ -402,7 +402,7 @@ static void omap24xxcam_vbq_complete(struct omap24xxcam_sgdma *sgdma, ...@@ -402,7 +402,7 @@ static void omap24xxcam_vbq_complete(struct omap24xxcam_sgdma *sgdma,
omap24xxcam_core_disable(cam); omap24xxcam_core_disable(cam);
spin_unlock_irqrestore(&cam->core_enable_disable_lock, flags); spin_unlock_irqrestore(&cam->core_enable_disable_lock, flags);
do_gettimeofday(&vb->ts); v4l2_get_timestamp(&vb->ts);
vb->field_count = atomic_add_return(2, &fh->field_count); vb->field_count = atomic_add_return(2, &fh->field_count);
if (csr & csr_error) { if (csr & csr_error) {
vb->state = VIDEOBUF_ERROR; vb->state = VIDEOBUF_ERROR;
......
...@@ -1092,7 +1092,7 @@ static irqreturn_t sh_vou_isr(int irq, void *dev_id) ...@@ -1092,7 +1092,7 @@ static irqreturn_t sh_vou_isr(int irq, void *dev_id)
list_del(&vb->queue); list_del(&vb->queue);
vb->state = VIDEOBUF_DONE; vb->state = VIDEOBUF_DONE;
do_gettimeofday(&vb->ts); v4l2_get_timestamp(&vb->ts);
vb->field_count++; vb->field_count++;
wake_up(&vb->done); wake_up(&vb->done);
......
...@@ -166,7 +166,7 @@ static irqreturn_t atmel_isi_handle_streaming(struct atmel_isi *isi) ...@@ -166,7 +166,7 @@ static irqreturn_t atmel_isi_handle_streaming(struct atmel_isi *isi)
struct frame_buffer *buf = isi->active; struct frame_buffer *buf = isi->active;
list_del_init(&buf->list); list_del_init(&buf->list);
do_gettimeofday(&vb->v4l2_buf.timestamp); v4l2_get_timestamp(&vb->v4l2_buf.timestamp);
vb->v4l2_buf.sequence = isi->sequence++; vb->v4l2_buf.sequence = isi->sequence++;
vb2_buffer_done(vb, VB2_BUF_STATE_DONE); vb2_buffer_done(vb, VB2_BUF_STATE_DONE);
} }
......
...@@ -307,7 +307,7 @@ static void mx1_camera_wakeup(struct mx1_camera_dev *pcdev, ...@@ -307,7 +307,7 @@ static void mx1_camera_wakeup(struct mx1_camera_dev *pcdev,
/* _init is used to debug races, see comment in mx1_camera_reqbufs() */ /* _init is used to debug races, see comment in mx1_camera_reqbufs() */
list_del_init(&vb->queue); list_del_init(&vb->queue);
vb->state = VIDEOBUF_DONE; vb->state = VIDEOBUF_DONE;
do_gettimeofday(&vb->ts); v4l2_get_timestamp(&vb->ts);
vb->field_count++; vb->field_count++;
wake_up(&vb->done); wake_up(&vb->done);
......
...@@ -516,7 +516,7 @@ static void mx25_camera_frame_done(struct mx2_camera_dev *pcdev, int fb, ...@@ -516,7 +516,7 @@ static void mx25_camera_frame_done(struct mx2_camera_dev *pcdev, int fb,
dev_dbg(pcdev->dev, "%s (vb=0x%p) 0x%p %lu\n", __func__, dev_dbg(pcdev->dev, "%s (vb=0x%p) 0x%p %lu\n", __func__,
vb, vb2_plane_vaddr(vb, 0), vb2_get_plane_payload(vb, 0)); vb, vb2_plane_vaddr(vb, 0), vb2_get_plane_payload(vb, 0));
do_gettimeofday(&vb->v4l2_buf.timestamp); v4l2_get_timestamp(&vb->v4l2_buf.timestamp);
vb->v4l2_buf.sequence++; vb->v4l2_buf.sequence++;
vb2_buffer_done(vb, VB2_BUF_STATE_DONE); vb2_buffer_done(vb, VB2_BUF_STATE_DONE);
...@@ -1561,7 +1561,7 @@ static void mx27_camera_frame_done_emma(struct mx2_camera_dev *pcdev, ...@@ -1561,7 +1561,7 @@ static void mx27_camera_frame_done_emma(struct mx2_camera_dev *pcdev,
vb2_get_plane_payload(vb, 0)); vb2_get_plane_payload(vb, 0));
list_del_init(&buf->internal.queue); list_del_init(&buf->internal.queue);
do_gettimeofday(&vb->v4l2_buf.timestamp); v4l2_get_timestamp(&vb->v4l2_buf.timestamp);
vb->v4l2_buf.sequence = pcdev->frame_count; vb->v4l2_buf.sequence = pcdev->frame_count;
if (err) if (err)
vb2_buffer_done(vb, VB2_BUF_STATE_ERROR); vb2_buffer_done(vb, VB2_BUF_STATE_ERROR);
......
...@@ -156,7 +156,7 @@ static void mx3_cam_dma_done(void *arg) ...@@ -156,7 +156,7 @@ static void mx3_cam_dma_done(void *arg)
struct mx3_camera_buffer *buf = to_mx3_vb(vb); struct mx3_camera_buffer *buf = to_mx3_vb(vb);
list_del_init(&buf->queue); list_del_init(&buf->queue);
do_gettimeofday(&vb->v4l2_buf.timestamp); v4l2_get_timestamp(&vb->v4l2_buf.timestamp);
vb->v4l2_buf.field = mx3_cam->field; vb->v4l2_buf.field = mx3_cam->field;
vb->v4l2_buf.sequence = mx3_cam->sequence++; vb->v4l2_buf.sequence = mx3_cam->sequence++;
vb2_buffer_done(vb, VB2_BUF_STATE_DONE); vb2_buffer_done(vb, VB2_BUF_STATE_DONE);
......
...@@ -591,7 +591,7 @@ static void videobuf_done(struct omap1_cam_dev *pcdev, ...@@ -591,7 +591,7 @@ static void videobuf_done(struct omap1_cam_dev *pcdev,
suspend_capture(pcdev); suspend_capture(pcdev);
} }
vb->state = result; vb->state = result;
do_gettimeofday(&vb->ts); v4l2_get_timestamp(&vb->ts);
if (result != VIDEOBUF_ERROR) if (result != VIDEOBUF_ERROR)
vb->field_count++; vb->field_count++;
wake_up(&vb->done); wake_up(&vb->done);
......
...@@ -681,7 +681,7 @@ static void pxa_camera_wakeup(struct pxa_camera_dev *pcdev, ...@@ -681,7 +681,7 @@ static void pxa_camera_wakeup(struct pxa_camera_dev *pcdev,
/* _init is used to debug races, see comment in pxa_camera_reqbufs() */ /* _init is used to debug races, see comment in pxa_camera_reqbufs() */
list_del_init(&vb->queue); list_del_init(&vb->queue);
vb->state = VIDEOBUF_DONE; vb->state = VIDEOBUF_DONE;
do_gettimeofday(&vb->ts); v4l2_get_timestamp(&vb->ts);
vb->field_count++; vb->field_count++;
wake_up(&vb->done); wake_up(&vb->done);
dev_dbg(pcdev->soc_host.v4l2_dev.dev, "%s dequeud buffer (vb=0x%p)\n", dev_dbg(pcdev->soc_host.v4l2_dev.dev, "%s dequeud buffer (vb=0x%p)\n",
......
...@@ -516,7 +516,7 @@ static irqreturn_t sh_mobile_ceu_irq(int irq, void *data) ...@@ -516,7 +516,7 @@ static irqreturn_t sh_mobile_ceu_irq(int irq, void *data)
pcdev->active = NULL; pcdev->active = NULL;
ret = sh_mobile_ceu_capture(pcdev); ret = sh_mobile_ceu_capture(pcdev);
do_gettimeofday(&vb->v4l2_buf.timestamp); v4l2_get_timestamp(&vb->v4l2_buf.timestamp);
if (!ret) { if (!ret) {
vb->v4l2_buf.field = pcdev->field; vb->v4l2_buf.field = pcdev->field;
vb->v4l2_buf.sequence = pcdev->sequence++; vb->v4l2_buf.sequence = pcdev->sequence++;
......
...@@ -130,7 +130,7 @@ static void timblogiw_dma_cb(void *data) ...@@ -130,7 +130,7 @@ static void timblogiw_dma_cb(void *data)
if (vb->state != VIDEOBUF_ERROR) { if (vb->state != VIDEOBUF_ERROR) {
list_del(&vb->queue); list_del(&vb->queue);
do_gettimeofday(&vb->ts); v4l2_get_timestamp(&vb->ts);
vb->field_count = fh->frame_count * 2; vb->field_count = fh->frame_count * 2;
vb->state = VIDEOBUF_DONE; vb->state = VIDEOBUF_DONE;
......
...@@ -2474,8 +2474,8 @@ static irqreturn_t vino_interrupt(int irq, void *dev_id) ...@@ -2474,8 +2474,8 @@ static irqreturn_t vino_interrupt(int irq, void *dev_id)
if ((!handled_a) && (done_a || skip_a)) { if ((!handled_a) && (done_a || skip_a)) {
if (!skip_a) { if (!skip_a) {
do_gettimeofday(&vino_drvdata-> v4l2_get_timestamp(
a.int_data.timestamp); &vino_drvdata->a.int_data.timestamp);
vino_drvdata->a.int_data.frame_counter = fc_a; vino_drvdata->a.int_data.frame_counter = fc_a;
} }
vino_drvdata->a.int_data.skip = skip_a; vino_drvdata->a.int_data.skip = skip_a;
...@@ -2489,8 +2489,8 @@ static irqreturn_t vino_interrupt(int irq, void *dev_id) ...@@ -2489,8 +2489,8 @@ static irqreturn_t vino_interrupt(int irq, void *dev_id)
if ((!handled_b) && (done_b || skip_b)) { if ((!handled_b) && (done_b || skip_b)) {
if (!skip_b) { if (!skip_b) {
do_gettimeofday(&vino_drvdata-> v4l2_get_timestamp(
b.int_data.timestamp); &vino_drvdata->b.int_data.timestamp);
vino_drvdata->b.int_data.frame_counter = fc_b; vino_drvdata->b.int_data.frame_counter = fc_b;
} }
vino_drvdata->b.int_data.skip = skip_b; vino_drvdata->b.int_data.skip = skip_b;
......
...@@ -554,7 +554,6 @@ static void vivi_fillbuff(struct vivi_dev *dev, struct vivi_buffer *buf) ...@@ -554,7 +554,6 @@ static void vivi_fillbuff(struct vivi_dev *dev, struct vivi_buffer *buf)
{ {
int wmax = dev->width; int wmax = dev->width;
int hmax = dev->height; int hmax = dev->height;
struct timeval ts;
void *vbuf = vb2_plane_vaddr(&buf->vb, 0); void *vbuf = vb2_plane_vaddr(&buf->vb, 0);
unsigned ms; unsigned ms;
char str[100]; char str[100];
...@@ -622,8 +621,7 @@ static void vivi_fillbuff(struct vivi_dev *dev, struct vivi_buffer *buf) ...@@ -622,8 +621,7 @@ static void vivi_fillbuff(struct vivi_dev *dev, struct vivi_buffer *buf)
buf->vb.v4l2_buf.field = V4L2_FIELD_INTERLACED; buf->vb.v4l2_buf.field = V4L2_FIELD_INTERLACED;
dev->field_count++; dev->field_count++;
buf->vb.v4l2_buf.sequence = dev->field_count >> 1; buf->vb.v4l2_buf.sequence = dev->field_count >> 1;
do_gettimeofday(&ts); v4l2_get_timestamp(&buf->vb.v4l2_buf.timestamp);
buf->vb.v4l2_buf.timestamp = ts;
} }
static void vivi_thread_tick(struct vivi_dev *dev) static void vivi_thread_tick(struct vivi_dev *dev)
...@@ -645,7 +643,7 @@ static void vivi_thread_tick(struct vivi_dev *dev) ...@@ -645,7 +643,7 @@ static void vivi_thread_tick(struct vivi_dev *dev)
list_del(&buf->list); list_del(&buf->list);
spin_unlock_irqrestore(&dev->slock, flags); spin_unlock_irqrestore(&dev->slock, flags);
do_gettimeofday(&buf->vb.v4l2_buf.timestamp); v4l2_get_timestamp(&buf->vb.v4l2_buf.timestamp);
/* Fill buffer */ /* Fill buffer */
vivi_fillbuff(dev, buf); vivi_fillbuff(dev, buf);
......
...@@ -304,7 +304,7 @@ static inline void buffer_filled(struct au0828_dev *dev, ...@@ -304,7 +304,7 @@ static inline void buffer_filled(struct au0828_dev *dev,
buf->vb.state = VIDEOBUF_DONE; buf->vb.state = VIDEOBUF_DONE;
buf->vb.field_count++; buf->vb.field_count++;
do_gettimeofday(&buf->vb.ts); v4l2_get_timestamp(&buf->vb.ts);
dev->isoc_ctl.buf = NULL; dev->isoc_ctl.buf = NULL;
...@@ -321,7 +321,7 @@ static inline void vbi_buffer_filled(struct au0828_dev *dev, ...@@ -321,7 +321,7 @@ static inline void vbi_buffer_filled(struct au0828_dev *dev,
buf->vb.state = VIDEOBUF_DONE; buf->vb.state = VIDEOBUF_DONE;
buf->vb.field_count++; buf->vb.field_count++;
do_gettimeofday(&buf->vb.ts); v4l2_get_timestamp(&buf->vb.ts);
dev->isoc_ctl.vbi_buf = NULL; dev->isoc_ctl.vbi_buf = NULL;
......
...@@ -328,7 +328,7 @@ static void cpia2_usb_complete(struct urb *urb) ...@@ -328,7 +328,7 @@ static void cpia2_usb_complete(struct urb *urb)
continue; continue;
} }
DBG("Start of frame pattern found\n"); DBG("Start of frame pattern found\n");
do_gettimeofday(&cam->workbuff->timestamp); v4l2_get_timestamp(&cam->workbuff->timestamp);
cam->workbuff->seq = cam->frame_count++; cam->workbuff->seq = cam->frame_count++;
cam->workbuff->data[0] = 0xFF; cam->workbuff->data[0] = 0xFF;
cam->workbuff->data[1] = 0xD8; cam->workbuff->data[1] = 0xD8;
......
...@@ -1291,7 +1291,7 @@ static void buffer_copy(struct cx231xx *dev, char *data, int len, struct urb *ur ...@@ -1291,7 +1291,7 @@ static void buffer_copy(struct cx231xx *dev, char *data, int len, struct urb *ur
buf->vb.state = VIDEOBUF_DONE; buf->vb.state = VIDEOBUF_DONE;
buf->vb.field_count++; buf->vb.field_count++;
do_gettimeofday(&buf->vb.ts); v4l2_get_timestamp(&buf->vb.ts);
list_del(&buf->vb.queue); list_del(&buf->vb.queue);
wake_up(&buf->vb.done); wake_up(&buf->vb.done);
dma_q->mpeg_buffer_completed = 0; dma_q->mpeg_buffer_completed = 0;
...@@ -1327,7 +1327,7 @@ static void buffer_filled(char *data, int len, struct urb *urb, ...@@ -1327,7 +1327,7 @@ static void buffer_filled(char *data, int len, struct urb *urb,
memcpy(vbuf, data, len); memcpy(vbuf, data, len);
buf->vb.state = VIDEOBUF_DONE; buf->vb.state = VIDEOBUF_DONE;
buf->vb.field_count++; buf->vb.field_count++;
do_gettimeofday(&buf->vb.ts); v4l2_get_timestamp(&buf->vb.ts);
list_del(&buf->vb.queue); list_del(&buf->vb.queue);
wake_up(&buf->vb.done); wake_up(&buf->vb.done);
......
...@@ -530,7 +530,7 @@ static inline void vbi_buffer_filled(struct cx231xx *dev, ...@@ -530,7 +530,7 @@ static inline void vbi_buffer_filled(struct cx231xx *dev,
buf->vb.state = VIDEOBUF_DONE; buf->vb.state = VIDEOBUF_DONE;
buf->vb.field_count++; buf->vb.field_count++;
do_gettimeofday(&buf->vb.ts); v4l2_get_timestamp(&buf->vb.ts);
dev->vbi_mode.bulk_ctl.buf = NULL; dev->vbi_mode.bulk_ctl.buf = NULL;
......
...@@ -235,7 +235,7 @@ static inline void buffer_filled(struct cx231xx *dev, ...@@ -235,7 +235,7 @@ static inline void buffer_filled(struct cx231xx *dev,
cx231xx_isocdbg("[%p/%d] wakeup\n", buf, buf->vb.i); cx231xx_isocdbg("[%p/%d] wakeup\n", buf, buf->vb.i);
buf->vb.state = VIDEOBUF_DONE; buf->vb.state = VIDEOBUF_DONE;
buf->vb.field_count++; buf->vb.field_count++;
do_gettimeofday(&buf->vb.ts); v4l2_get_timestamp(&buf->vb.ts);
if (dev->USE_ISO) if (dev->USE_ISO)
dev->video_mode.isoc_ctl.buf = NULL; dev->video_mode.isoc_ctl.buf = NULL;
......
...@@ -163,7 +163,7 @@ static inline void buffer_filled(struct em28xx *dev, ...@@ -163,7 +163,7 @@ static inline void buffer_filled(struct em28xx *dev,
em28xx_isocdbg("[%p/%d] wakeup\n", buf, buf->vb.i); em28xx_isocdbg("[%p/%d] wakeup\n", buf, buf->vb.i);
buf->vb.state = VIDEOBUF_DONE; buf->vb.state = VIDEOBUF_DONE;
buf->vb.field_count++; buf->vb.field_count++;
do_gettimeofday(&buf->vb.ts); v4l2_get_timestamp(&buf->vb.ts);
dev->isoc_ctl.vid_buf = NULL; dev->isoc_ctl.vid_buf = NULL;
...@@ -180,7 +180,7 @@ static inline void vbi_buffer_filled(struct em28xx *dev, ...@@ -180,7 +180,7 @@ static inline void vbi_buffer_filled(struct em28xx *dev,
buf->vb.state = VIDEOBUF_DONE; buf->vb.state = VIDEOBUF_DONE;
buf->vb.field_count++; buf->vb.field_count++;
do_gettimeofday(&buf->vb.ts); v4l2_get_timestamp(&buf->vb.ts);
dev->isoc_ctl.vbi_buf = NULL; dev->isoc_ctl.vbi_buf = NULL;
......
...@@ -316,7 +316,8 @@ static void pwc_isoc_handler(struct urb *urb) ...@@ -316,7 +316,8 @@ static void pwc_isoc_handler(struct urb *urb)
struct pwc_frame_buf *fbuf = pdev->fill_buf; struct pwc_frame_buf *fbuf = pdev->fill_buf;
if (pdev->vsync == 1) { if (pdev->vsync == 1) {
do_gettimeofday(&fbuf->vb.v4l2_buf.timestamp); v4l2_get_timestamp(
&fbuf->vb.v4l2_buf.timestamp);
pdev->vsync = 2; pdev->vsync = 2;
} }
......
...@@ -593,7 +593,7 @@ static int s2255_got_frame(struct s2255_channel *channel, int jpgsize) ...@@ -593,7 +593,7 @@ static int s2255_got_frame(struct s2255_channel *channel, int jpgsize)
buf = list_entry(dma_q->active.next, buf = list_entry(dma_q->active.next,
struct s2255_buffer, vb.queue); struct s2255_buffer, vb.queue);
list_del(&buf->vb.queue); list_del(&buf->vb.queue);
do_gettimeofday(&buf->vb.ts); v4l2_get_timestamp(&buf->vb.ts);
s2255_fillbuff(channel, buf, jpgsize); s2255_fillbuff(channel, buf, jpgsize);
wake_up(&buf->vb.done); wake_up(&buf->vb.done);
dprintk(2, "%s: [buf/i] [%p/%d]\n", __func__, buf, buf->vb.i); dprintk(2, "%s: [buf/i] [%p/%d]\n", __func__, buf, buf->vb.i);
...@@ -629,7 +629,6 @@ static void s2255_fillbuff(struct s2255_channel *channel, ...@@ -629,7 +629,6 @@ static void s2255_fillbuff(struct s2255_channel *channel,
struct s2255_buffer *buf, int jpgsize) struct s2255_buffer *buf, int jpgsize)
{ {
int pos = 0; int pos = 0;
struct timeval ts;
const char *tmpbuf; const char *tmpbuf;
char *vbuf = videobuf_to_vmalloc(&buf->vb); char *vbuf = videobuf_to_vmalloc(&buf->vb);
unsigned long last_frame; unsigned long last_frame;
...@@ -674,8 +673,7 @@ static void s2255_fillbuff(struct s2255_channel *channel, ...@@ -674,8 +673,7 @@ static void s2255_fillbuff(struct s2255_channel *channel,
/* tell v4l buffer was filled */ /* tell v4l buffer was filled */
buf->vb.field_count = channel->frame_count * 2; buf->vb.field_count = channel->frame_count * 2;
do_gettimeofday(&ts); v4l2_get_timestamp(&buf->vb.ts);
buf->vb.ts = ts;
buf->vb.state = VIDEOBUF_DONE; buf->vb.state = VIDEOBUF_DONE;
} }
......
...@@ -773,7 +773,8 @@ static void sn9c102_urb_complete(struct urb *urb) ...@@ -773,7 +773,8 @@ static void sn9c102_urb_complete(struct urb *urb)
img); img);
if ((*f)->buf.bytesused == 0) if ((*f)->buf.bytesused == 0)
do_gettimeofday(&(*f)->buf.timestamp); v4l2_get_timestamp(
&(*f)->buf.timestamp);
(*f)->buf.bytesused += img; (*f)->buf.bytesused += img;
......
...@@ -101,7 +101,7 @@ void stk1160_buffer_done(struct stk1160 *dev) ...@@ -101,7 +101,7 @@ void stk1160_buffer_done(struct stk1160 *dev)
buf->vb.v4l2_buf.sequence = dev->field_count >> 1; buf->vb.v4l2_buf.sequence = dev->field_count >> 1;
buf->vb.v4l2_buf.field = V4L2_FIELD_INTERLACED; buf->vb.v4l2_buf.field = V4L2_FIELD_INTERLACED;
buf->vb.v4l2_buf.bytesused = buf->bytesused; buf->vb.v4l2_buf.bytesused = buf->bytesused;
do_gettimeofday(&buf->vb.v4l2_buf.timestamp); v4l2_get_timestamp(&buf->vb.v4l2_buf.timestamp);
vb2_set_plane_payload(&buf->vb, 0, buf->bytesused); vb2_set_plane_payload(&buf->vb, 0, buf->bytesused);
vb2_buffer_done(&buf->vb, VB2_BUF_STATE_DONE); vb2_buffer_done(&buf->vb, VB2_BUF_STATE_DONE);
......
...@@ -1113,7 +1113,7 @@ static int stk_vidioc_dqbuf(struct file *filp, ...@@ -1113,7 +1113,7 @@ static int stk_vidioc_dqbuf(struct file *filp,
sbuf->v4lbuf.flags &= ~V4L2_BUF_FLAG_QUEUED; sbuf->v4lbuf.flags &= ~V4L2_BUF_FLAG_QUEUED;
sbuf->v4lbuf.flags |= V4L2_BUF_FLAG_DONE; sbuf->v4lbuf.flags |= V4L2_BUF_FLAG_DONE;
sbuf->v4lbuf.sequence = ++dev->sequence; sbuf->v4lbuf.sequence = ++dev->sequence;
do_gettimeofday(&sbuf->v4lbuf.timestamp); v4l2_get_timestamp(&sbuf->v4lbuf.timestamp);
*buf = sbuf->v4lbuf; *buf = sbuf->v4lbuf;
return 0; return 0;
......
...@@ -212,7 +212,7 @@ static void submit_frame(struct front_face *front) ...@@ -212,7 +212,7 @@ static void submit_frame(struct front_face *front)
front->curr_frame = NULL; front->curr_frame = NULL;
vb->state = VIDEOBUF_DONE; vb->state = VIDEOBUF_DONE;
vb->field_count++; vb->field_count++;
do_gettimeofday(&vb->ts); v4l2_get_timestamp(&vb->ts);
wake_up(&vb->done); wake_up(&vb->done);
} }
......
...@@ -194,7 +194,7 @@ static inline void buffer_filled(struct tm6000_core *dev, ...@@ -194,7 +194,7 @@ static inline void buffer_filled(struct tm6000_core *dev,
dprintk(dev, V4L2_DEBUG_ISOC, "[%p/%d] wakeup\n", buf, buf->vb.i); dprintk(dev, V4L2_DEBUG_ISOC, "[%p/%d] wakeup\n", buf, buf->vb.i);
buf->vb.state = VIDEOBUF_DONE; buf->vb.state = VIDEOBUF_DONE;
buf->vb.field_count++; buf->vb.field_count++;
do_gettimeofday(&buf->vb.ts); v4l2_get_timestamp(&buf->vb.ts);
list_del(&buf->vb.queue); list_del(&buf->vb.queue);
wake_up(&buf->vb.done); wake_up(&buf->vb.done);
......
...@@ -1169,7 +1169,7 @@ static void usbvision_parse_data(struct usb_usbvision *usbvision) ...@@ -1169,7 +1169,7 @@ static void usbvision_parse_data(struct usb_usbvision *usbvision)
if (newstate == parse_state_next_frame) { if (newstate == parse_state_next_frame) {
frame->grabstate = frame_state_done; frame->grabstate = frame_state_done;
do_gettimeofday(&(frame->timestamp)); v4l2_get_timestamp(&(frame->timestamp));
frame->sequence = usbvision->frame_num; frame->sequence = usbvision->frame_num;
spin_lock_irqsave(&usbvision->queue_lock, lock_flags); spin_lock_irqsave(&usbvision->queue_lock, lock_flags);
......
...@@ -501,7 +501,6 @@ static void zr364xx_fillbuff(struct zr364xx_camera *cam, ...@@ -501,7 +501,6 @@ static void zr364xx_fillbuff(struct zr364xx_camera *cam,
int jpgsize) int jpgsize)
{ {
int pos = 0; int pos = 0;
struct timeval ts;
const char *tmpbuf; const char *tmpbuf;
char *vbuf = videobuf_to_vmalloc(&buf->vb); char *vbuf = videobuf_to_vmalloc(&buf->vb);
unsigned long last_frame; unsigned long last_frame;
...@@ -530,8 +529,7 @@ static void zr364xx_fillbuff(struct zr364xx_camera *cam, ...@@ -530,8 +529,7 @@ static void zr364xx_fillbuff(struct zr364xx_camera *cam,
/* tell v4l buffer was filled */ /* tell v4l buffer was filled */
buf->vb.field_count = cam->frame_count * 2; buf->vb.field_count = cam->frame_count * 2;
do_gettimeofday(&ts); v4l2_get_timestamp(&buf->vb.ts);
buf->vb.ts = ts;
buf->vb.state = VIDEOBUF_DONE; buf->vb.state = VIDEOBUF_DONE;
} }
...@@ -559,7 +557,7 @@ static int zr364xx_got_frame(struct zr364xx_camera *cam, int jpgsize) ...@@ -559,7 +557,7 @@ static int zr364xx_got_frame(struct zr364xx_camera *cam, int jpgsize)
goto unlock; goto unlock;
} }
list_del(&buf->vb.queue); list_del(&buf->vb.queue);
do_gettimeofday(&buf->vb.ts); v4l2_get_timestamp(&buf->vb.ts);
DBG("[%p/%d] wakeup\n", buf, buf->vb.i); DBG("[%p/%d] wakeup\n", buf, buf->vb.i);
zr364xx_fillbuff(cam, buf, jpgsize); zr364xx_fillbuff(cam, buf, jpgsize);
wake_up(&buf->vb.done); wake_up(&buf->vb.done);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册