On Sun Feb 23 18:58:05 2025 +0000, Ricardo Ribalda wrote:
> The driver was missing support for query_ext_ctrl. Instead of adding a
> new callback for it, replace the current implementation of queryctrl and
> let the ioctl framework emulate the old function.
> 
> Most of the fields are identical, so the change is pretty simple.
> 
> Signed-off-by: Ricardo Ribalda <riba...@chromium.org>
> Signed-off-by: Hans Verkuil <hverk...@xs4all.nl>
> Signed-off-by: Mauro Carvalho Chehab <mchehab+hua...@kernel.org>

Patch committed.

Thanks,
Mauro Carvalho Chehab

 drivers/media/usb/pvrusb2/pvrusb2-v4l2.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

---

diff --git a/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c 
b/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
index d608b793fa84..7c8be6a0cf7c 100644
--- a/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
@@ -497,8 +497,8 @@ static int pvr2_streamoff(struct file *file, void *priv, 
enum v4l2_buf_type i)
        return pvr2_hdw_set_streaming(hdw, 0);
 }
 
-static int pvr2_queryctrl(struct file *file, void *priv,
-               struct v4l2_queryctrl *vc)
+static int pvr2_query_ext_ctrl(struct file *file, void *priv,
+                              struct v4l2_query_ext_ctrl *vc)
 {
        struct pvr2_v4l2_fh *fh = file->private_data;
        struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
@@ -521,13 +521,16 @@ static int pvr2_queryctrl(struct file *file, void *priv,
        }
 
        pvr2_trace(PVR2_TRACE_V4LIOCTL,
-                       "QUERYCTRL id=0x%x mapping name=%s (%s)",
+                       "QUERYEXTCTRL id=0x%x mapping name=%s (%s)",
                        vc->id, pvr2_ctrl_get_name(cptr),
                        pvr2_ctrl_get_desc(cptr));
        strscpy(vc->name, pvr2_ctrl_get_desc(cptr), sizeof(vc->name));
        vc->flags = pvr2_ctrl_get_v4lflags(cptr);
        pvr2_ctrl_get_def(cptr, &val);
        vc->default_value = val;
+       vc->nr_of_dims = 0;
+       vc->elems = 1;
+       vc->elem_size = 4;
        switch (pvr2_ctrl_get_type(cptr)) {
        case pvr2_ctl_enum:
                vc->type = V4L2_CTRL_TYPE_MENU;
@@ -549,7 +552,7 @@ static int pvr2_queryctrl(struct file *file, void *priv,
                break;
        default:
                pvr2_trace(PVR2_TRACE_V4LIOCTL,
-                               "QUERYCTRL id=0x%x name=%s not mappable",
+                               "QUERYEXTCTRL id=0x%x name=%s not mappable",
                                vc->id, pvr2_ctrl_get_name(cptr));
                return -EINVAL;
        }
@@ -812,7 +815,7 @@ static const struct v4l2_ioctl_ops pvr2_ioctl_ops = {
        .vidioc_try_fmt_vid_cap             = pvr2_try_fmt_vid_cap,
        .vidioc_streamon                    = pvr2_streamon,
        .vidioc_streamoff                   = pvr2_streamoff,
-       .vidioc_queryctrl                   = pvr2_queryctrl,
+       .vidioc_query_ext_ctrl              = pvr2_query_ext_ctrl,
        .vidioc_querymenu                   = pvr2_querymenu,
        .vidioc_g_ctrl                      = pvr2_g_ctrl,
        .vidioc_s_ctrl                      = pvr2_s_ctrl,

Reply via email to