aboutsummaryrefslogtreecommitdiffstats
path: root/sound/drivers/mpu401
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2008-02-25 04:59:52 -0500
committerTakashi Iwai <tiwai@suse.de>2008-04-24 06:00:15 -0400
commitea6b5828cdbbedaf26b12ae64befbec18084ea3c (patch)
tree5a02e041c96c4ec34c574c90b8b094935c03dfb4 /sound/drivers/mpu401
parent47ba97f8fa01bb5b48e73b4b1271fbf1436a2d4b (diff)
[ALSA] mpu401: reduce tx loop timeout
Reduce the number of times to check for a non-empty Tx FIFO from 100 to 2 because there is no MPU-401 implementation that needs more than one or two reads to determine the actual FIFO status. Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Diffstat (limited to 'sound/drivers/mpu401')
-rw-r--r--sound/drivers/mpu401/mpu401_uart.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/sound/drivers/mpu401/mpu401_uart.c b/sound/drivers/mpu401/mpu401_uart.c
index 5993864acbd3..dd6ec4266732 100644
--- a/sound/drivers/mpu401/mpu401_uart.c
+++ b/sound/drivers/mpu401/mpu401_uart.c
@@ -425,16 +425,17 @@ static void snd_mpu401_uart_input_read(struct snd_mpu401 * mpu)
425static void snd_mpu401_uart_output_write(struct snd_mpu401 * mpu) 425static void snd_mpu401_uart_output_write(struct snd_mpu401 * mpu)
426{ 426{
427 unsigned char byte; 427 unsigned char byte;
428 int max = 256, timeout; 428 int max = 256;
429 429
430 do { 430 do {
431 if (snd_rawmidi_transmit_peek(mpu->substream_output, 431 if (snd_rawmidi_transmit_peek(mpu->substream_output,
432 &byte, 1) == 1) { 432 &byte, 1) == 1) {
433 for (timeout = 100; timeout > 0; timeout--) { 433 /*
434 if (snd_mpu401_output_ready(mpu)) 434 * Try twice because there is hardware that insists on
435 break; 435 * setting the output busy bit after each write.
436 } 436 */
437 if (timeout == 0) 437 if (!snd_mpu401_output_ready(mpu) &&
438 !snd_mpu401_output_ready(mpu))
438 break; /* Tx FIFO full - try again later */ 439 break; /* Tx FIFO full - try again later */
439 mpu->write(mpu, byte, MPU401D(mpu)); 440 mpu->write(mpu, byte, MPU401D(mpu));
440 snd_rawmidi_transmit_ack(mpu->substream_output, 1); 441 snd_rawmidi_transmit_ack(mpu->substream_output, 1);