Commit 4aeb0837 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'media/v6.8-3' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media

Pull media fixes from Mauro Carvalho Chehab:

 - remove K3 DT prefix from wave5

 - vb2 core: fix missing caps on VIDIO_CREATE_BUFS under certain
   circumstances

 - videobuf2: Stop direct calls to queue num_buffers field

* tag 'media/v6.8-3' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
  media: vb2: refactor setting flags and caps, fix missing cap
  media: media videobuf2: Stop direct calls to queue num_buffers field
  media: chips-media: wave5: Remove K3 References
  dt-bindings: media: Remove K3 Family Prefix from Compatible
parents ecb1b828 b32431b7
...@@ -17,7 +17,7 @@ properties: ...@@ -17,7 +17,7 @@ properties:
compatible: compatible:
items: items:
- enum: - enum:
- ti,k3-j721s2-wave521c - ti,j721s2-wave521c
- const: cnm,wave521c - const: cnm,wave521c
reg: reg:
...@@ -53,7 +53,7 @@ additionalProperties: false ...@@ -53,7 +53,7 @@ additionalProperties: false
examples: examples:
- | - |
vpu: video-codec@12345678 { vpu: video-codec@12345678 {
compatible = "ti,k3-j721s2-wave521c", "cnm,wave521c"; compatible = "ti,j721s2-wave521c", "cnm,wave521c";
reg = <0x12345678 0x1000>; reg = <0x12345678 0x1000>;
clocks = <&clks 42>; clocks = <&clks 42>;
interrupts = <42>; interrupts = <42>;
......
...@@ -989,7 +989,7 @@ int vb2_core_create_bufs(struct vb2_queue *q, enum vb2_memory memory, ...@@ -989,7 +989,7 @@ int vb2_core_create_bufs(struct vb2_queue *q, enum vb2_memory memory,
bool no_previous_buffers = !q_num_bufs; bool no_previous_buffers = !q_num_bufs;
int ret = 0; int ret = 0;
if (q->num_buffers == q->max_num_buffers) { if (q_num_bufs == q->max_num_buffers) {
dprintk(q, 1, "maximum number of buffers already allocated\n"); dprintk(q, 1, "maximum number of buffers already allocated\n");
return -ENOBUFS; return -ENOBUFS;
} }
......
...@@ -671,8 +671,20 @@ int vb2_querybuf(struct vb2_queue *q, struct v4l2_buffer *b) ...@@ -671,8 +671,20 @@ int vb2_querybuf(struct vb2_queue *q, struct v4l2_buffer *b)
} }
EXPORT_SYMBOL(vb2_querybuf); EXPORT_SYMBOL(vb2_querybuf);
static void fill_buf_caps(struct vb2_queue *q, u32 *caps) static void vb2_set_flags_and_caps(struct vb2_queue *q, u32 memory,
u32 *flags, u32 *caps, u32 *max_num_bufs)
{ {
if (!q->allow_cache_hints || memory != V4L2_MEMORY_MMAP) {
/*
* This needs to clear V4L2_MEMORY_FLAG_NON_COHERENT only,
* but in order to avoid bugs we zero out all bits.
*/
*flags = 0;
} else {
/* Clear all unknown flags. */
*flags &= V4L2_MEMORY_FLAG_NON_COHERENT;
}
*caps = V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS; *caps = V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS;
if (q->io_modes & VB2_MMAP) if (q->io_modes & VB2_MMAP)
*caps |= V4L2_BUF_CAP_SUPPORTS_MMAP; *caps |= V4L2_BUF_CAP_SUPPORTS_MMAP;
...@@ -686,21 +698,9 @@ static void fill_buf_caps(struct vb2_queue *q, u32 *caps) ...@@ -686,21 +698,9 @@ static void fill_buf_caps(struct vb2_queue *q, u32 *caps)
*caps |= V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS; *caps |= V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS;
if (q->supports_requests) if (q->supports_requests)
*caps |= V4L2_BUF_CAP_SUPPORTS_REQUESTS; *caps |= V4L2_BUF_CAP_SUPPORTS_REQUESTS;
} if (max_num_bufs) {
*max_num_bufs = q->max_num_buffers;
static void validate_memory_flags(struct vb2_queue *q, *caps |= V4L2_BUF_CAP_SUPPORTS_MAX_NUM_BUFFERS;
int memory,
u32 *flags)
{
if (!q->allow_cache_hints || memory != V4L2_MEMORY_MMAP) {
/*
* This needs to clear V4L2_MEMORY_FLAG_NON_COHERENT only,
* but in order to avoid bugs we zero out all bits.
*/
*flags = 0;
} else {
/* Clear all unknown flags. */
*flags &= V4L2_MEMORY_FLAG_NON_COHERENT;
} }
} }
...@@ -709,8 +709,8 @@ int vb2_reqbufs(struct vb2_queue *q, struct v4l2_requestbuffers *req) ...@@ -709,8 +709,8 @@ int vb2_reqbufs(struct vb2_queue *q, struct v4l2_requestbuffers *req)
int ret = vb2_verify_memory_type(q, req->memory, req->type); int ret = vb2_verify_memory_type(q, req->memory, req->type);
u32 flags = req->flags; u32 flags = req->flags;
fill_buf_caps(q, &req->capabilities); vb2_set_flags_and_caps(q, req->memory, &flags,
validate_memory_flags(q, req->memory, &flags); &req->capabilities, NULL);
req->flags = flags; req->flags = flags;
return ret ? ret : vb2_core_reqbufs(q, req->memory, return ret ? ret : vb2_core_reqbufs(q, req->memory,
req->flags, &req->count); req->flags, &req->count);
...@@ -751,11 +751,9 @@ int vb2_create_bufs(struct vb2_queue *q, struct v4l2_create_buffers *create) ...@@ -751,11 +751,9 @@ int vb2_create_bufs(struct vb2_queue *q, struct v4l2_create_buffers *create)
int ret = vb2_verify_memory_type(q, create->memory, f->type); int ret = vb2_verify_memory_type(q, create->memory, f->type);
unsigned i; unsigned i;
fill_buf_caps(q, &create->capabilities);
validate_memory_flags(q, create->memory, &create->flags);
create->index = vb2_get_num_buffers(q); create->index = vb2_get_num_buffers(q);
create->max_num_buffers = q->max_num_buffers; vb2_set_flags_and_caps(q, create->memory, &create->flags,
create->capabilities |= V4L2_BUF_CAP_SUPPORTS_MAX_NUM_BUFFERS; &create->capabilities, &create->max_num_buffers);
if (create->count == 0) if (create->count == 0)
return ret != -EBUSY ? ret : 0; return ret != -EBUSY ? ret : 0;
...@@ -1006,8 +1004,8 @@ int vb2_ioctl_reqbufs(struct file *file, void *priv, ...@@ -1006,8 +1004,8 @@ int vb2_ioctl_reqbufs(struct file *file, void *priv,
int res = vb2_verify_memory_type(vdev->queue, p->memory, p->type); int res = vb2_verify_memory_type(vdev->queue, p->memory, p->type);
u32 flags = p->flags; u32 flags = p->flags;
fill_buf_caps(vdev->queue, &p->capabilities); vb2_set_flags_and_caps(vdev->queue, p->memory, &flags,
validate_memory_flags(vdev->queue, p->memory, &flags); &p->capabilities, NULL);
p->flags = flags; p->flags = flags;
if (res) if (res)
return res; return res;
...@@ -1026,12 +1024,11 @@ int vb2_ioctl_create_bufs(struct file *file, void *priv, ...@@ -1026,12 +1024,11 @@ int vb2_ioctl_create_bufs(struct file *file, void *priv,
struct v4l2_create_buffers *p) struct v4l2_create_buffers *p)
{ {
struct video_device *vdev = video_devdata(file); struct video_device *vdev = video_devdata(file);
int res = vb2_verify_memory_type(vdev->queue, p->memory, int res = vb2_verify_memory_type(vdev->queue, p->memory, p->format.type);
p->format.type);
p->index = vdev->queue->num_buffers; p->index = vb2_get_num_buffers(vdev->queue);
fill_buf_caps(vdev->queue, &p->capabilities); vb2_set_flags_and_caps(vdev->queue, p->memory, &p->flags,
validate_memory_flags(vdev->queue, p->memory, &p->flags); &p->capabilities, &p->max_num_buffers);
/* /*
* If count == 0, then just check if memory and type are valid. * If count == 0, then just check if memory and type are valid.
* Any -EBUSY result from vb2_verify_memory_type can be mapped to 0. * Any -EBUSY result from vb2_verify_memory_type can be mapped to 0.
......
...@@ -272,7 +272,7 @@ static const struct wave5_match_data ti_wave521c_data = { ...@@ -272,7 +272,7 @@ static const struct wave5_match_data ti_wave521c_data = {
}; };
static const struct of_device_id wave5_dt_ids[] = { static const struct of_device_id wave5_dt_ids[] = {
{ .compatible = "ti,k3-j721s2-wave521c", .data = &ti_wave521c_data }, { .compatible = "ti,j721s2-wave521c", .data = &ti_wave521c_data },
{ /* sentinel */ } { /* sentinel */ }
}; };
MODULE_DEVICE_TABLE(of, wave5_dt_ids); MODULE_DEVICE_TABLE(of, wave5_dt_ids);
......
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