aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/platform/ti-vpe/vpe.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/media/platform/ti-vpe/vpe.c b/drivers/media/platform/ti-vpe/vpe.c
index f42c458aac11..b64f29a54891 100644
--- a/drivers/media/platform/ti-vpe/vpe.c
+++ b/drivers/media/platform/ti-vpe/vpe.c
@@ -1288,10 +1288,10 @@ static irqreturn_t vpe_irq(int irq_vpe, void *data)
1288 d_buf->timecode = s_buf->timecode; 1288 d_buf->timecode = s_buf->timecode;
1289 } 1289 }
1290 d_buf->sequence = ctx->sequence; 1290 d_buf->sequence = ctx->sequence;
1291 d_buf->field = ctx->field;
1292 1291
1293 d_q_data = &ctx->q_data[Q_DATA_DST]; 1292 d_q_data = &ctx->q_data[Q_DATA_DST];
1294 if (d_q_data->flags & Q_DATA_INTERLACED) { 1293 if (d_q_data->flags & Q_DATA_INTERLACED) {
1294 d_buf->field = ctx->field;
1295 if (ctx->field == V4L2_FIELD_BOTTOM) { 1295 if (ctx->field == V4L2_FIELD_BOTTOM) {
1296 ctx->sequence++; 1296 ctx->sequence++;
1297 ctx->field = V4L2_FIELD_TOP; 1297 ctx->field = V4L2_FIELD_TOP;
@@ -1300,6 +1300,7 @@ static irqreturn_t vpe_irq(int irq_vpe, void *data)
1300 ctx->field = V4L2_FIELD_BOTTOM; 1300 ctx->field = V4L2_FIELD_BOTTOM;
1301 } 1301 }
1302 } else { 1302 } else {
1303 d_buf->field = V4L2_FIELD_NONE;
1303 ctx->sequence++; 1304 ctx->sequence++;
1304 } 1305 }
1305 1306
@@ -1724,6 +1725,16 @@ static int vpe_buf_prepare(struct vb2_buffer *vb)
1724 q_data = get_q_data(ctx, vb->vb2_queue->type); 1725 q_data = get_q_data(ctx, vb->vb2_queue->type);
1725 num_planes = q_data->fmt->coplanar ? 2 : 1; 1726 num_planes = q_data->fmt->coplanar ? 2 : 1;
1726 1727
1728 if (vb->vb2_queue->type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) {
1729 if (!(q_data->flags & Q_DATA_INTERLACED)) {
1730 vb->v4l2_buf.field = V4L2_FIELD_NONE;
1731 } else {
1732 if (vb->v4l2_buf.field != V4L2_FIELD_TOP &&
1733 vb->v4l2_buf.field != V4L2_FIELD_BOTTOM)
1734 return -EINVAL;
1735 }
1736 }
1737
1727 for (i = 0; i < num_planes; i++) { 1738 for (i = 0; i < num_planes; i++) {
1728 if (vb2_plane_size(vb, i) < q_data->sizeimage[i]) { 1739 if (vb2_plane_size(vb, i) < q_data->sizeimage[i]) {
1729 vpe_err(ctx->dev, 1740 vpe_err(ctx->dev,