aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2012-11-21 02:35:42 -0500
committerTakashi Iwai <tiwai@suse.de>2012-11-21 05:43:58 -0500
commitb0db6063dba4ee02dfda7411ec3aaf8f0fbda0f7 (patch)
treebf19151e8c414745c8df3684e2a71b12fdeec2ce
parentb2eb950de2f09435d5156f4dc6d5dbf284cd97f3 (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>
-rw-r--r--sound/usb/pcm.c4
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);