Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: v4l2: Add mem2mem helpers for REMOVE_BUFS ioctl

Create v4l2-mem2mem helpers for VIDIOC_REMOVE_BUFS ioctl and
make test drivers use it.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
Reviewed-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>

authored by

Benjamin Gaignard and committed by
Hans Verkuil
2f241950 a3293a85

+21
+1
drivers/media/test-drivers/vicodec/vicodec-core.c
··· 1345 1345 .vidioc_prepare_buf = v4l2_m2m_ioctl_prepare_buf, 1346 1346 .vidioc_create_bufs = v4l2_m2m_ioctl_create_bufs, 1347 1347 .vidioc_expbuf = v4l2_m2m_ioctl_expbuf, 1348 + .vidioc_remove_bufs = v4l2_m2m_ioctl_remove_bufs, 1348 1349 1349 1350 .vidioc_streamon = v4l2_m2m_ioctl_streamon, 1350 1351 .vidioc_streamoff = v4l2_m2m_ioctl_streamoff,
+1
drivers/media/test-drivers/vimc/vimc-capture.c
··· 221 221 .vidioc_expbuf = vb2_ioctl_expbuf, 222 222 .vidioc_streamon = vb2_ioctl_streamon, 223 223 .vidioc_streamoff = vb2_ioctl_streamoff, 224 + .vidioc_remove_bufs = vb2_ioctl_remove_bufs, 224 225 }; 225 226 226 227 static void vimc_capture_return_all_buffers(struct vimc_capture_device *vcapture,
+1
drivers/media/test-drivers/visl/visl-video.c
··· 539 539 .vidioc_prepare_buf = v4l2_m2m_ioctl_prepare_buf, 540 540 .vidioc_create_bufs = v4l2_m2m_ioctl_create_bufs, 541 541 .vidioc_expbuf = v4l2_m2m_ioctl_expbuf, 542 + .vidioc_remove_bufs = v4l2_m2m_ioctl_remove_bufs, 542 543 543 544 .vidioc_streamon = v4l2_m2m_ioctl_streamon, 544 545 .vidioc_streamoff = v4l2_m2m_ioctl_streamoff,
+1
drivers/media/test-drivers/vivid/vivid-core.c
··· 769 769 .vidioc_expbuf = vb2_ioctl_expbuf, 770 770 .vidioc_streamon = vb2_ioctl_streamon, 771 771 .vidioc_streamoff = vb2_ioctl_streamoff, 772 + .vidioc_remove_bufs = vb2_ioctl_remove_bufs, 772 773 773 774 .vidioc_enum_input = vivid_enum_input, 774 775 .vidioc_g_input = vivid_g_input,
+15
drivers/media/v4l2-core/v4l2-mem2mem.c
··· 1386 1386 } 1387 1387 EXPORT_SYMBOL_GPL(v4l2_m2m_ioctl_create_bufs); 1388 1388 1389 + int v4l2_m2m_ioctl_remove_bufs(struct file *file, void *priv, 1390 + struct v4l2_remove_buffers *remove) 1391 + { 1392 + struct v4l2_fh *fh = file->private_data; 1393 + struct vb2_queue *q = v4l2_m2m_get_vq(fh->m2m_ctx, remove->type); 1394 + 1395 + if (!q) 1396 + return -EINVAL; 1397 + if (q->type != remove->type) 1398 + return -EINVAL; 1399 + 1400 + return vb2_core_remove_bufs(q, remove->index, remove->count); 1401 + } 1402 + EXPORT_SYMBOL_GPL(v4l2_m2m_ioctl_remove_bufs); 1403 + 1389 1404 int v4l2_m2m_ioctl_querybuf(struct file *file, void *priv, 1390 1405 struct v4l2_buffer *buf) 1391 1406 {
+2
include/media/v4l2-mem2mem.h
··· 867 867 struct v4l2_requestbuffers *rb); 868 868 int v4l2_m2m_ioctl_create_bufs(struct file *file, void *fh, 869 869 struct v4l2_create_buffers *create); 870 + int v4l2_m2m_ioctl_remove_bufs(struct file *file, void *priv, 871 + struct v4l2_remove_buffers *d); 870 872 int v4l2_m2m_ioctl_querybuf(struct file *file, void *fh, 871 873 struct v4l2_buffer *buf); 872 874 int v4l2_m2m_ioctl_expbuf(struct file *file, void *fh,