serial: 8250_omap: Remove auto-IXON flow control
authorPeter Hurley <peter@hurleysoftware.com>
Sat, 27 Jun 2015 13:28:55 +0000 (09:28 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 23 Jul 2015 22:24:12 +0000 (15:24 -0700)
OMAP h/w-assisted IXON flow control is borked. The transmitter becomes
stuck if XON is never received; clearing the fifos or resetting the
rx flow control bits has no effect.

Remove auto-IXANY as well, since without auto-IXON, it has no purpose.

Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_omap.c

index d9a3719..0340ee6 100644 (file)
@@ -447,12 +447,9 @@ static void omap_8250_set_termios(struct uart_port *port,
                priv->efr |= UART_EFR_CTS;
        } else  if (up->port.flags & UPF_SOFT_FLOW) {
                /*
-                * IXON Flag:
-                * Enable XON/XOFF flow control on input.
-                * Receiver compares XON1, XOFF1.
+                * OMAP rx s/w flow control is borked; the transmitter remains
+                * stuck off even if rx flow control is subsequently disabled
                 */
-               if (termios->c_iflag & IXON)
-                       priv->efr |= OMAP_UART_SW_RX;
 
                /*
                 * IXOFF Flag:
@@ -463,15 +460,6 @@ static void omap_8250_set_termios(struct uart_port *port,
                        up->port.status |= UPSTAT_AUTOXOFF;
                        priv->efr |= OMAP_UART_SW_TX;
                }
-
-               /*
-                * IXANY Flag:
-                * Enable any character to restart output.
-                * Operation resumes after receiving any
-                * character after recognition of the XOFF character
-                */
-               if (termios->c_iflag & IXANY)
-                       up->mcr |= UART_MCR_XONANY;
        }
        omap8250_restore_regs(up);