diff options
| -rw-r--r-- | drivers/media/platform/ti-vpe/vpe.c | 13 |
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, |
