Commit 0662292a authored by Takashi Iwai's avatar Takashi Iwai

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: default avatarTakashi Iwai <tiwai@suse.de>
parent a6da499b
...@@ -689,30 +689,20 @@ static int usb_audio_suspend(struct usb_interface *intf, pm_message_t message) ...@@ -689,30 +689,20 @@ static int usb_audio_suspend(struct usb_interface *intf, pm_message_t message)
if (chip == (void *)-1L) if (chip == (void *)-1L)
return 0; 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); snd_power_change_state(chip->card, SNDRV_CTL_POWER_D3hot);
if (!chip->num_suspended_intf++) { if (!chip->num_suspended_intf++) {
list_for_each_entry(as, &chip->pcm_list, list) { list_for_each_entry(as, &chip->pcm_list, list) {
snd_pcm_suspend_all(as->pcm); snd_pcm_suspend_all(as->pcm);
as->substream[0].need_setup_ep = as->substream[0].need_setup_ep =
as->substream[1].need_setup_ep = true; as->substream[1].need_setup_ep = true;
}
list_for_each(p, &chip->midi_list) {
snd_usbmidi_suspend(p);
}
} }
} else { list_for_each(p, &chip->midi_list)
/* snd_usbmidi_suspend(p);
* 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_entry(mixer, &chip->mixer_list, list) list_for_each_entry(mixer, &chip->mixer_list, list)
snd_usb_mixer_suspend(mixer); snd_usb_mixer_suspend(mixer);
}
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment