|
@@ -339,7 +339,8 @@ static void atmel_stop_tx(struct uart_port *port)
|
|
|
/* Disable interrupts */
|
|
|
UART_PUT_IDR(port, atmel_port->tx_done_mask);
|
|
|
|
|
|
- if (atmel_port->rs485.flags & SER_RS485_ENABLED)
|
|
|
+ if ((atmel_port->rs485.flags & SER_RS485_ENABLED) &&
|
|
|
+ !(atmel_port->rs485.flags & SER_RS485_RX_DURING_TX))
|
|
|
atmel_start_rx(port);
|
|
|
}
|
|
|
|
|
@@ -356,7 +357,8 @@ static void atmel_start_tx(struct uart_port *port)
|
|
|
really need this.*/
|
|
|
return;
|
|
|
|
|
|
- if (atmel_port->rs485.flags & SER_RS485_ENABLED)
|
|
|
+ if ((atmel_port->rs485.flags & SER_RS485_ENABLED) &&
|
|
|
+ !(atmel_port->rs485.flags & SER_RS485_RX_DURING_TX))
|
|
|
atmel_stop_rx(port);
|
|
|
|
|
|
/* re-enable PDC transmit */
|
|
@@ -680,7 +682,8 @@ static void atmel_tx_dma(struct uart_port *port)
|
|
|
/* Enable interrupts */
|
|
|
UART_PUT_IER(port, atmel_port->tx_done_mask);
|
|
|
} else {
|
|
|
- if (atmel_port->rs485.flags & SER_RS485_ENABLED) {
|
|
|
+ if ((atmel_port->rs485.flags & SER_RS485_ENABLED) &&
|
|
|
+ !(atmel_port->rs485.flags & SER_RS485_RX_DURING_TX)) {
|
|
|
/* DMA done, stop TX, start RX for RS485 */
|
|
|
atmel_start_rx(port);
|
|
|
}
|