summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/tty/serial/imx.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
index 059ba354d17e..d9a73c7683ea 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -402,17 +402,6 @@ static void imx_uart_rts_inactive(struct imx_port *sport, u32 *ucr2)
402 mctrl_gpio_set(sport->gpios, sport->port.mctrl); 402 mctrl_gpio_set(sport->gpios, sport->port.mctrl);
403} 403}
404 404
405/* called with port.lock taken and irqs caller dependent */
406static void imx_uart_rts_auto(struct imx_port *sport, u32 *ucr2)
407{
408 /*
409 * Only let receiver control RTS output if we were not requested to have
410 * RTS inactive (which then should take precedence).
411 */
412 if (*ucr2 & UCR2_CTS)
413 *ucr2 |= UCR2_CTSC;
414}
415
416/* called with port.lock taken and irqs off */ 405/* called with port.lock taken and irqs off */
417static void imx_uart_start_rx(struct uart_port *port) 406static void imx_uart_start_rx(struct uart_port *port)
418{ 407{
@@ -1604,8 +1593,14 @@ imx_uart_set_termios(struct uart_port *port, struct ktermios *termios,
1604 else 1593 else
1605 imx_uart_rts_inactive(sport, &ucr2); 1594 imx_uart_rts_inactive(sport, &ucr2);
1606 1595
1607 } else if (termios->c_cflag & CRTSCTS) 1596 } else if (termios->c_cflag & CRTSCTS) {
1608 imx_uart_rts_auto(sport, &ucr2); 1597 /*
1598 * Only let receiver control RTS output if we were not requested
1599 * to have RTS inactive (which then should take precedence).
1600 */
1601 if (ucr2 & UCR2_CTS)
1602 ucr2 |= UCR2_CTSC;
1603 }
1609 1604
1610 if (termios->c_cflag & CRTSCTS) 1605 if (termios->c_cflag & CRTSCTS)
1611 ucr2 &= ~UCR2_IRTS; 1606 ucr2 &= ~UCR2_IRTS;