Instead of suspending/resume the USB device at open()/close(), do it when the device is actually used. This way we can reduce the power consumption when a service is holding the video device and leaving it in an idle state. To: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx> Cc: linux-media@xxxxxxxxxxxxxxx Cc: linux-kernel@xxxxxxxxxxxxxxx Cc: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> Cc: Tomasz Figa <tfiga@xxxxxxxxxxxx> Cc: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> Cc: Hans Verkuil <hverkuil-cisco@xxxxxxxxx> Cc: Guenter Roeck <linux@xxxxxxxxxxxx> Cc: Max Staudt <mstaudt@xxxxxxxxxxxx> Cc: Sergey Senozhatsky <senozhatsky@xxxxxxxxxxxx> Cc: Yunke Cao <yunkec@xxxxxxxxxxxx> Signed-off-by: Ricardo Ribalda <ribalda@xxxxxxxxxxxx> --- Changes in v5: - Improve uvc_fd padding (Thanks Sergey) - Take the mutex always in the same order. - Link to v4: https://lore.kernel.org/r/20220920-resend-powersave-v4-0-47484ae40761@xxxxxxxxxxxx Changes in v4: - Remove patches to avoid crashes during device removal - Link to v3: https://lore.kernel.org/r/20220920-resend-powersave-v3-0-c47856d8757e@xxxxxxxxxxxx Changes in v3: - Rebase on top of uvc/next - Reorder series, and put "controversial" patches at the end. - Fix "use-before-set" bug. Thanks Max! - Link to v2: https://lore.kernel.org/r/20220920-resend-powersave-v2-0-5135d1bb1c38@xxxxxxxxxxxx Changes in v2: - Make access to uvc_status contitional - Merge with Guenter race condition patchset: https://lore.kernel.org/lkml/20200917022547.198090-1-linux@xxxxxxxxxxxx/ - Link to v1: https://lore.kernel.org/r/20220920-resend-powersave-v1-0-123aa2ba3836@xxxxxxxxxxxx --- Ricardo Ribalda (2): media: uvcvideo: Refactor streamon/streamoff media: uvcvideo: Do power management granularly drivers/media/usb/uvc/uvc_v4l2.c | 217 +++++++++++++++++++++++++++++++-------- drivers/media/usb/uvc/uvcvideo.h | 1 + 2 files changed, 178 insertions(+), 40 deletions(-) --- base-commit: f599c56de2bfcf5ff791b0f4155e997e08e364f0 change-id: 20220920-resend-powersave-5981719ed267 Best regards, -- Ricardo Ribalda <ribalda@xxxxxxxxxxxx>