Powerpc 8xx CPM_UART too many interrupts
authorChristophe Leroy <christophe.leroy@c-s.fr>
Mon, 24 Sep 2012 06:19:03 +0000 (08:19 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 26 Sep 2012 20:39:39 +0000 (13:39 -0700)
Setting the fifo to only 1 byte generates one interrupt every 1ms at 9600 bauds.
This is too much. This patch reduces the threshold to speeds below 2400 bauds
like in the 8250 UART driver.

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Acked-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/cpm_uart/cpm_uart_core.c

index 46af6e4..46edc64 100644 (file)
@@ -71,7 +71,7 @@ static void cpm_uart_initbd(struct uart_cpm_port *pinfo);
 
 /**************************************************************/
 
-#define HW_BUF_SPD_THRESHOLD    9600
+#define HW_BUF_SPD_THRESHOLD    2400
 
 /*
  * Check, if transmit buffers are processed
@@ -505,7 +505,7 @@ static void cpm_uart_set_termios(struct uart_port *port,
        pr_debug("CPM uart[%d]:set_termios\n", port->line);
 
        baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk / 16);
-       if (baud <= HW_BUF_SPD_THRESHOLD ||
+       if (baud < HW_BUF_SPD_THRESHOLD ||
            (pinfo->port.state && pinfo->port.state->port.tty->low_latency))
                pinfo->rx_fifosize = 1;
        else