serial: imx: use Tx ready rather than Tx empty irq
authorSergey Organov <sorganov@gmail.com>
Wed, 28 Aug 2019 18:37:55 +0000 (21:37 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 Sep 2019 10:43:55 +0000 (12:43 +0200)
This should help to avoid unnecessary gaps in transmission while
adding little overhead due to low default Tx threshold level (2
bytes).

Signed-off-by: Sergey Organov <sorganov@gmail.com>
Link: https://lore.kernel.org/r/1567017475-11919-6-git-send-email-sorganov@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/imx.c

index e89045a..87c58f9 100644 (file)
@@ -439,7 +439,7 @@ static void imx_uart_stop_tx(struct uart_port *port)
                return;
 
        ucr1 = imx_uart_readl(sport, UCR1);
-       imx_uart_writel(sport, ucr1 & ~UCR1_TXMPTYEN, UCR1);
+       imx_uart_writel(sport, ucr1 & ~UCR1_TRDYEN, UCR1);
 
        /* in rs485 mode disable transmitter if shifter is empty */
        if (port->rs485.flags & SER_RS485_ENABLED &&
@@ -517,7 +517,7 @@ static inline void imx_uart_transmit_buffer(struct imx_port *sport)
                 * and the TX IRQ is disabled.
                 **/
                ucr1 = imx_uart_readl(sport, UCR1);
-               ucr1 &= ~UCR1_TXMPTYEN;
+               ucr1 &= ~UCR1_TRDYEN;
                if (sport->dma_is_txing) {
                        ucr1 |= UCR1_TXDMAEN;
                        imx_uart_writel(sport, ucr1, UCR1);
@@ -679,7 +679,7 @@ static void imx_uart_start_tx(struct uart_port *port)
 
        if (!sport->dma_is_enabled) {
                ucr1 = imx_uart_readl(sport, UCR1);
-               imx_uart_writel(sport, ucr1 | UCR1_TXMPTYEN, UCR1);
+               imx_uart_writel(sport, ucr1 | UCR1_TRDYEN, UCR1);
        }
 
        if (sport->dma_is_enabled) {
@@ -688,7 +688,7 @@ static void imx_uart_start_tx(struct uart_port *port)
                         * disable TX DMA to let TX interrupt to send X-char */
                        ucr1 = imx_uart_readl(sport, UCR1);
                        ucr1 &= ~UCR1_TXDMAEN;
-                       ucr1 |= UCR1_TXMPTYEN;
+                       ucr1 |= UCR1_TRDYEN;
                        imx_uart_writel(sport, ucr1, UCR1);
                        return;
                }
@@ -874,7 +874,7 @@ static irqreturn_t imx_uart_int(int irq, void *dev_id)
                usr1 &= ~USR1_RRDY;
        if ((ucr2 & UCR2_ATEN) == 0)
                usr1 &= ~USR1_AGTIM;
-       if ((ucr1 & UCR1_TXMPTYEN) == 0)
+       if ((ucr1 & UCR1_TRDYEN) == 0)
                usr1 &= ~USR1_TRDY;
        if ((ucr4 & UCR4_TCEN) == 0)
                usr2 &= ~USR2_TXDC;
@@ -1474,7 +1474,7 @@ static void imx_uart_shutdown(struct uart_port *port)
 
        spin_lock_irqsave(&sport->port.lock, flags);
        ucr1 = imx_uart_readl(sport, UCR1);
-       ucr1 &= ~(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_RTSDEN | UCR1_UARTEN | UCR1_RXDMAEN | UCR1_ATDMAEN);
+       ucr1 &= ~(UCR1_TRDYEN | UCR1_RRDYEN | UCR1_RTSDEN | UCR1_UARTEN | UCR1_RXDMAEN | UCR1_ATDMAEN);
 
        imx_uart_writel(sport, ucr1, UCR1);
        spin_unlock_irqrestore(&sport->port.lock, flags);
@@ -1778,7 +1778,7 @@ static int imx_uart_poll_init(struct uart_port *port)
                ucr1 |= IMX1_UCR1_UARTCLKEN;
 
        ucr1 |= UCR1_UARTEN;
-       ucr1 &= ~(UCR1_TXMPTYEN | UCR1_RTSDEN | UCR1_RRDYEN);
+       ucr1 &= ~(UCR1_TRDYEN | UCR1_RTSDEN | UCR1_RRDYEN);
 
        ucr2 |= UCR2_RXEN;
        ucr2 &= ~UCR2_ATEN;
@@ -1938,7 +1938,7 @@ imx_uart_console_write(struct console *co, const char *s, unsigned int count)
        if (imx_uart_is_imx1(sport))
                ucr1 |= IMX1_UCR1_UARTCLKEN;
        ucr1 |= UCR1_UARTEN;
-       ucr1 &= ~(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_RTSDEN);
+       ucr1 &= ~(UCR1_TRDYEN | UCR1_RRDYEN | UCR1_RTSDEN);
 
        imx_uart_writel(sport, ucr1, UCR1);
 
@@ -2294,7 +2294,7 @@ static int imx_uart_probe(struct platform_device *pdev)
        /* Disable interrupts before requesting them */
        ucr1 = imx_uart_readl(sport, UCR1);
        ucr1 &= ~(UCR1_ADEN | UCR1_TRDYEN | UCR1_IDEN | UCR1_RRDYEN |
-                UCR1_TXMPTYEN | UCR1_RTSDEN);
+                UCR1_TRDYEN | UCR1_RTSDEN);
        imx_uart_writel(sport, ucr1, UCR1);
 
        if (!imx_uart_is_imx1(sport) && sport->dte_mode) {