linux-stable/drivers/staging/line6
Stefan Hajnoczi 665f3f506b staging: line6: wait for urbs in snd_line6_prepare()
The .trigger() pcm callbacks are not allowed to block and cannot wait
until urbs have completed.  We need to ensure that stopping, preparing,
and then restarting a stream always works.

Currently the driver will sometimes return -EBUSY when restarting the
stream because urbs have not completed yet.  This can be triggered by
jackd from userspace.

The solution is to wait on urbs in the .prepare() pcm callback since
blocking is allowed in that callback.  This guarantees that all urbs are
quiesced and ready to be submitted when the start trigger callback is
invoked.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: Markus Grabner <grabner@icg.tugraz.at>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-12-09 19:26:09 -08:00
..
audio.c staging: Add export.h for THIS_MODULE/EXPORT_SYMBOL to drivers/staging users. 2011-10-31 19:32:08 -04:00
audio.h Staging: line6: another upstream sync 2010-08-31 15:28:16 -07:00
capture.c staging: line6: fix memory leak in .hw_params() 2011-12-09 19:26:09 -08:00
capture.h Staging: line6: another upstream sync 2010-08-31 15:28:16 -07:00
config.h Staging: line6: minor coding style cleanups 2010-09-21 16:58:00 -07:00
control.c Staging: line6: fix up my fixup for some sysfs attribute permissions 2010-11-18 11:27:20 -08:00
control.h Staging: line6: another upstream sync 2010-08-31 15:28:16 -07:00
driver.c staging/line6: refactor device information and add POD HD 500 2011-12-08 12:33:49 -08:00
driver.h staging/line6: refactor device information and add POD HD 500 2011-12-08 12:33:49 -08:00
dumprequest.c Staging: line6: another upstream sync 2010-08-31 15:28:16 -07:00
dumprequest.h Staging: line6: another upstream sync 2010-08-31 15:28:16 -07:00
Kconfig
Makefile staging: line6: add Pod HD300 support 2011-11-26 16:14:11 -08:00
midi.c staging/line6: refactor device information and add POD HD 500 2011-12-08 12:33:49 -08:00
midi.h Staging: line6/midi.c: Fixed call of obsolete function strict_strtoul 2011-12-08 12:32:55 -08:00
midibuf.c Staging: line6: another upstream sync 2010-08-31 15:28:16 -07:00
midibuf.h Staging: line6: another upstream sync 2010-08-31 15:28:16 -07:00
pcm.c staging: line6: wait for urbs in snd_line6_prepare() 2011-12-09 19:26:09 -08:00
pcm.h staging: line6: eliminate useless index_out variable 2011-12-09 19:26:09 -08:00
playback.c staging: line6: eliminate useless index_out variable 2011-12-09 19:26:09 -08:00
playback.h Staging: line6: minor coding style cleanups 2010-09-21 16:58:00 -07:00
pod.c staging: line6: eliminate useless NULL checks 2011-12-09 19:26:09 -08:00
pod.h Staging: line6: another upstream sync 2010-08-31 15:28:16 -07:00
podhd.c staging: line6: eliminate useless NULL checks 2011-12-09 19:26:09 -08:00
podhd.h staging: line6: add Pod HD300 support 2011-11-26 16:14:11 -08:00
revision.h Staging: line6: workaround for null pointer bug 2010-09-20 17:04:35 -07:00
toneport.c staging: line6: eliminate useless NULL checks 2011-12-09 19:26:09 -08:00
toneport.h Staging: line6: another upstream sync 2010-08-31 15:28:16 -07:00
usbdefs.h staging/line6: refactor device information and add POD HD 500 2011-12-08 12:33:49 -08:00
variax.c staging: line6: eliminate useless NULL checks 2011-12-09 19:26:09 -08:00
variax.h Staging: line6: another upstream sync 2010-08-31 15:28:16 -07:00