|
@@ -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++) {
|
|
|
|
- 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)
|
|
list_for_each_entry(mixer, &chip->mixer_list, list)
|
|
snd_usb_mixer_suspend(mixer);
|
|
snd_usb_mixer_suspend(mixer);
|
|
|
|
+ }
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|