media: uvcvideo: Do not turn on the camera for some ioctls

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 <hdegoede@redhat.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Message-ID: <20250327-uvc-granpower-ng-v6-5-35a2357ff348@chromium.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
This commit is contained in:
Ricardo Ribalda 2025-03-27 21:05:31 +00:00 committed by Hans Verkuil
parent a32d9c41bd
commit d1b618e795

View file

@ -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;