]> err.no Git - linux-2.6/commitdiff
[ALSA] mpu401: reduce tx loop timeout
authorClemens Ladisch <clemens@ladisch.de>
Mon, 25 Feb 2008 09:59:52 +0000 (10:59 +0100)
committerTakashi Iwai <tiwai@suse.de>
Thu, 24 Apr 2008 10:00:15 +0000 (12:00 +0200)
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>
sound/drivers/mpu401/mpu401_uart.c

index 5993864acbd38ee163c9de45eb205455a5ea1df2..dd6ec4266732b168e4af30d415436b4bea3b7de3 100644 (file)
@@ -425,16 +425,17 @@ static void snd_mpu401_uart_input_read(struct snd_mpu401 * mpu)
 static void snd_mpu401_uart_output_write(struct snd_mpu401 * mpu)
 {
        unsigned char byte;
-       int max = 256, timeout;
+       int max = 256;
 
        do {
                if (snd_rawmidi_transmit_peek(mpu->substream_output,
                                              &byte, 1) == 1) {
-                       for (timeout = 100; timeout > 0; timeout--) {
-                               if (snd_mpu401_output_ready(mpu))
-                                       break;
-                       }
-                       if (timeout == 0)
+                       /*
+                        * Try twice because there is hardware that insists on
+                        * setting the output busy bit after each write.
+                        */
+                       if (!snd_mpu401_output_ready(mpu) &&
+                           !snd_mpu401_output_ready(mpu))
                                break;  /* Tx FIFO full - try again later */
                        mpu->write(mpu, byte, MPU401D(mpu));
                        snd_rawmidi_transmit_ack(mpu->substream_output, 1);