diff options
author | Takashi Iwai <tiwai@suse.de> | 2012-11-21 02:35:42 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2012-11-21 05:43:58 -0500 |
commit | b0db6063dba4ee02dfda7411ec3aaf8f0fbda0f7 (patch) | |
tree | bf19151e8c414745c8df3684e2a71b12fdeec2ce /sound/usb | |
parent | b2eb950de2f09435d5156f4dc6d5dbf284cd97f3 (diff) |
ALSA: usb-audio: process pending stop at PCM hw_free and close
PCM hw_free and close should wait until all the pending stop
operations have been finished. Basically only PCM trigger callback
should use non-wait calls.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/usb')
-rw-r--r-- | sound/usb/pcm.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c index 4750d3d5c0c..bc3c9acc68b 100644 --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c | |||
@@ -446,7 +446,7 @@ static int configure_endpoint(struct snd_usb_substream *subs) | |||
446 | int ret; | 446 | int ret; |
447 | 447 | ||
448 | /* format changed */ | 448 | /* format changed */ |
449 | stop_endpoints(subs, false); | 449 | stop_endpoints(subs, true); |
450 | ret = snd_usb_endpoint_set_params(subs->data_endpoint, | 450 | ret = snd_usb_endpoint_set_params(subs->data_endpoint, |
451 | subs->pcm_format, | 451 | subs->pcm_format, |
452 | subs->channels, | 452 | subs->channels, |
@@ -1012,7 +1012,7 @@ static int snd_usb_pcm_close(struct snd_pcm_substream *substream, int direction) | |||
1012 | struct snd_usb_stream *as = snd_pcm_substream_chip(substream); | 1012 | struct snd_usb_stream *as = snd_pcm_substream_chip(substream); |
1013 | struct snd_usb_substream *subs = &as->substream[direction]; | 1013 | struct snd_usb_substream *subs = &as->substream[direction]; |
1014 | 1014 | ||
1015 | stop_endpoints(subs, false); | 1015 | stop_endpoints(subs, true); |
1016 | 1016 | ||
1017 | if (!as->chip->shutdown && subs->interface >= 0) { | 1017 | if (!as->chip->shutdown && subs->interface >= 0) { |
1018 | usb_set_interface(subs->dev, subs->interface, 0); | 1018 | usb_set_interface(subs->dev, subs->interface, 0); |