On Thu Mar 27 21:05:31 2025 +0000, Ricardo Ribalda wrote:
> There are some ioctls that do not need to turn on the camera. Do not
> call uvc_pm_get in those cases.
> 
> Reviewed-by: Hans de Goede <hdego...@redhat.com>
> Reviewed-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
> Signed-off-by: Ricardo Ribalda <riba...@chromium.org>
> Message-ID: <20250327-uvc-granpower-ng-v6-5-35a2357ff...@chromium.org>
> Signed-off-by: Hans de Goede <hdego...@redhat.com>
> Signed-off-by: Hans Verkuil <hverk...@xs4all.nl>

Patch committed.

Thanks,
Hans Verkuil

 drivers/media/usb/uvc/uvc_v4l2.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

---

diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v4l2.c
index 0f1ed0387b26..668a4e9d772c 100644
--- a/drivers/media/usb/uvc/uvc_v4l2.c
+++ b/drivers/media/usb/uvc/uvc_v4l2.c
@@ -1440,6 +1440,26 @@ static long uvc_v4l2_unlocked_ioctl(struct file *file,
        struct uvc_fh *handle = file->private_data;
        int ret;
 
+       /* The following IOCTLs do not need to turn on the camera. */
+       switch (cmd) {
+       case VIDIOC_CREATE_BUFS:
+       case VIDIOC_DQBUF:
+       case VIDIOC_ENUM_FMT:
+       case VIDIOC_ENUM_FRAMEINTERVALS:
+       case VIDIOC_ENUM_FRAMESIZES:
+       case VIDIOC_ENUMINPUT:
+       case VIDIOC_EXPBUF:
+       case VIDIOC_G_FMT:
+       case VIDIOC_G_PARM:
+       case VIDIOC_G_SELECTION:
+       case VIDIOC_QBUF:
+       case VIDIOC_QUERYCAP:
+       case VIDIOC_REQBUFS:
+       case VIDIOC_SUBSCRIBE_EVENT:
+       case VIDIOC_UNSUBSCRIBE_EVENT:
+               return video_ioctl2(file, cmd, arg);
+       }
+
        ret = uvc_pm_get(handle->stream->dev);
        if (ret)
                return ret;

Reply via email to