ALSA: usb-audio: Handle normal and auto-suspend equally
In theory, the device may get suspended even at runtime PM suspend. Currently we don't save the mixer state for autopm, and it may bring inconsistency. This patch removes the special handling for autosuspend. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
a6da499b76
commit
0662292aec
1 changed files with 10 additions and 20 deletions
|
@ -689,30 +689,20 @@ static int usb_audio_suspend(struct usb_interface *intf, pm_message_t message)
|
|||
if (chip == (void *)-1L)
|
||||
return 0;
|
||||
|
||||
if (!PMSG_IS_AUTO(message)) {
|
||||
chip->autosuspended = !!PMSG_IS_AUTO(message);
|
||||
if (!chip->autosuspended)
|
||||
snd_power_change_state(chip->card, SNDRV_CTL_POWER_D3hot);
|
||||
if (!chip->num_suspended_intf++) {
|
||||
list_for_each_entry(as, &chip->pcm_list, list) {
|
||||
snd_pcm_suspend_all(as->pcm);
|
||||
as->substream[0].need_setup_ep =
|
||||
as->substream[1].need_setup_ep = true;
|
||||
}
|
||||
list_for_each(p, &chip->midi_list) {
|
||||
snd_usbmidi_suspend(p);
|
||||
}
|
||||
if (!chip->num_suspended_intf++) {
|
||||
list_for_each_entry(as, &chip->pcm_list, list) {
|
||||
snd_pcm_suspend_all(as->pcm);
|
||||
as->substream[0].need_setup_ep =
|
||||
as->substream[1].need_setup_ep = true;
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* otherwise we keep the rest of the system in the dark
|
||||
* to keep this transparent
|
||||
*/
|
||||
if (!chip->num_suspended_intf++)
|
||||
chip->autosuspended = 1;
|
||||
}
|
||||
|
||||
if (chip->num_suspended_intf == 1)
|
||||
list_for_each(p, &chip->midi_list)
|
||||
snd_usbmidi_suspend(p);
|
||||
list_for_each_entry(mixer, &chip->mixer_list, list)
|
||||
snd_usb_mixer_suspend(mixer);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue