diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.10/950-0535-sound-usb-call-usb_autopm_get_interface-for-devices-.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.10/950-0535-sound-usb-call-usb_autopm_get_interface-for-devices-.patch | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.10/950-0535-sound-usb-call-usb_autopm_get_interface-for-devices-.patch b/target/linux/bcm27xx/patches-5.10/950-0535-sound-usb-call-usb_autopm_get_interface-for-devices-.patch new file mode 100644 index 0000000000..3b4a78d21b --- /dev/null +++ b/target/linux/bcm27xx/patches-5.10/950-0535-sound-usb-call-usb_autopm_get_interface-for-devices-.patch @@ -0,0 +1,33 @@ +From ec43e93b7e36e2baa6685da504b9db3ac7048ceb Mon Sep 17 00:00:00 2001 +From: Jonathan Bell <jonathan@raspberrypi.com> +Date: Fri, 16 Apr 2021 11:40:23 +0100 +Subject: [PATCH] sound/usb: call usb_autopm_get_interface() for + devices that should not be suspended + +Webcams with microphones are composite devices, and autosuspend is set +at the device level. If uvcvideo is probed after snd-usb-audio, the effect +of the quirk applied by snd-usb-audio is undone by uvcvideo's global +application of autosuspend. + +Incrementing the interface's PM refcount in such cases prevents runtime PM +from happening, thus the device is left active. + +Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> +--- + sound/usb/quirks.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/sound/usb/quirks.c ++++ b/sound/usb/quirks.c +@@ -531,6 +531,11 @@ static int setup_disable_autosuspend(str + struct usb_driver *driver, + const struct snd_usb_audio_quirk *quirk) + { ++ /* ++ * Grab the interface, because on a webcam uvcvideo may race ++ * with snd-usb-audio during probe and re-enable autosuspend. ++ */ ++ usb_autopm_get_interface(iface); + usb_disable_autosuspend(interface_to_usbdev(iface)); + return 1; /* Continue with creating streams and mixer */ + } |