mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-28 15:13:55 +08:00
[media] cx88: v4l2-compliance fixes
Fix three v4l2-compliance failures: - the colorspace wasn't set in vidioc_try_fmt_vid_cap(). - the field wasn't set in v4l2_buffer when vb2_buffer_done() was called. - the sequence wasn't set in v4l2_buffer when vb2_buffer_done() was called. This fix also removes the unused buf->count field and starts the count at 0 instead of 1. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
parent
6752d73046
commit
9450684b74
@ -519,6 +519,8 @@ void cx88_wakeup(struct cx88_core *core,
|
|||||||
buf = list_entry(q->active.next,
|
buf = list_entry(q->active.next,
|
||||||
struct cx88_buffer, list);
|
struct cx88_buffer, list);
|
||||||
v4l2_get_timestamp(&buf->vb.v4l2_buf.timestamp);
|
v4l2_get_timestamp(&buf->vb.v4l2_buf.timestamp);
|
||||||
|
buf->vb.v4l2_buf.field = core->field;
|
||||||
|
buf->vb.v4l2_buf.sequence = q->count++;
|
||||||
list_del(&buf->list);
|
list_del(&buf->list);
|
||||||
vb2_buffer_done(&buf->vb, VB2_BUF_STATE_DONE);
|
vb2_buffer_done(&buf->vb, VB2_BUF_STATE_DONE);
|
||||||
}
|
}
|
||||||
|
@ -173,7 +173,7 @@ int cx8802_start_dma(struct cx8802_dev *dev,
|
|||||||
|
|
||||||
/* reset counter */
|
/* reset counter */
|
||||||
cx_write(MO_TS_GPCNTRL, GP_COUNT_CONTROL_RESET);
|
cx_write(MO_TS_GPCNTRL, GP_COUNT_CONTROL_RESET);
|
||||||
q->count = 1;
|
q->count = 0;
|
||||||
|
|
||||||
/* enable irqs */
|
/* enable irqs */
|
||||||
dprintk( 1, "setting the interrupt mask\n" );
|
dprintk( 1, "setting the interrupt mask\n" );
|
||||||
@ -216,8 +216,6 @@ static int cx8802_restart_queue(struct cx8802_dev *dev,
|
|||||||
dprintk(2,"restart_queue [%p/%d]: restart dma\n",
|
dprintk(2,"restart_queue [%p/%d]: restart dma\n",
|
||||||
buf, buf->vb.v4l2_buf.index);
|
buf, buf->vb.v4l2_buf.index);
|
||||||
cx8802_start_dma(dev, q, buf);
|
cx8802_start_dma(dev, q, buf);
|
||||||
list_for_each_entry(buf, &q->active, list)
|
|
||||||
buf->count = q->count++;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -260,7 +258,6 @@ void cx8802_buf_queue(struct cx8802_dev *dev, struct cx88_buffer *buf)
|
|||||||
if (list_empty(&cx88q->active)) {
|
if (list_empty(&cx88q->active)) {
|
||||||
dprintk( 1, "queue is empty - first active\n" );
|
dprintk( 1, "queue is empty - first active\n" );
|
||||||
list_add_tail(&buf->list, &cx88q->active);
|
list_add_tail(&buf->list, &cx88q->active);
|
||||||
buf->count = cx88q->count++;
|
|
||||||
dprintk(1,"[%p/%d] %s - first active\n",
|
dprintk(1,"[%p/%d] %s - first active\n",
|
||||||
buf, buf->vb.v4l2_buf.index, __func__);
|
buf, buf->vb.v4l2_buf.index, __func__);
|
||||||
|
|
||||||
@ -269,7 +266,6 @@ void cx8802_buf_queue(struct cx8802_dev *dev, struct cx88_buffer *buf)
|
|||||||
dprintk( 1, "queue is not empty - append to active\n" );
|
dprintk( 1, "queue is not empty - append to active\n" );
|
||||||
prev = list_entry(cx88q->active.prev, struct cx88_buffer, list);
|
prev = list_entry(cx88q->active.prev, struct cx88_buffer, list);
|
||||||
list_add_tail(&buf->list, &cx88q->active);
|
list_add_tail(&buf->list, &cx88q->active);
|
||||||
buf->count = cx88q->count++;
|
|
||||||
prev->risc.jmp[1] = cpu_to_le32(buf->risc.dma);
|
prev->risc.jmp[1] = cpu_to_le32(buf->risc.dma);
|
||||||
dprintk( 1, "[%p/%d] %s - append to active\n",
|
dprintk( 1, "[%p/%d] %s - append to active\n",
|
||||||
buf, buf->vb.v4l2_buf.index, __func__);
|
buf, buf->vb.v4l2_buf.index, __func__);
|
||||||
|
@ -59,7 +59,7 @@ static int cx8800_start_vbi_dma(struct cx8800_dev *dev,
|
|||||||
|
|
||||||
/* reset counter */
|
/* reset counter */
|
||||||
cx_write(MO_VBI_GPCNTRL, GP_COUNT_CONTROL_RESET);
|
cx_write(MO_VBI_GPCNTRL, GP_COUNT_CONTROL_RESET);
|
||||||
q->count = 1;
|
q->count = 0;
|
||||||
|
|
||||||
/* enable irqs */
|
/* enable irqs */
|
||||||
cx_set(MO_PCI_INTMSK, core->pci_irqmask | PCI_INT_VIDINT);
|
cx_set(MO_PCI_INTMSK, core->pci_irqmask | PCI_INT_VIDINT);
|
||||||
@ -102,8 +102,6 @@ int cx8800_restart_vbi_queue(struct cx8800_dev *dev,
|
|||||||
dprintk(2,"restart_queue [%p/%d]: restart dma\n",
|
dprintk(2,"restart_queue [%p/%d]: restart dma\n",
|
||||||
buf, buf->vb.v4l2_buf.index);
|
buf, buf->vb.v4l2_buf.index);
|
||||||
cx8800_start_vbi_dma(dev, q, buf);
|
cx8800_start_vbi_dma(dev, q, buf);
|
||||||
list_for_each_entry(buf, &q->active, list)
|
|
||||||
buf->count = q->count++;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,7 +173,6 @@ static void buffer_queue(struct vb2_buffer *vb)
|
|||||||
if (list_empty(&q->active)) {
|
if (list_empty(&q->active)) {
|
||||||
list_add_tail(&buf->list, &q->active);
|
list_add_tail(&buf->list, &q->active);
|
||||||
cx8800_start_vbi_dma(dev, q, buf);
|
cx8800_start_vbi_dma(dev, q, buf);
|
||||||
buf->count = q->count++;
|
|
||||||
dprintk(2,"[%p/%d] vbi_queue - first active\n",
|
dprintk(2,"[%p/%d] vbi_queue - first active\n",
|
||||||
buf, buf->vb.v4l2_buf.index);
|
buf, buf->vb.v4l2_buf.index);
|
||||||
|
|
||||||
@ -183,7 +180,6 @@ static void buffer_queue(struct vb2_buffer *vb)
|
|||||||
buf->risc.cpu[0] |= cpu_to_le32(RISC_IRQ1);
|
buf->risc.cpu[0] |= cpu_to_le32(RISC_IRQ1);
|
||||||
prev = list_entry(q->active.prev, struct cx88_buffer, list);
|
prev = list_entry(q->active.prev, struct cx88_buffer, list);
|
||||||
list_add_tail(&buf->list, &q->active);
|
list_add_tail(&buf->list, &q->active);
|
||||||
buf->count = q->count++;
|
|
||||||
prev->risc.jmp[1] = cpu_to_le32(buf->risc.dma);
|
prev->risc.jmp[1] = cpu_to_le32(buf->risc.dma);
|
||||||
dprintk(2,"[%p/%d] buffer_queue - append to active\n",
|
dprintk(2,"[%p/%d] buffer_queue - append to active\n",
|
||||||
buf, buf->vb.v4l2_buf.index);
|
buf, buf->vb.v4l2_buf.index);
|
||||||
|
@ -370,7 +370,7 @@ static int start_video_dma(struct cx8800_dev *dev,
|
|||||||
|
|
||||||
/* reset counter */
|
/* reset counter */
|
||||||
cx_write(MO_VIDY_GPCNTRL,GP_COUNT_CONTROL_RESET);
|
cx_write(MO_VIDY_GPCNTRL,GP_COUNT_CONTROL_RESET);
|
||||||
q->count = 1;
|
q->count = 0;
|
||||||
|
|
||||||
/* enable irqs */
|
/* enable irqs */
|
||||||
cx_set(MO_PCI_INTMSK, core->pci_irqmask | PCI_INT_VIDINT);
|
cx_set(MO_PCI_INTMSK, core->pci_irqmask | PCI_INT_VIDINT);
|
||||||
@ -423,8 +423,6 @@ static int restart_video_queue(struct cx8800_dev *dev,
|
|||||||
dprintk(2,"restart_queue [%p/%d]: restart dma\n",
|
dprintk(2,"restart_queue [%p/%d]: restart dma\n",
|
||||||
buf, buf->vb.v4l2_buf.index);
|
buf, buf->vb.v4l2_buf.index);
|
||||||
start_video_dma(dev, q, buf);
|
start_video_dma(dev, q, buf);
|
||||||
list_for_each_entry(buf, &q->active, list)
|
|
||||||
buf->count = q->count++;
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -523,7 +521,6 @@ static void buffer_queue(struct vb2_buffer *vb)
|
|||||||
|
|
||||||
if (list_empty(&q->active)) {
|
if (list_empty(&q->active)) {
|
||||||
list_add_tail(&buf->list, &q->active);
|
list_add_tail(&buf->list, &q->active);
|
||||||
buf->count = q->count++;
|
|
||||||
dprintk(2,"[%p/%d] buffer_queue - first active\n",
|
dprintk(2,"[%p/%d] buffer_queue - first active\n",
|
||||||
buf, buf->vb.v4l2_buf.index);
|
buf, buf->vb.v4l2_buf.index);
|
||||||
|
|
||||||
@ -531,7 +528,6 @@ static void buffer_queue(struct vb2_buffer *vb)
|
|||||||
buf->risc.cpu[0] |= cpu_to_le32(RISC_IRQ1);
|
buf->risc.cpu[0] |= cpu_to_le32(RISC_IRQ1);
|
||||||
prev = list_entry(q->active.prev, struct cx88_buffer, list);
|
prev = list_entry(q->active.prev, struct cx88_buffer, list);
|
||||||
list_add_tail(&buf->list, &q->active);
|
list_add_tail(&buf->list, &q->active);
|
||||||
buf->count = q->count++;
|
|
||||||
prev->risc.jmp[1] = cpu_to_le32(buf->risc.dma);
|
prev->risc.jmp[1] = cpu_to_le32(buf->risc.dma);
|
||||||
dprintk(2, "[%p/%d] buffer_queue - append to active\n",
|
dprintk(2, "[%p/%d] buffer_queue - append to active\n",
|
||||||
buf, buf->vb.v4l2_buf.index);
|
buf, buf->vb.v4l2_buf.index);
|
||||||
@ -771,6 +767,7 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
|
|||||||
(f->fmt.pix.width * fmt->depth) >> 3;
|
(f->fmt.pix.width * fmt->depth) >> 3;
|
||||||
f->fmt.pix.sizeimage =
|
f->fmt.pix.sizeimage =
|
||||||
f->fmt.pix.height * f->fmt.pix.bytesperline;
|
f->fmt.pix.height * f->fmt.pix.bytesperline;
|
||||||
|
f->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -327,7 +327,6 @@ struct cx88_buffer {
|
|||||||
/* cx88 specific */
|
/* cx88 specific */
|
||||||
unsigned int bpl;
|
unsigned int bpl;
|
||||||
struct cx88_riscmem risc;
|
struct cx88_riscmem risc;
|
||||||
u32 count;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct cx88_dmaqueue {
|
struct cx88_dmaqueue {
|
||||||
|
Loading…
Reference in New Issue
Block a user