diff options
-rw-r--r-- | drivers/tty/serial/atmel_serial.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c index 11c0117af80b..fabbe76203bb 100644 --- a/drivers/tty/serial/atmel_serial.c +++ b/drivers/tty/serial/atmel_serial.c | |||
@@ -481,6 +481,14 @@ static void atmel_stop_tx(struct uart_port *port) | |||
481 | /* disable PDC transmit */ | 481 | /* disable PDC transmit */ |
482 | atmel_uart_writel(port, ATMEL_PDC_PTCR, ATMEL_PDC_TXTDIS); | 482 | atmel_uart_writel(port, ATMEL_PDC_PTCR, ATMEL_PDC_TXTDIS); |
483 | } | 483 | } |
484 | |||
485 | /* | ||
486 | * Disable the transmitter. | ||
487 | * This is mandatory when DMA is used, otherwise the DMA buffer | ||
488 | * is fully transmitted. | ||
489 | */ | ||
490 | atmel_uart_writel(port, ATMEL_US_CR, ATMEL_US_TXDIS); | ||
491 | |||
484 | /* Disable interrupts */ | 492 | /* Disable interrupts */ |
485 | atmel_uart_writel(port, ATMEL_US_IDR, atmel_port->tx_done_mask); | 493 | atmel_uart_writel(port, ATMEL_US_IDR, atmel_port->tx_done_mask); |
486 | 494 | ||
@@ -513,6 +521,9 @@ static void atmel_start_tx(struct uart_port *port) | |||
513 | 521 | ||
514 | /* Enable interrupts */ | 522 | /* Enable interrupts */ |
515 | atmel_uart_writel(port, ATMEL_US_IER, atmel_port->tx_done_mask); | 523 | atmel_uart_writel(port, ATMEL_US_IER, atmel_port->tx_done_mask); |
524 | |||
525 | /* re-enable the transmitter */ | ||
526 | atmel_uart_writel(port, ATMEL_US_CR, ATMEL_US_TXEN); | ||
516 | } | 527 | } |
517 | 528 | ||
518 | /* | 529 | /* |