]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - sound/usb/card.c
Merge branch 'signal-cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/rw...
[karo-tx-linux.git] / sound / usb / card.c
index a09e5f3519e324eeadd28a7a144fdbdb35a44130..7ecd0e8a5c51ba435e590090a52259fe0be35561 100644 (file)
@@ -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;