SERIAL: omap: allow hardware assisted rts/cts modes to be disabled
authorRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 5 Oct 2012 22:48:28 +0000 (23:48 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 4 Nov 2012 11:25:57 +0000 (11:25 +0000)
There is nothing which clears the auto RTS/CTS bits, so once hardware
flow control gets enabled, there's no possibility to disable it.
So, clear these bits when CRTSCTS is cleared.

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

index 6d3d26a..b6a1925 100644 (file)
@@ -921,6 +921,13 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
                serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);
                serial_out(up, UART_MCR, up->mcr | UART_MCR_RTS);
                serial_out(up, UART_LCR, cval);
+       } else {
+               /* Disable AUTORTS and AUTOCTS */
+               up->efr &= ~(UART_EFR_CTS | UART_EFR_RTS);
+
+               serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
+               serial_out(up, UART_EFR, up->efr);
+               serial_out(up, UART_LCR, cval);
        }
 
        serial_omap_set_mctrl(&up->port, up->port.mctrl);