diff options
Diffstat (limited to 'drivers/tty/serial/mxs-auart.c')
| -rw-r--r-- | drivers/tty/serial/mxs-auart.c | 14 | 
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c index 2e341b81ff8..3a667eed63d 100644 --- a/drivers/tty/serial/mxs-auart.c +++ b/drivers/tty/serial/mxs-auart.c @@ -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);  |