Skip to content

Commit

Permalink
atmel_serial: Drain console TX shifter before suspending
Browse files Browse the repository at this point in the history
Funny things may happen if we stop the USART clock before the shifter is
empty. Prevent this from happening by waiting until the shifter is
completely drained before allowing suspend to continue.

Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
Cc: Andrew Victor <linux@maxim.org.za>
  • Loading branch information
Haavard Skinnemoen committed Jul 2, 2008
1 parent f826caa commit e1c609e
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions drivers/serial/atmel_serial.c
Original file line number Diff line number Diff line change
Expand Up @@ -1454,6 +1454,12 @@ static int atmel_serial_suspend(struct platform_device *pdev,
struct uart_port *port = platform_get_drvdata(pdev);
struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);

if (atmel_is_console_port(port) && console_suspend_enabled) {
/* Drain the TX shifter */
while (!(UART_GET_CSR(port) & ATMEL_US_TXEMPTY))
cpu_relax();
}

if (device_may_wakeup(&pdev->dev)
&& !atmel_serial_clk_will_stop())
enable_irq_wake(port->irq);
Expand Down

0 comments on commit e1c609e

Please sign in to comment.