|
@@ -73,6 +73,7 @@
|
|
|
#define AUART_CTRL0_CLKGATE (1 << 30)
|
|
|
|
|
|
#define AUART_CTRL2_CTSEN (1 << 15)
|
|
|
+#define AUART_CTRL2_RTSEN (1 << 14)
|
|
|
#define AUART_CTRL2_RTS (1 << 11)
|
|
|
#define AUART_CTRL2_RXE (1 << 9)
|
|
|
#define AUART_CTRL2_TXE (1 << 8)
|
|
@@ -259,9 +260,12 @@ static void mxs_auart_set_mctrl(struct uart_port *u, unsigned mctrl)
|
|
|
|
|
|
u32 ctrl = readl(u->membase + AUART_CTRL2);
|
|
|
|
|
|
- ctrl &= ~AUART_CTRL2_RTS;
|
|
|
- if (mctrl & TIOCM_RTS)
|
|
|
- ctrl |= AUART_CTRL2_RTS;
|
|
|
+ ctrl &= ~AUART_CTRL2_RTSEN;
|
|
|
+ if (mctrl & TIOCM_RTS) {
|
|
|
+ if (u->state->port.flags & ASYNC_CTS_FLOW)
|
|
|
+ ctrl |= AUART_CTRL2_RTSEN;
|
|
|
+ }
|
|
|
+
|
|
|
s->ctrl = mctrl;
|
|
|
writel(ctrl, u->membase + AUART_CTRL2);
|
|
|
}
|
|
@@ -359,9 +363,9 @@ static void mxs_auart_settermios(struct uart_port *u,
|
|
|
|
|
|
/* figure out the hardware flow control settings */
|
|
|
if (cflag & CRTSCTS)
|
|
|
- ctrl2 |= AUART_CTRL2_CTSEN;
|
|
|
+ ctrl2 |= AUART_CTRL2_CTSEN | AUART_CTRL2_RTSEN;
|
|
|
else
|
|
|
- ctrl2 &= ~AUART_CTRL2_CTSEN;
|
|
|
+ ctrl2 &= ~(AUART_CTRL2_CTSEN | AUART_CTRL2_RTSEN);
|
|
|
|
|
|
/* set baud rate */
|
|
|
baud = uart_get_baud_rate(u, termios, old, 0, u->uartclk);
|