SERIAL: omap: move xon/xoff setting earlier
authorRussell King <rmk+kernel@arm.linux.org.uk>
Sat, 6 Oct 2012 08:34:36 +0000 (09:34 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 4 Nov 2012 12:29:34 +0000 (12:29 +0000)
Take advantage of the switch to mode B for accessing the TCR register,
and move the xon/xoff configuration there.  This allows further
simplication of this sequence.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
drivers/tty/serial/omap-serial.c

index 7180ffc847e8904afe5cca76017ad85254c63707..0d2671e66da48c4e91200ca33d72df7216c08d34 100644 (file)
@@ -898,16 +898,20 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
        else
                serial_out(up, UART_OMAP_MDR1, up->mdr1);
 
-       /* Enable access to TCR/TLR */
+       /* Configure flow control */
        serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
+
+       /* XON1/XOFF1 accessible mode B, TCRTLR=0, ECB=0 */
+       serial_out(up, UART_XON1, termios->c_cc[VSTART]);
+       serial_out(up, UART_XOFF1, termios->c_cc[VSTOP]);
+
+       /* Enable access to TCR/TLR */
        serial_out(up, UART_EFR, up->efr | UART_EFR_ECB);
        serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);
        serial_out(up, UART_MCR, up->mcr | UART_MCR_TCRTLR);
 
        serial_out(up, UART_TI752_TCR, OMAP_UART_TCR_TRIG);
 
-       /* Hardware Flow Control Configuration */
-
        if (termios->c_cflag & CRTSCTS && up->port.flags & UPF_HARD_FLOW) {
                /* Enable AUTORTS and AUTOCTS */
                up->efr |= UART_EFR_CTS | UART_EFR_RTS;
@@ -925,9 +929,6 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
                serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
                serial_out(up, UART_EFR, up->efr);
 
-               serial_out(up, UART_XON1, termios->c_cc[VSTART]);
-               serial_out(up, UART_XOFF1, termios->c_cc[VSTOP]);
-
                /* clear SW control mode bits */
                up->efr &= OMAP_UART_SW_CLR;