aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/platform/coda/coda-common.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/platform/coda/coda-common.c')
-rw-r--r--drivers/media/platform/coda/coda-common.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/media/platform/coda/coda-common.c b/drivers/media/platform/coda/coda-common.c
index 998fe6614b33..60336eec75af 100644
--- a/drivers/media/platform/coda/coda-common.c
+++ b/drivers/media/platform/coda/coda-common.c
@@ -84,9 +84,9 @@ unsigned int coda_read(struct coda_dev *dev, u32 reg)
84} 84}
85 85
86void coda_write_base(struct coda_ctx *ctx, struct coda_q_data *q_data, 86void coda_write_base(struct coda_ctx *ctx, struct coda_q_data *q_data,
87 struct vb2_buffer *buf, unsigned int reg_y) 87 struct vb2_v4l2_buffer *buf, unsigned int reg_y)
88{ 88{
89 u32 base_y = vb2_dma_contig_plane_dma_addr(buf, 0); 89 u32 base_y = vb2_dma_contig_plane_dma_addr(&buf->vb2_buf, 0);
90 u32 base_cb, base_cr; 90 u32 base_cb, base_cr;
91 91
92 switch (q_data->fourcc) { 92 switch (q_data->fourcc) {
@@ -684,17 +684,17 @@ static int coda_qbuf(struct file *file, void *priv,
684} 684}
685 685
686static bool coda_buf_is_end_of_stream(struct coda_ctx *ctx, 686static bool coda_buf_is_end_of_stream(struct coda_ctx *ctx,
687 struct vb2_buffer *buf) 687 struct vb2_v4l2_buffer *buf)
688{ 688{
689 struct vb2_queue *src_vq; 689 struct vb2_queue *src_vq;
690 690
691 src_vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, V4L2_BUF_TYPE_VIDEO_OUTPUT); 691 src_vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, V4L2_BUF_TYPE_VIDEO_OUTPUT);
692 692
693 return ((ctx->bit_stream_param & CODA_BIT_STREAM_END_FLAG) && 693 return ((ctx->bit_stream_param & CODA_BIT_STREAM_END_FLAG) &&
694 (buf->v4l2_buf.sequence == (ctx->qsequence - 1))); 694 (buf->sequence == (ctx->qsequence - 1)));
695} 695}
696 696
697void coda_m2m_buf_done(struct coda_ctx *ctx, struct vb2_buffer *buf, 697void coda_m2m_buf_done(struct coda_ctx *ctx, struct vb2_v4l2_buffer *buf,
698 enum vb2_buffer_state state) 698 enum vb2_buffer_state state)
699{ 699{
700 const struct v4l2_event eos_event = { 700 const struct v4l2_event eos_event = {
@@ -702,7 +702,7 @@ void coda_m2m_buf_done(struct coda_ctx *ctx, struct vb2_buffer *buf,
702 }; 702 };
703 703
704 if (coda_buf_is_end_of_stream(ctx, buf)) { 704 if (coda_buf_is_end_of_stream(ctx, buf)) {
705 buf->v4l2_buf.flags |= V4L2_BUF_FLAG_LAST; 705 buf->flags |= V4L2_BUF_FLAG_LAST;
706 706
707 v4l2_event_queue_fh(&ctx->fh, &eos_event); 707 v4l2_event_queue_fh(&ctx->fh, &eos_event);
708 } 708 }
@@ -1175,6 +1175,7 @@ static int coda_buf_prepare(struct vb2_buffer *vb)
1175 1175
1176static void coda_buf_queue(struct vb2_buffer *vb) 1176static void coda_buf_queue(struct vb2_buffer *vb)
1177{ 1177{
1178 struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
1178 struct coda_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue); 1179 struct coda_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue);
1179 struct vb2_queue *vq = vb->vb2_queue; 1180 struct vb2_queue *vq = vb->vb2_queue;
1180 struct coda_q_data *q_data; 1181 struct coda_q_data *q_data;
@@ -1193,12 +1194,12 @@ static void coda_buf_queue(struct vb2_buffer *vb)
1193 if (vb2_get_plane_payload(vb, 0) == 0) 1194 if (vb2_get_plane_payload(vb, 0) == 0)
1194 coda_bit_stream_end_flag(ctx); 1195 coda_bit_stream_end_flag(ctx);
1195 mutex_lock(&ctx->bitstream_mutex); 1196 mutex_lock(&ctx->bitstream_mutex);
1196 v4l2_m2m_buf_queue(ctx->fh.m2m_ctx, vb); 1197 v4l2_m2m_buf_queue(ctx->fh.m2m_ctx, vbuf);
1197 if (vb2_is_streaming(vb->vb2_queue)) 1198 if (vb2_is_streaming(vb->vb2_queue))
1198 coda_fill_bitstream(ctx, true); 1199 coda_fill_bitstream(ctx, true);
1199 mutex_unlock(&ctx->bitstream_mutex); 1200 mutex_unlock(&ctx->bitstream_mutex);
1200 } else { 1201 } else {
1201 v4l2_m2m_buf_queue(ctx->fh.m2m_ctx, vb); 1202 v4l2_m2m_buf_queue(ctx->fh.m2m_ctx, vbuf);
1202 } 1203 }
1203} 1204}
1204 1205
@@ -1247,7 +1248,7 @@ static int coda_start_streaming(struct vb2_queue *q, unsigned int count)
1247 struct coda_ctx *ctx = vb2_get_drv_priv(q); 1248 struct coda_ctx *ctx = vb2_get_drv_priv(q);
1248 struct v4l2_device *v4l2_dev = &ctx->dev->v4l2_dev; 1249 struct v4l2_device *v4l2_dev = &ctx->dev->v4l2_dev;
1249 struct coda_q_data *q_data_src, *q_data_dst; 1250 struct coda_q_data *q_data_src, *q_data_dst;
1250 struct vb2_buffer *buf; 1251 struct vb2_v4l2_buffer *buf;
1251 int ret = 0; 1252 int ret = 0;
1252 1253
1253 q_data_src = get_q_data(ctx, V4L2_BUF_TYPE_VIDEO_OUTPUT); 1254 q_data_src = get_q_data(ctx, V4L2_BUF_TYPE_VIDEO_OUTPUT);
@@ -1338,7 +1339,7 @@ static void coda_stop_streaming(struct vb2_queue *q)
1338{ 1339{
1339 struct coda_ctx *ctx = vb2_get_drv_priv(q); 1340 struct coda_ctx *ctx = vb2_get_drv_priv(q);
1340 struct coda_dev *dev = ctx->dev; 1341 struct coda_dev *dev = ctx->dev;
1341 struct vb2_buffer *buf; 1342 struct vb2_v4l2_buffer *buf;
1342 unsigned long flags; 1343 unsigned long flags;
1343 bool stop; 1344 bool stop;
1344 1345