]> git.hungrycats.org Git - linux/commitdiff
serial: omap: fix software flow control
authorVikram Pandita <vikram.pandita@ti.com>
Thu, 6 Sep 2012 12:45:37 +0000 (15:45 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 7 Oct 2012 15:39:31 +0000 (08:39 -0700)
commit 957ee7270d632245b43f6feb0e70d9a5e9ea6cf6 upstream.

Software flow control register bits were not defined correctly.

Also clarify the IXON and IXOFF logic to reflect what userspace wants.

Tested-by: Shubhrajyoti D <shubhrajyoti@ti.com>
Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/arm/plat-omap/include/plat/omap-serial.h
drivers/tty/serial/omap-serial.c

index 1a52725ffcf25ca682f80c9d4004a0ce5411cfa4..3a5764494d474d42db16753eff37d0c33e9e11d9 100644 (file)
 #define OMAP_UART_WER_MOD_WKUP 0X7F
 
 /* Enable XON/XOFF flow control on output */
-#define OMAP_UART_SW_TX                0x04
+#define OMAP_UART_SW_TX                0x8
 
 /* Enable XON/XOFF flow control on input */
-#define OMAP_UART_SW_RX                0x04
+#define OMAP_UART_SW_RX                0x2
 
 #define OMAP_UART_SYSC_RESET   0X07
 #define OMAP_UART_TCR_TRIG     0X0F
index d3cda0cb2df0a9e2d7c4536c0d8638a9461abff7..22992cda572b9b2edd8fcac075485a1a33894e46 100644 (file)
@@ -667,19 +667,19 @@ serial_omap_configure_xonxoff
 
        /*
         * IXON Flag:
-        * Enable XON/XOFF flow control on output.
-        * Transmit XON1, XOFF1
+        * Flow control for OMAP.TX
+        * OMAP.RX should listen for XON/XOFF
         */
        if (termios->c_iflag & IXON)
-               up->efr |= OMAP_UART_SW_TX;
+               up->efr |= OMAP_UART_SW_RX;
 
        /*
         * IXOFF Flag:
-        * Enable XON/XOFF flow control on input.
-        * Receiver compares XON1, XOFF1.
+        * Flow control for OMAP.RX
+        * OMAP.TX should send XON/XOFF
         */
        if (termios->c_iflag & IXOFF)
-               up->efr |= OMAP_UART_SW_RX;
+               up->efr |= OMAP_UART_SW_TX;
 
        serial_out(up, UART_EFR, up->efr | UART_EFR_ECB);
        serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);