summaryrefslogtreecommitdiffstats
path: root/drivers/media/common/videobuf2/videobuf2-v4l2.c
diff options
context:
space:
mode:
authorHans Verkuil <hverkuil-cisco@xs4all.nl>2019-03-06 16:13:21 -0500
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>2019-03-25 13:24:47 -0400
commit90675d391e9196e95a9e9e31eaa9693d4a995927 (patch)
treed2575cb8064666b5453bea364890eb9fd9170fef /drivers/media/common/videobuf2/videobuf2-v4l2.c
parentb60a5b8dcf49af9f2c60ae82e0383ee8e62a9a52 (diff)
downloadlinux-stable-90675d391e9196e95a9e9e31eaa9693d4a995927.tar.gz
linux-stable-90675d391e9196e95a9e9e31eaa9693d4a995927.tar.bz2
linux-stable-90675d391e9196e95a9e9e31eaa9693d4a995927.zip
media: vb2: add requires_requests bit for stateless codecs
Stateless codecs require the use of the Request API as opposed of it being optional. So add a bit to indicate this and let vb2 check for this. If an attempt is made to queue a buffer without an associated request, then the EBADR error is returned to userspace. Doing this check in the vb2 core simplifies drivers, since they don't have to check for this, they can just set this flag. Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Reviewed-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Diffstat (limited to 'drivers/media/common/videobuf2/videobuf2-v4l2.c')
-rw-r--r--drivers/media/common/videobuf2/videobuf2-v4l2.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/media/common/videobuf2/videobuf2-v4l2.c b/drivers/media/common/videobuf2/videobuf2-v4l2.c
index 74d3abf33b50..84de18b30a95 100644
--- a/drivers/media/common/videobuf2/videobuf2-v4l2.c
+++ b/drivers/media/common/videobuf2/videobuf2-v4l2.c
@@ -381,6 +381,10 @@ static int vb2_queue_or_prepare_buf(struct vb2_queue *q, struct media_device *md
return 0;
if (!(b->flags & V4L2_BUF_FLAG_REQUEST_FD)) {
+ if (q->requires_requests) {
+ dprintk(1, "%s: queue requires requests\n", opname);
+ return -EBADR;
+ }
if (q->uses_requests) {
dprintk(1, "%s: queue uses requests\n", opname);
return -EBUSY;