[media] v4l2-ctrls: Fix control enumeration for multiple subdevs with ctrl
authorHans Verkuil <hverkuil@xs4all.nl>
Tue, 22 Feb 2011 15:31:07 +0000 (12:31 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 21 Mar 2011 23:32:04 +0000 (20:32 -0300)
v4l2-ctl and qv4l2 enumerate controls using V4L2_CTRL_FLAG_NEXT_CTRL,
falling back to the old method if the flag isn't supported.

The v4l2_subdev_queryctrl function will currently handle that flag, but
for the controls of the subdev only. This isn't right, it should refuse
this flag, otherwise v4l2-ctl will only see the controls of the first
subdev.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/v4l2-ctrls.c

index ef66d2af0c57c8adea19be12ad78e2b1c754883b..2412f08527aa8e014a440971b7ade207ecd1b233 100644 (file)
@@ -1364,6 +1364,8 @@ EXPORT_SYMBOL(v4l2_queryctrl);
 
 int v4l2_subdev_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc)
 {
+       if (qc->id & V4L2_CTRL_FLAG_NEXT_CTRL)
+               return -EINVAL;
        return v4l2_queryctrl(sd->ctrl_handler, qc);
 }
 EXPORT_SYMBOL(v4l2_subdev_queryctrl);