media: videobuf2: core: Rename min_buffers_needed field in vb2_queue
JIRA: https://issues.redhat.com/browse/RHEL-67885 Conflicts: fix unsupported drivers drivers/media/common/saa7146/saa7146_fops.c drivers/media/pci/bt8xx/bttv-driver.c drivers/media/pci/cx18/cx18-streams.c drivers/media/pci/mgb4/mgb4_vin.c drivers/media/pci/mgb4/mgb4_vout.c drivers/media/platform/amphion/vpu_v4l2.c drivers/media/platform/aspeed-video.c drivers/media/platform/microchip/microchip-isc-base.c drivers/media/platform/nuvoton/npcm-video.c drivers/media/platform/nxp/imx7-media-csi.c drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c drivers/media/platform/st/stm32/stm32-dcmipp/dcmipp-bytecap.c drivers/media/platform/stm32/stm32-dcmi.c drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.c drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c drivers/media/test-drivers/vimc/vimc-capture.c drivers/media/test-drivers/vivid/vivid-core.c drivers/staging/media/meson/vdec/vdec.c drivers/staging/media/starfive/camss/stf-video.c drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c commit 80c2b40a51393add616a1fd186a1cc10bd676a3f Author: Benjamin Gaignard <benjamin.gaignard@collabora.com> Date: Mon, 11 Dec 2023 14:32:49 +0100 Rename min_buffers_needed into min_queued_buffers and update the documentation about it. Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> [hverkuil: Drop the change where min_queued_buffers + 1 buffers would be] [hverkuil: allocated. Now this patch only renames this field instead of making] [hverkuil: a functional change as well.] [hverkuil: Renamed 3 remaining min_buffers_needed occurrences.] Signed-off-by: Kate Hsuan <hpa@redhat.com>
This commit is contained in:
parent
38d6486c8f
commit
c7f9fc39f5
|
@ -2489,7 +2489,7 @@ static const struct vb2_queue mxt_queue = {
|
|||
.ops = &mxt_queue_ops,
|
||||
.mem_ops = &vb2_vmalloc_memops,
|
||||
.timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC,
|
||||
.min_buffers_needed = 1,
|
||||
.min_queued_buffers = 1,
|
||||
};
|
||||
|
||||
static int mxt_vidioc_querycap(struct file *file, void *priv,
|
||||
|
|
|
@ -1123,7 +1123,7 @@ static const struct vb2_queue sur40_queue = {
|
|||
.ops = &sur40_queue_ops,
|
||||
.mem_ops = &vb2_dma_sg_memops,
|
||||
.timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC,
|
||||
.min_buffers_needed = 3,
|
||||
.min_queued_buffers = 3,
|
||||
};
|
||||
|
||||
static const struct v4l2_file_operations sur40_video_fops = {
|
||||
|
|
|
@ -871,7 +871,7 @@ int vb2_core_reqbufs(struct vb2_queue *q, enum vb2_memory memory,
|
|||
/*
|
||||
* Make sure the requested values and current defaults are sane.
|
||||
*/
|
||||
num_buffers = max_t(unsigned int, *count, q->min_buffers_needed);
|
||||
num_buffers = max_t(unsigned int, *count, q->min_queued_buffers);
|
||||
num_buffers = min_t(unsigned int, num_buffers, q->max_num_buffers);
|
||||
memset(q->alloc_devs, 0, sizeof(q->alloc_devs));
|
||||
/*
|
||||
|
@ -923,7 +923,7 @@ int vb2_core_reqbufs(struct vb2_queue *q, enum vb2_memory memory,
|
|||
* There is no point in continuing if we can't allocate the minimum
|
||||
* number of buffers needed by this vb2_queue.
|
||||
*/
|
||||
if (allocated_buffers < q->min_buffers_needed)
|
||||
if (allocated_buffers < q->min_queued_buffers)
|
||||
ret = -ENOMEM;
|
||||
|
||||
/*
|
||||
|
@ -1659,7 +1659,7 @@ EXPORT_SYMBOL_GPL(vb2_core_prepare_buf);
|
|||
* @q: videobuf2 queue
|
||||
*
|
||||
* Attempt to start streaming. When this function is called there must be
|
||||
* at least q->min_buffers_needed buffers queued up (i.e. the minimum
|
||||
* at least q->min_queued_buffers queued up (i.e. the minimum
|
||||
* number of buffers required for the DMA engine to function). If the
|
||||
* @start_streaming op fails it is supposed to return all the driver-owned
|
||||
* buffers back to vb2 in state QUEUED. Check if that happened and if
|
||||
|
@ -1852,7 +1852,7 @@ int vb2_core_qbuf(struct vb2_queue *q, struct vb2_buffer *vb, void *pb,
|
|||
* then we can finally call start_streaming().
|
||||
*/
|
||||
if (q->streaming && !q->start_streaming_called &&
|
||||
q->queued_count >= q->min_buffers_needed) {
|
||||
q->queued_count >= q->min_queued_buffers) {
|
||||
ret = vb2_start_streaming(q);
|
||||
if (ret) {
|
||||
/*
|
||||
|
@ -2216,9 +2216,9 @@ int vb2_core_streamon(struct vb2_queue *q, unsigned int type)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (q_num_bufs < q->min_buffers_needed) {
|
||||
dprintk(q, 1, "need at least %u allocated buffers\n",
|
||||
q->min_buffers_needed);
|
||||
if (q_num_bufs < q->min_queued_buffers) {
|
||||
dprintk(q, 1, "need at least %u queued buffers\n",
|
||||
q->min_queued_buffers);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -2230,7 +2230,7 @@ int vb2_core_streamon(struct vb2_queue *q, unsigned int type)
|
|||
* Tell driver to start streaming provided sufficient buffers
|
||||
* are available.
|
||||
*/
|
||||
if (q->queued_count >= q->min_buffers_needed) {
|
||||
if (q->queued_count >= q->min_queued_buffers) {
|
||||
ret = vb2_start_streaming(q);
|
||||
if (ret)
|
||||
goto unprepare;
|
||||
|
@ -2510,7 +2510,7 @@ int vb2_core_queue_init(struct vb2_queue *q)
|
|||
return -EINVAL;
|
||||
|
||||
if (WARN_ON(q->max_num_buffers > MAX_BUFFER_INDEX) ||
|
||||
WARN_ON(q->min_buffers_needed > q->max_num_buffers))
|
||||
WARN_ON(q->min_queued_buffers > q->max_num_buffers))
|
||||
return -EINVAL;
|
||||
|
||||
if (WARN_ON(q->requires_requests && !q->supports_requests))
|
||||
|
@ -2518,13 +2518,13 @@ int vb2_core_queue_init(struct vb2_queue *q)
|
|||
|
||||
/*
|
||||
* This combination is not allowed since a non-zero value of
|
||||
* q->min_buffers_needed can cause vb2_core_qbuf() to fail if
|
||||
* q->min_queued_buffers can cause vb2_core_qbuf() to fail if
|
||||
* it has to call start_streaming(), and the Request API expects
|
||||
* that queueing a request (and thus queueing a buffer contained
|
||||
* in that request) will always succeed. There is no method of
|
||||
* propagating an error back to userspace.
|
||||
*/
|
||||
if (WARN_ON(q->supports_requests && q->min_buffers_needed))
|
||||
if (WARN_ON(q->supports_requests && q->min_queued_buffers))
|
||||
return -EINVAL;
|
||||
|
||||
INIT_LIST_HEAD(&q->queued_list);
|
||||
|
@ -2741,14 +2741,14 @@ static int __vb2_init_fileio(struct vb2_queue *q, int read)
|
|||
return -EBUSY;
|
||||
|
||||
/*
|
||||
* Start with q->min_buffers_needed + 1, driver can increase it in
|
||||
* Start with q->min_queued_buffers + 1, driver can increase it in
|
||||
* queue_setup()
|
||||
*
|
||||
* 'min_buffers_needed' buffers need to be queued up before you
|
||||
* 'min_queued_buffers' buffers need to be queued up before you
|
||||
* can start streaming, plus 1 for userspace (or in this case,
|
||||
* kernelspace) processing.
|
||||
*/
|
||||
count = max(2, q->min_buffers_needed + 1);
|
||||
count = max(2, q->min_queued_buffers + 1);
|
||||
|
||||
dprintk(q, 3, "setting up file io: mode %s, count %d, read_once %d, write_immediately %d\n",
|
||||
(read) ? "read" : "write", count, q->fileio_read_once,
|
||||
|
|
|
@ -177,7 +177,7 @@ int dvb_vb2_init(struct dvb_vb2_ctx *ctx, const char *name, int nonblocking)
|
|||
q->io_modes = VB2_MMAP;
|
||||
q->drv_priv = ctx;
|
||||
q->buf_struct_size = sizeof(struct dvb_buffer);
|
||||
q->min_buffers_needed = 1;
|
||||
q->min_queued_buffers = 1;
|
||||
q->ops = &dvb_vb2_qops;
|
||||
q->mem_ops = &vb2_vmalloc_memops;
|
||||
q->buf_ops = &dvb_vb2_buf_ops;
|
||||
|
|
|
@ -788,7 +788,7 @@ static int video_i2c_probe(struct i2c_client *client,
|
|||
queue->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
queue->drv_priv = data;
|
||||
queue->buf_struct_size = sizeof(struct video_i2c_buffer);
|
||||
queue->min_buffers_needed = 1;
|
||||
queue->min_queued_buffers = 1;
|
||||
queue->ops = &video_i2c_video_qops;
|
||||
queue->mem_ops = &vb2_vmalloc_memops;
|
||||
|
||||
|
|
|
@ -1259,7 +1259,7 @@ static int cobalt_node_register(struct cobalt *cobalt, int node)
|
|||
q->ops = &cobalt_qops;
|
||||
q->mem_ops = &vb2_dma_sg_memops;
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->min_buffers_needed = 2;
|
||||
q->min_queued_buffers = 2;
|
||||
q->lock = &s->lock;
|
||||
q->dev = &cobalt->pci_dev->dev;
|
||||
vdev->queue = q;
|
||||
|
|
|
@ -1525,7 +1525,7 @@ int cx23885_417_register(struct cx23885_dev *dev)
|
|||
q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||
q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF | VB2_READ;
|
||||
q->gfp_flags = GFP_DMA32;
|
||||
q->min_buffers_needed = 2;
|
||||
q->min_queued_buffers = 2;
|
||||
q->drv_priv = dev;
|
||||
q->buf_struct_size = sizeof(struct cx23885_buffer);
|
||||
q->ops = &cx23885_qops;
|
||||
|
|
|
@ -2679,7 +2679,7 @@ int cx23885_dvb_register(struct cx23885_tsport *port)
|
|||
q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||
q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF | VB2_READ;
|
||||
q->gfp_flags = GFP_DMA32;
|
||||
q->min_buffers_needed = 2;
|
||||
q->min_queued_buffers = 2;
|
||||
q->drv_priv = port;
|
||||
q->buf_struct_size = sizeof(struct cx23885_buffer);
|
||||
q->ops = &dvb_qops;
|
||||
|
|
|
@ -1320,7 +1320,7 @@ int cx23885_video_register(struct cx23885_dev *dev)
|
|||
q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||
q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF | VB2_READ;
|
||||
q->gfp_flags = GFP_DMA32;
|
||||
q->min_buffers_needed = 2;
|
||||
q->min_queued_buffers = 2;
|
||||
q->drv_priv = dev;
|
||||
q->buf_struct_size = sizeof(struct cx23885_buffer);
|
||||
q->ops = &cx23885_video_qops;
|
||||
|
@ -1337,7 +1337,7 @@ int cx23885_video_register(struct cx23885_dev *dev)
|
|||
q->type = V4L2_BUF_TYPE_VBI_CAPTURE;
|
||||
q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF | VB2_READ;
|
||||
q->gfp_flags = GFP_DMA32;
|
||||
q->min_buffers_needed = 2;
|
||||
q->min_queued_buffers = 2;
|
||||
q->drv_priv = dev;
|
||||
q->buf_struct_size = sizeof(struct cx23885_buffer);
|
||||
q->ops = &cx23885_vbi_qops;
|
||||
|
|
|
@ -730,7 +730,7 @@ int cx25821_video_register(struct cx25821_dev *dev)
|
|||
q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF;
|
||||
q->io_modes |= is_output ? VB2_WRITE : VB2_READ;
|
||||
q->gfp_flags = GFP_DMA32;
|
||||
q->min_buffers_needed = 2;
|
||||
q->min_queued_buffers = 2;
|
||||
q->drv_priv = chan;
|
||||
q->buf_struct_size = sizeof(struct cx25821_buffer);
|
||||
q->ops = &cx25821_video_qops;
|
||||
|
|
|
@ -1195,7 +1195,7 @@ static int cx8802_blackbird_probe(struct cx8802_driver *drv)
|
|||
q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||
q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF | VB2_READ;
|
||||
q->gfp_flags = GFP_DMA32;
|
||||
q->min_buffers_needed = 2;
|
||||
q->min_queued_buffers = 2;
|
||||
q->drv_priv = dev;
|
||||
q->buf_struct_size = sizeof(struct cx88_buffer);
|
||||
q->ops = &blackbird_qops;
|
||||
|
|
|
@ -1776,7 +1776,7 @@ static int cx8802_dvb_probe(struct cx8802_driver *drv)
|
|||
q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||
q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF | VB2_READ;
|
||||
q->gfp_flags = GFP_DMA32;
|
||||
q->min_buffers_needed = 2;
|
||||
q->min_queued_buffers = 2;
|
||||
q->drv_priv = dev;
|
||||
q->buf_struct_size = sizeof(struct cx88_buffer);
|
||||
q->ops = &dvb_qops;
|
||||
|
|
|
@ -1409,7 +1409,7 @@ static int cx8800_initdev(struct pci_dev *pci_dev,
|
|||
q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||
q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF | VB2_READ;
|
||||
q->gfp_flags = GFP_DMA32;
|
||||
q->min_buffers_needed = 2;
|
||||
q->min_queued_buffers = 2;
|
||||
q->drv_priv = dev;
|
||||
q->buf_struct_size = sizeof(struct cx88_buffer);
|
||||
q->ops = &cx8800_video_qops;
|
||||
|
@ -1426,7 +1426,7 @@ static int cx8800_initdev(struct pci_dev *pci_dev,
|
|||
q->type = V4L2_BUF_TYPE_VBI_CAPTURE;
|
||||
q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF | VB2_READ;
|
||||
q->gfp_flags = GFP_DMA32;
|
||||
q->min_buffers_needed = 2;
|
||||
q->min_queued_buffers = 2;
|
||||
q->drv_priv = dev;
|
||||
q->buf_struct_size = sizeof(struct cx88_buffer);
|
||||
q->ops = &cx8800_vbi_qops;
|
||||
|
|
|
@ -519,7 +519,7 @@ static int dt3155_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
pd->vidq.ops = &q_ops;
|
||||
pd->vidq.mem_ops = &vb2_dma_contig_memops;
|
||||
pd->vidq.drv_priv = pd;
|
||||
pd->vidq.min_buffers_needed = 2;
|
||||
pd->vidq.min_queued_buffers = 2;
|
||||
pd->vidq.gfp_flags = GFP_DMA32;
|
||||
pd->vidq.lock = &pd->mux; /* for locking v4l2_file_operations */
|
||||
pd->vidq.dev = &pdev->dev;
|
||||
|
|
|
@ -1598,7 +1598,7 @@ static int cio2_queue_init(struct cio2_device *cio2, struct cio2_queue *q)
|
|||
vbq->mem_ops = &vb2_dma_sg_memops;
|
||||
vbq->buf_struct_size = sizeof(struct cio2_buffer);
|
||||
vbq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
vbq->min_buffers_needed = 1;
|
||||
vbq->min_queued_buffers = 1;
|
||||
vbq->drv_priv = cio2;
|
||||
vbq->lock = &q->lock;
|
||||
r = vb2_queue_init(vbq);
|
||||
|
|
|
@ -1114,7 +1114,7 @@ static int tw5864_video_input_init(struct tw5864_input *input, int video_nr)
|
|||
input->vidq.gfp_flags = 0;
|
||||
input->vidq.buf_struct_size = sizeof(struct tw5864_buf);
|
||||
input->vidq.lock = &input->lock;
|
||||
input->vidq.min_buffers_needed = 2;
|
||||
input->vidq.min_queued_buffers = 2;
|
||||
input->vidq.dev = &input->root->pci->dev;
|
||||
ret = vb2_queue_init(&input->vidq);
|
||||
if (ret)
|
||||
|
|
|
@ -949,7 +949,7 @@ int tw68_video_init2(struct tw68_dev *dev, int video_nr)
|
|||
dev->vidq.gfp_flags = __GFP_DMA32 | __GFP_KSWAPD_RECLAIM;
|
||||
dev->vidq.buf_struct_size = sizeof(struct tw68_buf);
|
||||
dev->vidq.lock = &dev->lock;
|
||||
dev->vidq.min_buffers_needed = 2;
|
||||
dev->vidq.min_queued_buffers = 2;
|
||||
dev->vidq.dev = &dev->pci->dev;
|
||||
ret = vb2_queue_init(&dev->vidq);
|
||||
if (ret)
|
||||
|
|
|
@ -1221,7 +1221,7 @@ int tw686x_video_init(struct tw686x_dev *dev)
|
|||
vc->vidq.ops = &tw686x_video_qops;
|
||||
vc->vidq.mem_ops = dev->dma_ops->mem_ops;
|
||||
vc->vidq.timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
vc->vidq.min_buffers_needed = 2;
|
||||
vc->vidq.min_queued_buffers = 2;
|
||||
vc->vidq.lock = &vc->vb_mutex;
|
||||
vc->vidq.gfp_flags = dev->dma_mode != TW686X_DMA_MODE_MEMCPY ?
|
||||
GFP_DMA32 : 0;
|
||||
|
|
|
@ -2234,7 +2234,7 @@ static int vpfe_probe_complete(struct vpfe_device *vpfe)
|
|||
q->buf_struct_size = sizeof(struct vpfe_cap_buffer);
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->lock = &vpfe->lock;
|
||||
q->min_buffers_needed = 1;
|
||||
q->min_queued_buffers = 1;
|
||||
q->dev = vpfe->pdev;
|
||||
|
||||
err = vb2_queue_init(q);
|
||||
|
|
|
@ -1571,7 +1571,7 @@ static int aspeed_video_setup_video(struct aspeed_video *video)
|
|||
vbq->drv_priv = video;
|
||||
vbq->buf_struct_size = sizeof(struct aspeed_video_buffer);
|
||||
vbq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
vbq->min_buffers_needed = 3;
|
||||
vbq->min_queued_buffers = 3;
|
||||
|
||||
rc = vb2_queue_init(vbq);
|
||||
if (rc) {
|
||||
|
|
|
@ -2149,7 +2149,7 @@ static int isc_async_complete(struct v4l2_async_notifier *notifier)
|
|||
q->mem_ops = &vb2_dma_contig_memops;
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->lock = &isc->lock;
|
||||
q->min_buffers_needed = 1;
|
||||
q->min_queued_buffers = 1;
|
||||
q->dev = isc->dev;
|
||||
|
||||
ret = vb2_queue_init(q);
|
||||
|
|
|
@ -1244,7 +1244,7 @@ static int atmel_isi_probe(struct platform_device *pdev)
|
|||
q->ops = &isi_video_qops;
|
||||
q->mem_ops = &vb2_dma_contig_memops;
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->min_buffers_needed = 2;
|
||||
q->min_queued_buffers = 2;
|
||||
q->dev = &pdev->dev;
|
||||
|
||||
ret = vb2_queue_init(q);
|
||||
|
|
|
@ -2533,7 +2533,7 @@ static int coda_queue_init(struct coda_ctx *ctx, struct vb2_queue *vq)
|
|||
* would need to be reflected in job_ready(). Currently we expect all
|
||||
* queues to have at least one buffer queued.
|
||||
*/
|
||||
vq->min_buffers_needed = 1;
|
||||
vq->min_queued_buffers = 1;
|
||||
vq->dev = ctx->dev->dev;
|
||||
|
||||
return vb2_queue_init(vq);
|
||||
|
|
|
@ -1439,7 +1439,7 @@ static int vpif_probe_complete(void)
|
|||
q->mem_ops = &vb2_dma_contig_memops;
|
||||
q->buf_struct_size = sizeof(struct vpif_cap_buffer);
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->min_buffers_needed = 1;
|
||||
q->min_queued_buffers = 1;
|
||||
q->lock = &common->lock;
|
||||
q->dev = vpif_dev;
|
||||
|
||||
|
|
|
@ -1168,7 +1168,7 @@ static int vpif_probe_complete(void)
|
|||
q->mem_ops = &vb2_dma_contig_memops;
|
||||
q->buf_struct_size = sizeof(struct vpif_disp_buffer);
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->min_buffers_needed = 1;
|
||||
q->min_queued_buffers = 1;
|
||||
q->lock = &common->lock;
|
||||
q->dev = vpif_dev;
|
||||
err = vb2_queue_init(q);
|
||||
|
|
|
@ -1401,7 +1401,7 @@ static int __init omap_vout_setup_video_data(struct omap_vout_device *vout)
|
|||
vq->ops = &omap_vout_vb2_ops;
|
||||
vq->mem_ops = &vb2_dma_contig_memops;
|
||||
vq->lock = &vout->lock;
|
||||
vq->min_buffers_needed = 1;
|
||||
vq->min_queued_buffers = 1;
|
||||
vfd->queue = vq;
|
||||
|
||||
ret = vb2_queue_init(vq);
|
||||
|
|
|
@ -1523,7 +1523,7 @@ static int m2m_queue_init(void *priv, struct vb2_queue *src_vq,
|
|||
src_vq->drv_priv = inst;
|
||||
src_vq->buf_struct_size = sizeof(struct venus_buffer);
|
||||
src_vq->allow_zero_bytesused = 1;
|
||||
src_vq->min_buffers_needed = 0;
|
||||
src_vq->min_queued_buffers = 0;
|
||||
src_vq->dev = inst->core->dev;
|
||||
ret = vb2_queue_init(src_vq);
|
||||
if (ret)
|
||||
|
@ -1537,7 +1537,7 @@ static int m2m_queue_init(void *priv, struct vb2_queue *src_vq,
|
|||
dst_vq->drv_priv = inst;
|
||||
dst_vq->buf_struct_size = sizeof(struct venus_buffer);
|
||||
dst_vq->allow_zero_bytesused = 1;
|
||||
dst_vq->min_buffers_needed = 0;
|
||||
dst_vq->min_queued_buffers = 0;
|
||||
dst_vq->dev = inst->core->dev;
|
||||
return vb2_queue_init(dst_vq);
|
||||
}
|
||||
|
|
|
@ -1147,7 +1147,7 @@ static int m2m_queue_init(void *priv, struct vb2_queue *src_vq,
|
|||
src_vq->drv_priv = inst;
|
||||
src_vq->buf_struct_size = sizeof(struct venus_buffer);
|
||||
src_vq->allow_zero_bytesused = 1;
|
||||
src_vq->min_buffers_needed = 1;
|
||||
src_vq->min_queued_buffers = 1;
|
||||
src_vq->dev = inst->core->dev;
|
||||
if (inst->core->res->hfi_version == HFI_VERSION_1XX)
|
||||
src_vq->bidirectional = 1;
|
||||
|
@ -1163,7 +1163,7 @@ static int m2m_queue_init(void *priv, struct vb2_queue *src_vq,
|
|||
dst_vq->drv_priv = inst;
|
||||
dst_vq->buf_struct_size = sizeof(struct venus_buffer);
|
||||
dst_vq->allow_zero_bytesused = 1;
|
||||
dst_vq->min_buffers_needed = 1;
|
||||
dst_vq->min_queued_buffers = 1;
|
||||
dst_vq->dev = inst->core->dev;
|
||||
return vb2_queue_init(dst_vq);
|
||||
}
|
||||
|
|
|
@ -1418,7 +1418,7 @@ int rvin_dma_register(struct rvin_dev *vin, int irq)
|
|||
q->ops = &rvin_qops;
|
||||
q->mem_ops = &vb2_dma_contig_memops;
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->min_buffers_needed = 4;
|
||||
q->min_queued_buffers = 4;
|
||||
q->dev = vin->dev;
|
||||
|
||||
ret = vb2_queue_init(q);
|
||||
|
|
|
@ -1413,7 +1413,7 @@ static int ceu_notify_complete(struct v4l2_async_notifier *notifier)
|
|||
q->mem_ops = &vb2_dma_contig_memops;
|
||||
q->buf_struct_size = sizeof(struct ceu_buffer);
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->min_buffers_needed = 2;
|
||||
q->min_queued_buffers = 2;
|
||||
q->lock = &ceudev->mlock;
|
||||
q->dev = ceudev->v4l2_dev.dev;
|
||||
|
||||
|
|
|
@ -1339,7 +1339,7 @@ static int rkisp1_register_capture(struct rkisp1_capture *cap)
|
|||
q->ops = &rkisp1_vb2_ops;
|
||||
q->mem_ops = &vb2_dma_contig_memops;
|
||||
q->buf_struct_size = sizeof(struct rkisp1_buffer);
|
||||
q->min_buffers_needed = RKISP1_MIN_BUFFERS_NEEDED;
|
||||
q->min_queued_buffers = RKISP1_MIN_BUFFERS_NEEDED;
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->lock = &node->vlock;
|
||||
q->dev = cap->rkisp1->dev;
|
||||
|
|
|
@ -1297,7 +1297,7 @@ static int sh_vou_probe(struct platform_device *pdev)
|
|||
q->ops = &sh_vou_qops;
|
||||
q->mem_ops = &vb2_dma_contig_memops;
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->min_buffers_needed = 2;
|
||||
q->min_queued_buffers = 2;
|
||||
q->lock = &vou_dev->fop_lock;
|
||||
q->dev = &pdev->dev;
|
||||
ret = vb2_queue_init(q);
|
||||
|
|
|
@ -1145,7 +1145,7 @@ static int hva_queue_init(void *priv, struct vb2_queue *src_vq,
|
|||
|
||||
src_vq->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
|
||||
src_vq->buf_struct_size = sizeof(struct hva_frame);
|
||||
src_vq->min_buffers_needed = MIN_FRAMES;
|
||||
src_vq->min_queued_buffers = MIN_FRAMES;
|
||||
src_vq->dev = ctx->hva_dev->dev;
|
||||
|
||||
ret = queue_init(ctx, src_vq);
|
||||
|
@ -1154,7 +1154,7 @@ static int hva_queue_init(void *priv, struct vb2_queue *src_vq,
|
|||
|
||||
dst_vq->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||
dst_vq->buf_struct_size = sizeof(struct hva_stream);
|
||||
dst_vq->min_buffers_needed = MIN_STREAMS;
|
||||
dst_vq->min_queued_buffers = MIN_STREAMS;
|
||||
dst_vq->dev = ctx->hva_dev->dev;
|
||||
|
||||
return queue_init(ctx, dst_vq);
|
||||
|
|
|
@ -2021,7 +2021,7 @@ static int dcmi_probe(struct platform_device *pdev)
|
|||
q->ops = &dcmi_video_qops;
|
||||
q->mem_ops = &vb2_dma_contig_memops;
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->min_buffers_needed = 2;
|
||||
q->min_queued_buffers = 2;
|
||||
q->dev = &pdev->dev;
|
||||
|
||||
ret = vb2_queue_init(q);
|
||||
|
|
|
@ -411,7 +411,7 @@ int sun4i_csi_dma_register(struct sun4i_csi *csi, int irq)
|
|||
for (i = 0; i < CSI_MAX_BUFFER; i++)
|
||||
csi->current_buf[i] = NULL;
|
||||
|
||||
q->min_buffers_needed = 3;
|
||||
q->min_queued_buffers = 3;
|
||||
q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
|
||||
q->io_modes = VB2_MMAP | VB2_DMABUF;
|
||||
q->lock = &csi->lock;
|
||||
|
|
|
@ -673,7 +673,7 @@ static int deinterlace_queue_init(void *priv, struct vb2_queue *src_vq,
|
|||
src_vq->io_modes = VB2_MMAP | VB2_DMABUF;
|
||||
src_vq->drv_priv = ctx;
|
||||
src_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer);
|
||||
src_vq->min_buffers_needed = 1;
|
||||
src_vq->min_queued_buffers = 1;
|
||||
src_vq->ops = &deinterlace_qops;
|
||||
src_vq->mem_ops = &vb2_dma_contig_memops;
|
||||
src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
|
||||
|
@ -688,7 +688,7 @@ static int deinterlace_queue_init(void *priv, struct vb2_queue *src_vq,
|
|||
dst_vq->io_modes = VB2_MMAP | VB2_DMABUF;
|
||||
dst_vq->drv_priv = ctx;
|
||||
dst_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer);
|
||||
dst_vq->min_buffers_needed = 2;
|
||||
dst_vq->min_queued_buffers = 2;
|
||||
dst_vq->ops = &deinterlace_qops;
|
||||
dst_vq->mem_ops = &vb2_dma_contig_memops;
|
||||
dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
|
||||
|
|
|
@ -536,7 +536,7 @@ static int rotate_queue_init(void *priv, struct vb2_queue *src_vq,
|
|||
src_vq->io_modes = VB2_MMAP | VB2_DMABUF;
|
||||
src_vq->drv_priv = ctx;
|
||||
src_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer);
|
||||
src_vq->min_buffers_needed = 1;
|
||||
src_vq->min_queued_buffers = 1;
|
||||
src_vq->ops = &rotate_qops;
|
||||
src_vq->mem_ops = &vb2_dma_contig_memops;
|
||||
src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
|
||||
|
@ -551,7 +551,7 @@ static int rotate_queue_init(void *priv, struct vb2_queue *src_vq,
|
|||
dst_vq->io_modes = VB2_MMAP | VB2_DMABUF;
|
||||
dst_vq->drv_priv = ctx;
|
||||
dst_vq->buf_struct_size = sizeof(struct v4l2_m2m_buffer);
|
||||
dst_vq->min_buffers_needed = 2;
|
||||
dst_vq->min_queued_buffers = 2;
|
||||
dst_vq->ops = &rotate_qops;
|
||||
dst_vq->mem_ops = &vb2_dma_contig_memops;
|
||||
dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
|
||||
|
|
|
@ -908,7 +908,7 @@ int cal_ctx_v4l2_init(struct cal_ctx *ctx)
|
|||
q->mem_ops = &vb2_dma_contig_memops;
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->lock = &ctx->mutex;
|
||||
q->min_buffers_needed = 3;
|
||||
q->min_queued_buffers = 3;
|
||||
q->dev = ctx->cal->dev;
|
||||
|
||||
ret = vb2_queue_init(q);
|
||||
|
|
|
@ -429,7 +429,7 @@ static struct vimc_ent_device *vimc_cap_add(struct vimc_device *vimc,
|
|||
q->ops = &vimc_cap_qops;
|
||||
q->mem_ops = &vb2_vmalloc_memops;
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->min_buffers_needed = 2;
|
||||
q->min_queued_buffers = 2;
|
||||
q->lock = &vcap->lock;
|
||||
|
||||
ret = vb2_queue_init(q);
|
||||
|
|
|
@ -860,7 +860,7 @@ static const struct media_device_ops vivid_media_ops = {
|
|||
static int vivid_create_queue(struct vivid_dev *dev,
|
||||
struct vb2_queue *q,
|
||||
u32 buf_type,
|
||||
unsigned int min_buffers_needed,
|
||||
unsigned int min_queued_buffers,
|
||||
const struct vb2_ops *ops)
|
||||
{
|
||||
if (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE && dev->multiplanar)
|
||||
|
@ -883,7 +883,7 @@ static int vivid_create_queue(struct vivid_dev *dev,
|
|||
q->mem_ops = allocators[dev->inst] == 1 ? &vb2_dma_contig_memops :
|
||||
&vb2_vmalloc_memops;
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->min_buffers_needed = min_buffers_needed;
|
||||
q->min_queued_buffers = min_queued_buffers;
|
||||
q->lock = &dev->mutex;
|
||||
q->dev = dev->v4l2_dev.dev;
|
||||
q->supports_requests = true;
|
||||
|
|
|
@ -1782,7 +1782,7 @@ int cx231xx_417_register(struct cx231xx *dev)
|
|||
q->ops = &cx231xx_video_qops;
|
||||
q->mem_ops = &vb2_vmalloc_memops;
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->min_buffers_needed = 1;
|
||||
q->min_queued_buffers = 1;
|
||||
q->lock = &dev->lock;
|
||||
err = vb2_queue_init(q);
|
||||
if (err)
|
||||
|
|
|
@ -1811,7 +1811,7 @@ int cx231xx_register_analog_devices(struct cx231xx *dev)
|
|||
q->ops = &cx231xx_video_qops;
|
||||
q->mem_ops = &vb2_vmalloc_memops;
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->min_buffers_needed = 1;
|
||||
q->min_queued_buffers = 1;
|
||||
q->lock = &dev->lock;
|
||||
ret = vb2_queue_init(q);
|
||||
if (ret)
|
||||
|
@ -1871,7 +1871,7 @@ int cx231xx_register_analog_devices(struct cx231xx *dev)
|
|||
q->ops = &cx231xx_vbi_qops;
|
||||
q->mem_ops = &vb2_vmalloc_memops;
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->min_buffers_needed = 1;
|
||||
q->min_queued_buffers = 1;
|
||||
q->lock = &dev->lock;
|
||||
ret = vb2_queue_init(q);
|
||||
if (ret)
|
||||
|
|
|
@ -1632,7 +1632,7 @@ static int cxusb_medion_register_analog_video(struct dvb_usb_device *dvbdev)
|
|||
cxdev->videoqueue.buf_struct_size =
|
||||
sizeof(struct cxusb_medion_vbuffer);
|
||||
cxdev->videoqueue.timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
cxdev->videoqueue.min_buffers_needed = 6;
|
||||
cxdev->videoqueue.min_queued_buffers = 6;
|
||||
cxdev->videoqueue.lock = &cxdev->dev_lock;
|
||||
|
||||
ret = vb2_queue_init(&cxdev->videoqueue);
|
||||
|
|
|
@ -1257,7 +1257,7 @@ static int vidioc_g_parm(struct file *filp, void *priv,
|
|||
{
|
||||
struct gspca_dev *gspca_dev = video_drvdata(filp);
|
||||
|
||||
parm->parm.capture.readbuffers = gspca_dev->queue.min_buffers_needed;
|
||||
parm->parm.capture.readbuffers = gspca_dev->queue.min_queued_buffers;
|
||||
|
||||
if (!gspca_dev->sd_desc->get_streamparm)
|
||||
return 0;
|
||||
|
@ -1273,7 +1273,7 @@ static int vidioc_s_parm(struct file *filp, void *priv,
|
|||
{
|
||||
struct gspca_dev *gspca_dev = video_drvdata(filp);
|
||||
|
||||
parm->parm.capture.readbuffers = gspca_dev->queue.min_buffers_needed;
|
||||
parm->parm.capture.readbuffers = gspca_dev->queue.min_queued_buffers;
|
||||
|
||||
if (!gspca_dev->sd_desc->set_streamparm) {
|
||||
parm->parm.capture.capability = 0;
|
||||
|
@ -1517,7 +1517,7 @@ int gspca_dev_probe2(struct usb_interface *intf,
|
|||
q->ops = &gspca_qops;
|
||||
q->mem_ops = &vb2_vmalloc_memops;
|
||||
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
q->min_buffers_needed = 2;
|
||||
q->min_queued_buffers = 2;
|
||||
q->lock = &gspca_dev->usb_lock;
|
||||
ret = vb2_queue_init(q);
|
||||
if (ret)
|
||||
|
|
|
@ -1018,7 +1018,7 @@ imx_media_capture_device_init(struct device *dev, struct v4l2_subdev *src_sd,
|
|||
vq->mem_ops = &vb2_dma_contig_memops;
|
||||
vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
vq->lock = &priv->mutex;
|
||||
vq->min_buffers_needed = 2;
|
||||
vq->min_queued_buffers = 2;
|
||||
vq->dev = priv->dev;
|
||||
|
||||
ret = vb2_queue_init(vq);
|
||||
|
|
|
@ -1186,7 +1186,7 @@ static int imgu_v4l2_node_setup(struct imgu_device *imgu, unsigned int pipe,
|
|||
vbq->buf_struct_size = imgu->buf_struct_size;
|
||||
vbq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
/* can streamon w/o buffers */
|
||||
vbq->min_buffers_needed = 0;
|
||||
vbq->min_queued_buffers = 0;
|
||||
vbq->drv_priv = imgu;
|
||||
vbq->lock = &node->lock;
|
||||
r = vb2_queue_init(vbq);
|
||||
|
|
|
@ -182,8 +182,8 @@ static void process_num_buffers(struct vb2_queue *q,
|
|||
* are free to choose any of them to write frames to. As such,
|
||||
* we need all of them to be queued into the driver
|
||||
*/
|
||||
sess->num_dst_bufs = q->num_buffers + *num_buffers;
|
||||
q->min_buffers_needed = max(fmt_out->min_buffers, sess->num_dst_bufs);
|
||||
sess->num_dst_bufs = q_num_bufs + *num_buffers;
|
||||
q->min_queued_buffers = max(fmt_out->min_buffers, sess->num_dst_bufs);
|
||||
}
|
||||
|
||||
static int vdec_queue_setup(struct vb2_queue *q, unsigned int *num_buffers,
|
||||
|
@ -824,7 +824,7 @@ static int m2m_queue_init(void *priv, struct vb2_queue *src_vq,
|
|||
src_vq->mem_ops = &vb2_dma_contig_memops;
|
||||
src_vq->drv_priv = sess;
|
||||
src_vq->buf_struct_size = sizeof(struct dummy_buf);
|
||||
src_vq->min_buffers_needed = 1;
|
||||
src_vq->min_queued_buffers = 1;
|
||||
src_vq->dev = sess->core->dev;
|
||||
src_vq->lock = &sess->lock;
|
||||
ret = vb2_queue_init(src_vq);
|
||||
|
@ -838,7 +838,7 @@ static int m2m_queue_init(void *priv, struct vb2_queue *src_vq,
|
|||
dst_vq->mem_ops = &vb2_dma_contig_memops;
|
||||
dst_vq->drv_priv = sess;
|
||||
dst_vq->buf_struct_size = sizeof(struct dummy_buf);
|
||||
dst_vq->min_buffers_needed = 1;
|
||||
dst_vq->min_queued_buffers = 1;
|
||||
dst_vq->dev = sess->core->dev;
|
||||
dst_vq->lock = &sess->lock;
|
||||
return vb2_queue_init(dst_vq);
|
||||
|
|
|
@ -1264,7 +1264,7 @@ static int tegra_channel_init(struct tegra_vi_channel *chan)
|
|||
chan->queue.ops = &tegra_channel_queue_qops;
|
||||
chan->queue.mem_ops = &vb2_dma_contig_memops;
|
||||
chan->queue.timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
chan->queue.min_buffers_needed = 2;
|
||||
chan->queue.min_queued_buffers = 2;
|
||||
chan->queue.dev = vi->dev;
|
||||
ret = vb2_queue_init(&chan->queue);
|
||||
if (ret < 0) {
|
||||
|
|
|
@ -809,8 +809,8 @@ static int zr_vb2_queue_setup(struct vb2_queue *vq, unsigned int *nbuffers, unsi
|
|||
|
||||
zr->buf_in_reserve = 0;
|
||||
|
||||
if (*nbuffers < vq->min_buffers_needed)
|
||||
*nbuffers = vq->min_buffers_needed;
|
||||
if (*nbuffers < vq->min_queued_buffers)
|
||||
*nbuffers = vq->min_queued_buffers;
|
||||
|
||||
if (*nplanes) {
|
||||
if (sizes[0] < size)
|
||||
|
@ -1024,7 +1024,7 @@ int zoran_queue_init(struct zoran *zr, struct vb2_queue *vq)
|
|||
vq->mem_ops = &vb2_dma_contig_memops;
|
||||
vq->gfp_flags = GFP_DMA32;
|
||||
vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
|
||||
vq->min_buffers_needed = 9;
|
||||
vq->min_queued_buffers = 9;
|
||||
vq->lock = &zr->lock;
|
||||
err = vb2_queue_init(vq);
|
||||
if (err)
|
||||
|
|
|
@ -402,7 +402,7 @@ struct vb2_buffer {
|
|||
* by calling vb2_buffer_done() with %VB2_BUF_STATE_QUEUED.
|
||||
* If you need a minimum number of buffers before you can
|
||||
* start streaming, then set
|
||||
* &vb2_queue->min_buffers_needed. If that is non-zero
|
||||
* &vb2_queue->min_queued_buffers. If that is non-zero
|
||||
* then @start_streaming won't be called until at least
|
||||
* that many buffers have been queued up by userspace.
|
||||
* @stop_streaming: called when 'streaming' state must be disabled; driver
|
||||
|
@ -546,10 +546,13 @@ struct vb2_buf_ops {
|
|||
* @gfp_flags: additional gfp flags used when allocating the buffers.
|
||||
* Typically this is 0, but it may be e.g. %GFP_DMA or %__GFP_DMA32
|
||||
* to force the buffer allocation to a specific memory zone.
|
||||
* @min_buffers_needed: the minimum number of buffers needed before
|
||||
* @min_queued_buffers: the minimum number of queued buffers needed before
|
||||
* @start_streaming can be called. Used when a DMA engine
|
||||
* cannot be started unless at least this number of buffers
|
||||
* have been queued into the driver.
|
||||
* VIDIOC_REQBUFS will ensure at least @min_queued_buffers
|
||||
* buffers will be allocated. Note that VIDIOC_CREATE_BUFS will not
|
||||
* modify the requested buffer count.
|
||||
*/
|
||||
/*
|
||||
* Private elements (won't appear at the uAPI book):
|
||||
|
@ -614,7 +617,7 @@ struct vb2_queue {
|
|||
unsigned int buf_struct_size;
|
||||
u32 timestamp_flags;
|
||||
gfp_t gfp_flags;
|
||||
u32 min_buffers_needed;
|
||||
u32 min_queued_buffers;
|
||||
|
||||
struct device *alloc_devs[VB2_MAX_PLANES];
|
||||
|
||||
|
|
|
@ -820,7 +820,7 @@ static int skeleton_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
* available before it can be started. The start_streaming() op
|
||||
* won't be called until at least this many buffers are queued up.
|
||||
*/
|
||||
q->min_buffers_needed = 2;
|
||||
q->min_queued_buffers = 2;
|
||||
/*
|
||||
* The serialization lock for the streaming ioctls. This is the same
|
||||
* as the main serialization lock, but if some of the non-streaming
|
||||
|
|
Loading…
Reference in New Issue