Re: [REVIEWv2 PATCH 07/13] vb2: reject output buffers with V4L2_FIELD_ALTERNATE
On Mon, Apr 7, 2014 at 10:11 PM, Hans Verkuil hverk...@xs4all.nl wrote: From: Hans Verkuil hans.verk...@cisco.com This is not allowed by the spec and does in fact not make any sense. Return -EINVAL if this is the case. Signed-off-by: Hans Verkuil hans.verk...@cisco.com Acked-by: Pawel Osciak pa...@osciak.com --- drivers/media/v4l2-core/videobuf2-core.c | 13 + 1 file changed, 13 insertions(+) diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c index b7de6be..c662ad9 100644 --- a/drivers/media/v4l2-core/videobuf2-core.c +++ b/drivers/media/v4l2-core/videobuf2-core.c @@ -1511,6 +1511,19 @@ static int __buf_prepare(struct vb2_buffer *vb, const struct v4l2_buffer *b) dprintk(1, plane parameters verification failed: %d\n, ret); return ret; } + if (b-field == V4L2_FIELD_ALTERNATE V4L2_TYPE_IS_OUTPUT(q-type)) { + /* +* If the format's field is ALTERNATE, then the buffer's field +* should be either TOP or BOTTOM, not ALTERNATE since that +* makes no sense. The driver has to know whether the +* buffer represents a top or a bottom field in order to +* program any DMA correctly. Using ALTERNATE is wrong, since +* that just says that it is either a top or a bottom field, +* but not which of the two it is. +*/ + dprintk(1, the field is incorrectly set to ALTERNATE for an output buffer\n); + return -EINVAL; + } vb-state = VB2_BUF_STATE_PREPARING; vb-v4l2_buf.timestamp.tv_sec = 0; -- 1.9.1 -- Best regards, Pawel Osciak -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[REVIEWv2 PATCH 07/13] vb2: reject output buffers with V4L2_FIELD_ALTERNATE
From: Hans Verkuil hans.verk...@cisco.com This is not allowed by the spec and does in fact not make any sense. Return -EINVAL if this is the case. Signed-off-by: Hans Verkuil hans.verk...@cisco.com --- drivers/media/v4l2-core/videobuf2-core.c | 13 + 1 file changed, 13 insertions(+) diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c index b7de6be..c662ad9 100644 --- a/drivers/media/v4l2-core/videobuf2-core.c +++ b/drivers/media/v4l2-core/videobuf2-core.c @@ -1511,6 +1511,19 @@ static int __buf_prepare(struct vb2_buffer *vb, const struct v4l2_buffer *b) dprintk(1, plane parameters verification failed: %d\n, ret); return ret; } + if (b-field == V4L2_FIELD_ALTERNATE V4L2_TYPE_IS_OUTPUT(q-type)) { + /* +* If the format's field is ALTERNATE, then the buffer's field +* should be either TOP or BOTTOM, not ALTERNATE since that +* makes no sense. The driver has to know whether the +* buffer represents a top or a bottom field in order to +* program any DMA correctly. Using ALTERNATE is wrong, since +* that just says that it is either a top or a bottom field, +* but not which of the two it is. +*/ + dprintk(1, the field is incorrectly set to ALTERNATE for an output buffer\n); + return -EINVAL; + } vb-state = VB2_BUF_STATE_PREPARING; vb-v4l2_buf.timestamp.tv_sec = 0; -- 1.9.1 -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html