atmel_serial: fix hang in set_termios when crtscts is enabled
[pandora-kernel.git] / drivers / serial / atmel_serial.c
index b3497d7..338b15c 100644 (file)
@@ -1104,11 +1104,13 @@ static void atmel_set_termios(struct uart_port *port, struct ktermios *termios,
        /* update the per-port timeout */
        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);
        UART_PUT_IDR(port, -1);
-       while (!(UART_GET_CSR(port) & ATMEL_US_TXEMPTY))
-               cpu_relax();
 
        /* disable receiver and transmitter */
        UART_PUT_CR(port, ATMEL_US_TXDIS | ATMEL_US_RXDIS);