|
@@ -1104,11 +1104,13 @@ static void atmel_set_termios(struct uart_port *port, struct ktermios *termios,
|
|
/* update the per-port timeout */
|
|
/* update the per-port timeout */
|
|
uart_update_timeout(port, termios->c_cflag, baud);
|
|
uart_update_timeout(port, termios->c_cflag, baud);
|
|
|
|
|
|
- /* save/disable interrupts and drain transmitter */
|
|
|
|
|
|
+ /*
|
|
|
|
+ * save/disable interrupts. The tty layer will ensure that the
|
|
|
|
+ * transmitter is empty if requested by the caller, so there's
|
|
|
|
+ * no need to wait for it here.
|
|
|
|
+ */
|
|
imr = UART_GET_IMR(port);
|
|
imr = UART_GET_IMR(port);
|
|
UART_PUT_IDR(port, -1);
|
|
UART_PUT_IDR(port, -1);
|
|
- while (!(UART_GET_CSR(port) & ATMEL_US_TXEMPTY))
|
|
|
|
- cpu_relax();
|
|
|
|
|
|
|
|
/* disable receiver and transmitter */
|
|
/* disable receiver and transmitter */
|
|
UART_PUT_CR(port, ATMEL_US_TXDIS | ATMEL_US_RXDIS);
|
|
UART_PUT_CR(port, ATMEL_US_TXDIS | ATMEL_US_RXDIS);
|