|
@@ -680,6 +680,7 @@ static int usb_audio_suspend(struct usb_interface *intf, pm_message_t message)
|
|
|
struct snd_usb_audio *chip = usb_get_intfdata(intf);
|
|
|
struct snd_usb_stream *as;
|
|
|
struct usb_mixer_interface *mixer;
|
|
|
+ struct list_head *p;
|
|
|
|
|
|
if (chip == (void *)-1L)
|
|
|
return 0;
|
|
@@ -692,6 +693,9 @@ static int usb_audio_suspend(struct usb_interface *intf, pm_message_t message)
|
|
|
as->substream[0].need_setup_ep =
|
|
|
as->substream[1].need_setup_ep = true;
|
|
|
}
|
|
|
+ list_for_each(p, &chip->midi_list) {
|
|
|
+ snd_usbmidi_suspend(p);
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
/*
|
|
@@ -713,6 +717,7 @@ static int __usb_audio_resume(struct usb_interface *intf, bool reset_resume)
|
|
|
{
|
|
|
struct snd_usb_audio *chip = usb_get_intfdata(intf);
|
|
|
struct usb_mixer_interface *mixer;
|
|
|
+ struct list_head *p;
|
|
|
int err = 0;
|
|
|
|
|
|
if (chip == (void *)-1L)
|
|
@@ -731,6 +736,10 @@ static int __usb_audio_resume(struct usb_interface *intf, bool reset_resume)
|
|
|
goto err_out;
|
|
|
}
|
|
|
|
|
|
+ list_for_each(p, &chip->midi_list) {
|
|
|
+ snd_usbmidi_resume(p);
|
|
|
+ }
|
|
|
+
|
|
|
if (!chip->autosuspended)
|
|
|
snd_power_change_state(chip->card, SNDRV_CTL_POWER_D0);
|
|
|
chip->autosuspended = 0;
|