media fixes for v6.8-rc2
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEE+QmuaPwR3wnBdVwACF8+vY7k4RUFAmWzgg8ACgkQCF8+vY7k 4RV1cg/+JtxkyWHOTLjRBw/j0PsSGvSJJEGw0eGU2+YYRbuZ/f9JxfnEKhuRpXte qJNIjWTIIx/jActFYKRRxDtIHM0aIUlTp5N2pNlva71+nyWRO2Do1W2QXnBz6AJQ eENWbYIEe1d2Lb5r9kqSUTegpcfTITlaS3vcLH5n7QImDUT/+tfkN1tSRPVZN/gm mrx04nw+T6elcfPiWFLlY1+TgWSddhD4ipWemt5fIdh5PXEM9EqvX6hMZcD4nzOQ R5Hth9YRK1Qj0ETYGfgFsc+oCi60hirZjmJxQcafFBMqxHysbRh9haOu/szPMzpa leqgKEKAEU52nI9LqcVEin00UBNJL6KkvkkjA+w1xo94Y/vjXKXytrKAX9REYzI3 75MEs/M1nAcIuvV0K9RgoYKERhUJree2SA95q2gu5voZbzzJXS15DdSRScV5K2Yx EVsm2Jfy5JxECpHjTZ8e+0ax+pUynUu+BCf9aTZJGxJZwueOmIWJqLturjL8e1MM aqzmywBQJgR7IoyiDXihlt055DVQdRbDD9pWDi0sra/sFcXTE9mH9eSfk6jGHLLj P228V6dB8lnod274K7BOkhzxJ5AUs53PtF9F4ibPLPQlEyoFSNsCDr3SUKdC/9C8 buQHuKrI4F2Oc6f0CWsA/fRvS1MCYvBAM0ZG7O7Tq5nVUoFczZk= =PGQI -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
4aeb083707
@ -17,7 +17,7 @@ properties:
|
||||
compatible:
|
||||
items:
|
||||
- enum:
|
||||
- ti,k3-j721s2-wave521c
|
||||
- ti,j721s2-wave521c
|
||||
- const: cnm,wave521c
|
||||
|
||||
reg:
|
||||
@ -53,7 +53,7 @@ additionalProperties: false
|
||||
examples:
|
||||
- |
|
||||
vpu: video-codec@12345678 {
|
||||
compatible = "ti,k3-j721s2-wave521c", "cnm,wave521c";
|
||||
compatible = "ti,j721s2-wave521c", "cnm,wave521c";
|
||||
reg = <0x12345678 0x1000>;
|
||||
clocks = <&clks 42>;
|
||||
interrupts = <42>;
|
||||
|
@ -989,7 +989,7 @@ int vb2_core_create_bufs(struct vb2_queue *q, enum vb2_memory memory,
|
||||
bool no_previous_buffers = !q_num_bufs;
|
||||
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");
|
||||
return -ENOBUFS;
|
||||
}
|
||||
|
@ -671,8 +671,20 @@ int vb2_querybuf(struct vb2_queue *q, struct v4l2_buffer *b)
|
||||
}
|
||||
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;
|
||||
if (q->io_modes & VB2_MMAP)
|
||||
*caps |= V4L2_BUF_CAP_SUPPORTS_MMAP;
|
||||
@ -686,21 +698,9 @@ static void fill_buf_caps(struct vb2_queue *q, u32 *caps)
|
||||
*caps |= V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS;
|
||||
if (q->supports_requests)
|
||||
*caps |= V4L2_BUF_CAP_SUPPORTS_REQUESTS;
|
||||
}
|
||||
|
||||
static void validate_memory_flags(struct vb2_queue *q,
|
||||
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;
|
||||
if (max_num_bufs) {
|
||||
*max_num_bufs = q->max_num_buffers;
|
||||
*caps |= V4L2_BUF_CAP_SUPPORTS_MAX_NUM_BUFFERS;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
u32 flags = req->flags;
|
||||
|
||||
fill_buf_caps(q, &req->capabilities);
|
||||
validate_memory_flags(q, req->memory, &flags);
|
||||
vb2_set_flags_and_caps(q, req->memory, &flags,
|
||||
&req->capabilities, NULL);
|
||||
req->flags = flags;
|
||||
return ret ? ret : vb2_core_reqbufs(q, req->memory,
|
||||
req->flags, &req->count);
|
||||
@ -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);
|
||||
unsigned i;
|
||||
|
||||
fill_buf_caps(q, &create->capabilities);
|
||||
validate_memory_flags(q, create->memory, &create->flags);
|
||||
create->index = vb2_get_num_buffers(q);
|
||||
create->max_num_buffers = q->max_num_buffers;
|
||||
create->capabilities |= V4L2_BUF_CAP_SUPPORTS_MAX_NUM_BUFFERS;
|
||||
vb2_set_flags_and_caps(q, create->memory, &create->flags,
|
||||
&create->capabilities, &create->max_num_buffers);
|
||||
if (create->count == 0)
|
||||
return ret != -EBUSY ? ret : 0;
|
||||
|
||||
@ -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);
|
||||
u32 flags = p->flags;
|
||||
|
||||
fill_buf_caps(vdev->queue, &p->capabilities);
|
||||
validate_memory_flags(vdev->queue, p->memory, &flags);
|
||||
vb2_set_flags_and_caps(vdev->queue, p->memory, &flags,
|
||||
&p->capabilities, NULL);
|
||||
p->flags = flags;
|
||||
if (res)
|
||||
return res;
|
||||
@ -1026,12 +1024,11 @@ int vb2_ioctl_create_bufs(struct file *file, void *priv,
|
||||
struct v4l2_create_buffers *p)
|
||||
{
|
||||
struct video_device *vdev = video_devdata(file);
|
||||
int res = vb2_verify_memory_type(vdev->queue, p->memory,
|
||||
p->format.type);
|
||||
int res = vb2_verify_memory_type(vdev->queue, p->memory, p->format.type);
|
||||
|
||||
p->index = vdev->queue->num_buffers;
|
||||
fill_buf_caps(vdev->queue, &p->capabilities);
|
||||
validate_memory_flags(vdev->queue, p->memory, &p->flags);
|
||||
p->index = vb2_get_num_buffers(vdev->queue);
|
||||
vb2_set_flags_and_caps(vdev->queue, p->memory, &p->flags,
|
||||
&p->capabilities, &p->max_num_buffers);
|
||||
/*
|
||||
* 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.
|
||||
|
@ -272,7 +272,7 @@ static const struct wave5_match_data ti_wave521c_data = {
|
||||
};
|
||||
|
||||
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 */ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, wave5_dt_ids);
|
||||
|
Loading…
x
Reference in New Issue
Block a user