]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
media: vivid: disable VB2_USERPTR if dma_contig was configured
authorHans Verkuil <hverkuil@xs4all.nl>
Mon, 14 Jan 2019 13:50:54 +0000 (08:50 -0500)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Wed, 16 Jan 2019 18:36:42 +0000 (13:36 -0500)
It makes no sense to support the USERPTR memory model if the vivid instance was
configured as dma_contig. Disable it if this is the case.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/platform/vivid/vivid-core.c

index c931f007e5b0e9f53b85b0bc205d256ff970355a..745ba6678b409330a2752d750bde10c89d01b953 100644 (file)
@@ -1094,7 +1094,9 @@ static int vivid_create_instance(struct platform_device *pdev, int inst)
                q = &dev->vb_vid_cap_q;
                q->type = dev->multiplanar ? V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE :
                        V4L2_BUF_TYPE_VIDEO_CAPTURE;
-               q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF | VB2_READ;
+               q->io_modes = VB2_MMAP | VB2_DMABUF | VB2_READ;
+               if (!allocator)
+                       q->io_modes |= VB2_USERPTR;
                q->drv_priv = dev;
                q->buf_struct_size = sizeof(struct vivid_buffer);
                q->ops = &vivid_vid_cap_qops;
@@ -1115,7 +1117,9 @@ static int vivid_create_instance(struct platform_device *pdev, int inst)
                q = &dev->vb_vid_out_q;
                q->type = dev->multiplanar ? V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE :
                        V4L2_BUF_TYPE_VIDEO_OUTPUT;
-               q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF | VB2_WRITE;
+               q->io_modes = VB2_MMAP | VB2_DMABUF | VB2_WRITE;
+               if (!allocator)
+                       q->io_modes |= VB2_USERPTR;
                q->drv_priv = dev;
                q->buf_struct_size = sizeof(struct vivid_buffer);
                q->ops = &vivid_vid_out_qops;
@@ -1136,7 +1140,9 @@ static int vivid_create_instance(struct platform_device *pdev, int inst)
                q = &dev->vb_vbi_cap_q;
                q->type = dev->has_raw_vbi_cap ? V4L2_BUF_TYPE_VBI_CAPTURE :
                                              V4L2_BUF_TYPE_SLICED_VBI_CAPTURE;
-               q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF | VB2_READ;
+               q->io_modes = VB2_MMAP | VB2_DMABUF | VB2_READ;
+               if (!allocator)
+                       q->io_modes |= VB2_USERPTR;
                q->drv_priv = dev;
                q->buf_struct_size = sizeof(struct vivid_buffer);
                q->ops = &vivid_vbi_cap_qops;
@@ -1157,7 +1163,9 @@ static int vivid_create_instance(struct platform_device *pdev, int inst)
                q = &dev->vb_vbi_out_q;
                q->type = dev->has_raw_vbi_out ? V4L2_BUF_TYPE_VBI_OUTPUT :
                                              V4L2_BUF_TYPE_SLICED_VBI_OUTPUT;
-               q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF | VB2_WRITE;
+               q->io_modes = VB2_MMAP | VB2_DMABUF | VB2_WRITE;
+               if (!allocator)
+                       q->io_modes |= VB2_USERPTR;
                q->drv_priv = dev;
                q->buf_struct_size = sizeof(struct vivid_buffer);
                q->ops = &vivid_vbi_out_qops;
@@ -1177,7 +1185,9 @@ static int vivid_create_instance(struct platform_device *pdev, int inst)
                /* initialize sdr_cap queue */
                q = &dev->vb_sdr_cap_q;
                q->type = V4L2_BUF_TYPE_SDR_CAPTURE;
-               q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF | VB2_READ;
+               q->io_modes = VB2_MMAP | VB2_DMABUF | VB2_READ;
+               if (!allocator)
+                       q->io_modes |= VB2_USERPTR;
                q->drv_priv = dev;
                q->buf_struct_size = sizeof(struct vivid_buffer);
                q->ops = &vivid_sdr_cap_qops;