media: vivid: add cache_hints module param
authorSergey Senozhatsky <senozhatsky@chromium.org>
Thu, 14 May 2020 16:01:53 +0000 (18:01 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 23 Jun 2020 11:40:35 +0000 (13:40 +0200)
Add a cache_hints module param to control per-queue user space cache
hints support.

Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Documentation/admin-guide/media/vivid.rst
drivers/media/test-drivers/vivid/vivid-core.c

index 52e57b773f076c5b846394d0fe683d7663c5ee47..6d7175f96f74c26a13944e467aa959ab584aac34 100644 (file)
@@ -293,6 +293,15 @@ all configurable using the following module options:
                - 0: vmalloc
                - 1: dma-contig
 
+- cache_hints:
+
+       specifies if the device should set queues' user-space cache and memory
+       consistency hint capability (V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS).
+       The hints are valid only when using MMAP streaming I/O. Default is 0.
+
+               - 0: forbid hints
+               - 1: allow hints
+
 Taken together, all these module options allow you to precisely customize
 the driver behavior and test your application with all sorts of permutations.
 It is also very suitable to emulate hardware that is not yet available, e.g.
index 6c740e3e6999fe2d3091c8170e20a09c27d18514..5c986df4a8d4e992a256d0a44a8bf917f4afdc2b 100644 (file)
@@ -169,6 +169,14 @@ MODULE_PARM_DESC(allocators, " memory allocator selection, default is 0.\n"
                             "\t\t    0 == vmalloc\n"
                             "\t\t    1 == dma-contig");
 
+static unsigned int cache_hints[VIVID_MAX_DEVS] = {
+       [0 ... (VIVID_MAX_DEVS - 1)] = 0
+};
+module_param_array(cache_hints, uint, NULL, 0444);
+MODULE_PARM_DESC(cache_hints, " user-space cache hints, default is 0.\n"
+                            "\t\t    0 == forbid\n"
+                            "\t\t    1 == allow");
+
 static struct vivid_dev *vivid_devs[VIVID_MAX_DEVS];
 
 const struct v4l2_rect vivid_min_rect = {
@@ -819,6 +827,7 @@ static int vivid_create_queue(struct vivid_dev *dev,
        q->lock = &dev->mutex;
        q->dev = dev->v4l2_dev.dev;
        q->supports_requests = true;
+       q->allow_cache_hints = (cache_hints[dev->inst] == 1);
 
        return vb2_queue_init(q);
 }