summaryrefslogtreecommitdiffstats
path: root/sound/usb/card.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2014-05-02 18:14:42 +0200
committerTakashi Iwai <tiwai@suse.de>2014-05-02 18:14:42 +0200
commit1c53e7253ed8769a00afa0f06777d731dbe1ba6f (patch)
tree63d9f275184d0ccd6d2be62d92b6e8d7c2e670f8 /sound/usb/card.c
parentALSA: usb-audio: Prevent printk ratelimiting from spamming kernel log while D... (diff)
downloadlinux-1c53e7253ed8769a00afa0f06777d731dbe1ba6f.tar.xz
linux-1c53e7253ed8769a00afa0f06777d731dbe1ba6f.zip
ALSA: usb-audio: Save mixer status only once at suspend
The suspend callback of usb-audio driver may be called multiple times per suspend when multiple USB interfaces are bound to a single sound card instance. In such a case, it's superfluous to save the mixer values multiple times. This patch fixes it by checking the counter. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/usb/card.c')
-rw-r--r--sound/usb/card.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sound/usb/card.c b/sound/usb/card.c
index 893d5a1afc3c..e769d3977716 100644
--- a/sound/usb/card.c
+++ b/sound/usb/card.c
@@ -695,8 +695,9 @@ static int usb_audio_suspend(struct usb_interface *intf, pm_message_t message)
chip->autosuspended = 1;
}
- list_for_each_entry(mixer, &chip->mixer_list, list)
- snd_usb_mixer_suspend(mixer);
+ if (chip->num_suspended_intf == 1)
+ list_for_each_entry(mixer, &chip->mixer_list, list)
+ snd_usb_mixer_suspend(mixer);
return 0;
}