Commit 62a4cd01 authored by Sergey Senozhatsky's avatar Sergey Senozhatsky Committed by Mauro Carvalho Chehab

media: vivid: add cache_hints module param

Add a cache_hints module param to control per-queue user space cache
hints support.
Signed-off-by: default avatarSergey Senozhatsky <senozhatsky@chromium.org>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 2ff99ca4
...@@ -293,6 +293,15 @@ all configurable using the following module options: ...@@ -293,6 +293,15 @@ all configurable using the following module options:
- 0: vmalloc - 0: vmalloc
- 1: dma-contig - 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 Taken together, all these module options allow you to precisely customize
the driver behavior and test your application with all sorts of permutations. 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. It is also very suitable to emulate hardware that is not yet available, e.g.
......
...@@ -169,6 +169,14 @@ MODULE_PARM_DESC(allocators, " memory allocator selection, default is 0.\n" ...@@ -169,6 +169,14 @@ MODULE_PARM_DESC(allocators, " memory allocator selection, default is 0.\n"
"\t\t 0 == vmalloc\n" "\t\t 0 == vmalloc\n"
"\t\t 1 == dma-contig"); "\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]; static struct vivid_dev *vivid_devs[VIVID_MAX_DEVS];
const struct v4l2_rect vivid_min_rect = { const struct v4l2_rect vivid_min_rect = {
...@@ -819,6 +827,7 @@ static int vivid_create_queue(struct vivid_dev *dev, ...@@ -819,6 +827,7 @@ static int vivid_create_queue(struct vivid_dev *dev,
q->lock = &dev->mutex; q->lock = &dev->mutex;
q->dev = dev->v4l2_dev.dev; q->dev = dev->v4l2_dev.dev;
q->supports_requests = true; q->supports_requests = true;
q->allow_cache_hints = (cache_hints[dev->inst] == 1);
return vb2_queue_init(q); return vb2_queue_init(q);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment