diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/tty/serial/omap-serial.c | 13 |
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); |