serial: omap: fix software flow control

Software flow control register bits were not defined correctly.

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

Cc: stable@vger.kernel.org
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>
This commit is contained in:
Vikram Pandita
2012-09-06 15:45:37 +03:00
committed by Greg Kroah-Hartman
parent a6b19c333c
commit 957ee7270d
2 changed files with 8 additions and 8 deletions

View File

@@ -42,10 +42,10 @@
#define OMAP_UART_WER_MOD_WKUP 0X7F #define OMAP_UART_WER_MOD_WKUP 0X7F
/* Enable XON/XOFF flow control on output */ /* 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 */ /* 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_SYSC_RESET 0X07
#define OMAP_UART_TCR_TRIG 0X0F #define OMAP_UART_TCR_TRIG 0X0F

View File

@@ -617,19 +617,19 @@ serial_omap_configure_xonxoff
/* /*
* IXON Flag: * IXON Flag:
* Enable XON/XOFF flow control on output. * Flow control for OMAP.TX
* Transmit XON1, XOFF1 * OMAP.RX should listen for XON/XOFF
*/ */
if (termios->c_iflag & IXON) if (termios->c_iflag & IXON)
up->efr |= OMAP_UART_SW_TX; up->efr |= OMAP_UART_SW_RX;
/* /*
* IXOFF Flag: * IXOFF Flag:
* Enable XON/XOFF flow control on input. * Flow control for OMAP.RX
* Receiver compares XON1, XOFF1. * OMAP.TX should send XON/XOFF
*/ */
if (termios->c_iflag & IXOFF) 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_EFR, up->efr | UART_EFR_ECB);
serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A); serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);