You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
[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: Sakari Ailus <sakari.ailus@iki.fi> Acked-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
abd2329564
commit
8e6057b510
@@ -105,7 +105,7 @@ void saa7146_buffer_finish(struct saa7146_dev *dev,
|
||||
}
|
||||
|
||||
q->curr->vb.state = state;
|
||||
do_gettimeofday(&q->curr->vb.ts);
|
||||
v4l2_get_timestamp(&q->curr->vb.ts);
|
||||
wake_up(&q->curr->vb.done);
|
||||
|
||||
q->curr = NULL;
|
||||
|
||||
@@ -3835,7 +3835,7 @@ bttv_irq_wakeup_video(struct bttv *btv, struct bttv_buffer_set *wakeup,
|
||||
{
|
||||
struct timeval ts;
|
||||
|
||||
do_gettimeofday(&ts);
|
||||
v4l2_get_timestamp(&ts);
|
||||
|
||||
if (wakeup->top == wakeup->bottom) {
|
||||
if (NULL != wakeup->top && curr->top != wakeup->top) {
|
||||
@@ -3878,7 +3878,7 @@ bttv_irq_wakeup_vbi(struct bttv *btv, struct bttv_buffer *wakeup,
|
||||
if (NULL == wakeup)
|
||||
return;
|
||||
|
||||
do_gettimeofday(&ts);
|
||||
v4l2_get_timestamp(&ts);
|
||||
wakeup->vb.ts = ts;
|
||||
wakeup->vb.field_count = btv->field_count;
|
||||
wakeup->vb.state = state;
|
||||
@@ -3949,7 +3949,7 @@ bttv_irq_wakeup_top(struct bttv *btv)
|
||||
btv->curr.top = NULL;
|
||||
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.state = VIDEOBUF_DONE;
|
||||
wake_up(&wakeup->vb.done);
|
||||
|
||||
@@ -439,7 +439,7 @@ void cx23885_wakeup(struct cx23885_tsport *port,
|
||||
if ((s16) (count - buf->count) < 0)
|
||||
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,
|
||||
count, buf->count);
|
||||
buf->vb.state = VIDEOBUF_DONE;
|
||||
|
||||
@@ -300,7 +300,7 @@ void cx23885_video_wakeup(struct cx23885_dev *dev,
|
||||
if ((s16) (count - buf->count) < 0)
|
||||
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,
|
||||
count, buf->count);
|
||||
buf->vb.state = VIDEOBUF_DONE;
|
||||
|
||||
@@ -130,7 +130,7 @@ void cx25821_video_wakeup(struct cx25821_dev *dev, struct cx25821_dmaqueue *q,
|
||||
if ((s16) (count - buf->count) < 0)
|
||||
break;
|
||||
|
||||
do_gettimeofday(&buf->vb.ts);
|
||||
v4l2_get_timestamp(&buf->vb.ts);
|
||||
buf->vb.state = VIDEOBUF_DONE;
|
||||
list_del(&buf->vb.queue);
|
||||
wake_up(&buf->vb.done);
|
||||
|
||||
@@ -549,7 +549,7 @@ void cx88_wakeup(struct cx88_core *core,
|
||||
* up to 32767 buffers in flight... */
|
||||
if ((s16) (count - buf->count) < 0)
|
||||
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,
|
||||
count, buf->count);
|
||||
buf->vb.state = VIDEOBUF_DONE;
|
||||
|
||||
@@ -811,7 +811,7 @@ again:
|
||||
mchip_hsize() * mchip_vsize() * 2);
|
||||
meye.grab_buffer[reqnr].size = mchip_hsize() * mchip_vsize() * 2;
|
||||
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++;
|
||||
kfifo_in_locked(&meye.doneq, (unsigned char *)&reqnr,
|
||||
sizeof(int), &meye.doneq_lock);
|
||||
@@ -832,7 +832,7 @@ again:
|
||||
size);
|
||||
meye.grab_buffer[reqnr].size = size;
|
||||
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++;
|
||||
kfifo_in_locked(&meye.doneq, (unsigned char *)&reqnr,
|
||||
sizeof(int), &meye.doneq_lock);
|
||||
|
||||
@@ -308,7 +308,7 @@ void saa7134_buffer_finish(struct saa7134_dev *dev,
|
||||
|
||||
/* finish current buffer */
|
||||
q->curr->vb.state = state;
|
||||
do_gettimeofday(&q->curr->vb.ts);
|
||||
v4l2_get_timestamp(&q->curr->vb.ts);
|
||||
wake_up(&q->curr->vb.done);
|
||||
q->curr = NULL;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
if (vip->active) {
|
||||
do_gettimeofday(&vip->active->ts);
|
||||
v4l2_get_timestamp(&vip->active->ts);
|
||||
vip->active->field_count++;
|
||||
vip->active->state = VIDEOBUF_DONE;
|
||||
wake_up(&vip->active->done);
|
||||
|
||||
@@ -1169,7 +1169,7 @@ zoran_reap_stat_com (struct zoran *zr)
|
||||
}
|
||||
frame = zr->jpg_pend[zr->jpg_dma_tail & BUZ_MASK_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) {
|
||||
buffer->bs.length = (stat_com & 0x7fffff) >> 1;
|
||||
@@ -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].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_pend_tail++;
|
||||
}
|
||||
|
||||
@@ -484,15 +484,13 @@ static irqreturn_t bcap_isr(int irq, void *dev_id)
|
||||
{
|
||||
struct ppi_if *ppi = dev_id;
|
||||
struct bcap_device *bcap_dev = ppi->priv;
|
||||
struct timeval timevalue;
|
||||
struct vb2_buffer *vb = &bcap_dev->cur_frm->vb;
|
||||
dma_addr_t addr;
|
||||
|
||||
spin_lock(&bcap_dev->lock);
|
||||
|
||||
if (bcap_dev->cur_frm != bcap_dev->next_frm) {
|
||||
do_gettimeofday(&timevalue);
|
||||
vb->v4l2_buf.timestamp = timevalue;
|
||||
v4l2_get_timestamp(&vb->v4l2_buf.timestamp);
|
||||
vb2_buffer_done(vb, VB2_BUF_STATE_DONE);
|
||||
bcap_dev->cur_frm = bcap_dev->next_frm;
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
struct timeval timevalue;
|
||||
|
||||
do_gettimeofday(&timevalue);
|
||||
vpfe_dev->cur_frm->ts = timevalue;
|
||||
v4l2_get_timestamp(&vpfe_dev->cur_frm->ts);
|
||||
vpfe_dev->cur_frm->state = VIDEOBUF_DONE;
|
||||
vpfe_dev->cur_frm->size = vpfe_dev->fmt.fmt.pix.sizeimage;
|
||||
wake_up_interruptible(&vpfe_dev->cur_frm->done);
|
||||
|
||||
@@ -411,7 +411,7 @@ static struct vb2_ops video_qops = {
|
||||
*/
|
||||
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_BUF_STATE_DONE);
|
||||
/* Make curFrm pointing to nextFrm */
|
||||
|
||||
@@ -402,7 +402,7 @@ static void process_interlaced_mode(int fid, struct common_obj *common)
|
||||
/* one frame is displayed If next frame is
|
||||
* available, release cur_frm and move on */
|
||||
/* 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 */
|
||||
vb2_buffer_done(&common->cur_frm->vb,
|
||||
VB2_BUF_STATE_DONE);
|
||||
@@ -462,8 +462,8 @@ static irqreturn_t vpif_channel_isr(int irq, void *dev_id)
|
||||
if (!channel_first_int[i][channel_id]) {
|
||||
/* Mark status of the cur_frm to
|
||||
* done and unlock semaphore on it */
|
||||
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_BUF_STATE_DONE);
|
||||
/* Make cur_frm pointing to next_frm */
|
||||
|
||||
@@ -1181,7 +1181,7 @@ static void viu_capture_intr(struct viu_dev *dev, u32 status)
|
||||
|
||||
if (waitqueue_active(&buf->vb.done)) {
|
||||
list_del(&buf->vb.queue);
|
||||
do_gettimeofday(&buf->vb.ts);
|
||||
v4l2_get_timestamp(&buf->vb.ts);
|
||||
buf->vb.state = VIDEOBUF_DONE;
|
||||
buf->vb.field_count++;
|
||||
wake_up(&buf->vb.done);
|
||||
|
||||
@@ -597,7 +597,7 @@ static void omap_vout_isr(void *arg, unsigned int irqstatus)
|
||||
return;
|
||||
|
||||
spin_lock(&vout->vbq_lock);
|
||||
do_gettimeofday(&timevalue);
|
||||
v4l2_get_timestamp(&timevalue);
|
||||
|
||||
switch (cur_display->type) {
|
||||
case OMAP_DISPLAY_TYPE_DSI:
|
||||
|
||||
@@ -402,7 +402,7 @@ static void omap24xxcam_vbq_complete(struct omap24xxcam_sgdma *sgdma,
|
||||
omap24xxcam_core_disable(cam);
|
||||
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);
|
||||
if (csr & csr_error) {
|
||||
vb->state = VIDEOBUF_ERROR;
|
||||
|
||||
@@ -1092,7 +1092,7 @@ static irqreturn_t sh_vou_isr(int irq, void *dev_id)
|
||||
list_del(&vb->queue);
|
||||
|
||||
vb->state = VIDEOBUF_DONE;
|
||||
do_gettimeofday(&vb->ts);
|
||||
v4l2_get_timestamp(&vb->ts);
|
||||
vb->field_count++;
|
||||
wake_up(&vb->done);
|
||||
|
||||
|
||||
@@ -166,7 +166,7 @@ static irqreturn_t atmel_isi_handle_streaming(struct atmel_isi *isi)
|
||||
struct frame_buffer *buf = isi->active;
|
||||
|
||||
list_del_init(&buf->list);
|
||||
do_gettimeofday(&vb->v4l2_buf.timestamp);
|
||||
v4l2_get_timestamp(&vb->v4l2_buf.timestamp);
|
||||
vb->v4l2_buf.sequence = isi->sequence++;
|
||||
vb2_buffer_done(vb, VB2_BUF_STATE_DONE);
|
||||
}
|
||||
|
||||
@@ -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() */
|
||||
list_del_init(&vb->queue);
|
||||
vb->state = VIDEOBUF_DONE;
|
||||
do_gettimeofday(&vb->ts);
|
||||
v4l2_get_timestamp(&vb->ts);
|
||||
vb->field_count++;
|
||||
wake_up(&vb->done);
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user