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 168b10cad47b..f9d42de5ab2d 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 | /* |
