|
@@ -515,12 +515,14 @@ static void cdns_uart_start_tx(struct uart_port *port)
|
|
|
if (uart_circ_empty(&port->state->xmit) || uart_tx_stopped(port))
|
|
|
return;
|
|
|
|
|
|
- status = readl(port->membase + CDNS_UART_CR_OFFSET);
|
|
|
- /* Set the TX enable bit and clear the TX disable bit to enable the
|
|
|
+ /*
|
|
|
+ * Set the TX enable bit and clear the TX disable bit to enable the
|
|
|
* transmitter.
|
|
|
*/
|
|
|
- writel((status & ~CDNS_UART_CR_TX_DIS) | CDNS_UART_CR_TX_EN,
|
|
|
- port->membase + CDNS_UART_CR_OFFSET);
|
|
|
+ status = readl(port->membase + CDNS_UART_CR_OFFSET);
|
|
|
+ status &= ~CDNS_UART_CR_TX_DIS;
|
|
|
+ status |= CDNS_UART_CR_TX_EN;
|
|
|
+ writel(status, port->membase + CDNS_UART_CR_OFFSET);
|
|
|
|
|
|
while (numbytes-- && ((readl(port->membase + CDNS_UART_SR_OFFSET) &
|
|
|
CDNS_UART_SR_TXFULL)) != CDNS_UART_SR_TXFULL) {
|
|
@@ -1123,8 +1125,9 @@ static void cdns_uart_console_write(struct console *co, const char *s,
|
|
|
* clear the TX disable bit to enable the transmitter.
|
|
|
*/
|
|
|
ctrl = readl(port->membase + CDNS_UART_CR_OFFSET);
|
|
|
- writel((ctrl & ~CDNS_UART_CR_TX_DIS) | CDNS_UART_CR_TX_EN,
|
|
|
- port->membase + CDNS_UART_CR_OFFSET);
|
|
|
+ ctrl &= ~CDNS_UART_CR_TX_DIS;
|
|
|
+ ctrl |= CDNS_UART_CR_TX_EN;
|
|
|
+ writel(ctrl, port->membase + CDNS_UART_CR_OFFSET);
|
|
|
|
|
|
uart_console_write(port, s, count, cdns_uart_console_putchar);
|
|
|
cdns_uart_console_wait_tx(port);
|