So UVC devices can remain runtime-suspended when the system goes into a sleep state, they and all of their descendant devices need to have runtime PM enable. Signed-off-by: Tomeu Vizoso <tomeu.vizoso@xxxxxxxxxxxxx> --- drivers/media/usb/uvc/uvc_driver.c | 4 ++++ drivers/media/usb/uvc/uvc_status.c | 3 +++ 2 files changed, 7 insertions(+) diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c index cf27006..e98830a1 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -1792,6 +1792,8 @@ static int uvc_register_video(struct uvc_device *dev, return ret; } + pm_runtime_enable(&vdev->dev); + if (stream->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) stream->chain->caps |= V4L2_CAP_VIDEO_CAPTURE; else @@ -1932,6 +1934,8 @@ static int uvc_probe(struct usb_interface *intf, if (media_device_register(&dev->mdev) < 0) goto error; + pm_runtime_enable(&dev->mdev.devnode.dev); + dev->vdev.mdev = &dev->mdev; #endif if (v4l2_device_register(&intf->dev, &dev->vdev) < 0) diff --git a/drivers/media/usb/uvc/uvc_status.c b/drivers/media/usb/uvc/uvc_status.c index f552ab9..b1d3d8c 100644 --- a/drivers/media/usb/uvc/uvc_status.c +++ b/drivers/media/usb/uvc/uvc_status.c @@ -13,6 +13,7 @@ #include <linux/kernel.h> #include <linux/input.h> +#include <linux/pm_runtime.h> #include <linux/slab.h> #include <linux/usb.h> #include <linux/usb/input.h> @@ -46,6 +47,8 @@ static int uvc_input_init(struct uvc_device *dev) if ((ret = input_register_device(input)) < 0) goto error; + pm_runtime_enable(&input->dev); + dev->input = input; return 0; -- 2.3.4 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html