|
@@ -809,6 +809,7 @@ static int usb_audio_suspend(struct usb_interface *intf, pm_message_t message)
|
|
|
if (!chip->num_suspended_intf++) {
|
|
|
list_for_each_entry(as, &chip->pcm_list, list) {
|
|
|
snd_pcm_suspend_all(as->pcm);
|
|
|
+ snd_usb_pcm_suspend(as);
|
|
|
as->substream[0].need_setup_ep =
|
|
|
as->substream[1].need_setup_ep = true;
|
|
|
}
|
|
@@ -824,6 +825,7 @@ static int usb_audio_suspend(struct usb_interface *intf, pm_message_t message)
|
|
|
static int __usb_audio_resume(struct usb_interface *intf, bool reset_resume)
|
|
|
{
|
|
|
struct snd_usb_audio *chip = usb_get_intfdata(intf);
|
|
|
+ struct snd_usb_stream *as;
|
|
|
struct usb_mixer_interface *mixer;
|
|
|
struct list_head *p;
|
|
|
int err = 0;
|
|
@@ -834,6 +836,13 @@ static int __usb_audio_resume(struct usb_interface *intf, bool reset_resume)
|
|
|
return 0;
|
|
|
|
|
|
atomic_inc(&chip->active); /* avoid autopm */
|
|
|
+
|
|
|
+ list_for_each_entry(as, &chip->pcm_list, list) {
|
|
|
+ err = snd_usb_pcm_resume(as);
|
|
|
+ if (err < 0)
|
|
|
+ goto err_out;
|
|
|
+ }
|
|
|
+
|
|
|
/*
|
|
|
* ALSA leaves material resumption to user space
|
|
|
* we just notify and restart the mixers
|