aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/tty/serial
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/tty/serial')
-rw-r--r--drivers/tty/serial/omap-serial.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
index 4888bd1ab322..6d588e20c648 100644
--- a/drivers/tty/serial/omap-serial.c
+++ b/drivers/tty/serial/omap-serial.c
@@ -912,8 +912,11 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
912 /* Enable AUTORTS and AUTOCTS */ 912 /* Enable AUTORTS and AUTOCTS */
913 up->efr |= UART_EFR_CTS | UART_EFR_RTS; 913 up->efr |= UART_EFR_CTS | UART_EFR_RTS;
914 914
915 /* Ensure MCR RTS is asserted */
916 up->mcr |= UART_MCR_RTS;
917
915 /* Disable access to TCR/TLR */ 918 /* Disable access to TCR/TLR */
916 serial_out(up, UART_MCR, up->mcr | UART_MCR_RTS); 919 serial_out(up, UART_MCR, up->mcr);
917 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B); 920 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
918 serial_out(up, UART_EFR, up->efr); 921 serial_out(up, UART_EFR, up->efr);
919 serial_out(up, UART_LCR, cval); 922 serial_out(up, UART_LCR, cval);
@@ -928,10 +931,8 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
928 931
929 /* Software Flow Control Configuration */ 932 /* Software Flow Control Configuration */
930 if (up->port.flags & UPF_SOFT_FLOW) { 933 if (up->port.flags & UPF_SOFT_FLOW) {
931 up->lcr = serial_in(up, UART_LCR);
932 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B); 934 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
933 up->efr = serial_in(up, UART_EFR); 935 serial_out(up, UART_EFR, up->efr);
934 serial_out(up, UART_EFR, up->efr & ~UART_EFR_ECB);
935 936
936 serial_out(up, UART_XON1, termios->c_cc[VSTART]); 937 serial_out(up, UART_XON1, termios->c_cc[VSTART]);
937 serial_out(up, UART_XOFF1, termios->c_cc[VSTOP]); 938 serial_out(up, UART_XOFF1, termios->c_cc[VSTOP]);
@@ -958,8 +959,6 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
958 serial_out(up, UART_EFR, up->efr | UART_EFR_ECB); 959 serial_out(up, UART_EFR, up->efr | UART_EFR_ECB);
959 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A); 960 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);
960 961
961 up->mcr = serial_in(up, UART_MCR);
962
963 /* 962 /*
964 * IXANY Flag: 963 * IXANY Flag:
965 * Enable any character to restart output. 964 * Enable any character to restart output.
@@ -975,7 +974,7 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
975 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B); 974 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
976 serial_out(up, UART_TI752_TCR, OMAP_UART_TCR_TRIG); 975 serial_out(up, UART_TI752_TCR, OMAP_UART_TCR_TRIG);
977 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A); 976 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_A);
978 serial_out(up, UART_MCR, up->mcr & ~UART_MCR_TCRTLR); 977 serial_out(up, UART_MCR, up->mcr);
979 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B); 978 serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
980 serial_out(up, UART_EFR, up->efr); 979 serial_out(up, UART_EFR, up->efr);
981 serial_out(up, UART_LCR, up->lcr); 980 serial_out(up, UART_LCR, up->lcr);