Since commit 18dfef9c7f87 ("serial: atmel: convert to irq handling
provided mctrl-gpio"), the GPIOs interrupts are handled by
mctrl_gpio_irq_handle().
So, atmel_get_lines_status() can be completely killed and replaced by :
atmel_uart_readl(port, ATMEL_US_CSR);

Suggested-by: Uwe Kleine-König <u.kleine-koe...@pengutronix.de>
Acked-by: Uwe Kleine-König <u.kleine-koe...@pengutronix.de>
Signed-off-by: Richard Genoud <richard.gen...@gmail.com>
---
 drivers/tty/serial/atmel_serial.c | 48 ++-----------------------------
 1 file changed, 2 insertions(+), 46 deletions(-)

Changes from v1:
 - point out the right commit (thx Uwe)
 - add Suggested-by/Acked-by

diff --git a/drivers/tty/serial/atmel_serial.c 
b/drivers/tty/serial/atmel_serial.c
index 9a54c9e6d36e..a8dc8af83f39 100644
--- a/drivers/tty/serial/atmel_serial.c
+++ b/drivers/tty/serial/atmel_serial.c
@@ -294,50 +294,6 @@ static void atmel_tasklet_schedule(struct atmel_uart_port 
*atmel_port,
                tasklet_schedule(t);
 }
 
-static unsigned int atmel_get_lines_status(struct uart_port *port)
-{
-       struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
-       unsigned int status, ret = 0;
-
-       status = atmel_uart_readl(port, ATMEL_US_CSR);
-
-       mctrl_gpio_get(atmel_port->gpios, &ret);
-
-       if (!IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(atmel_port->gpios,
-                                               UART_GPIO_CTS))) {
-               if (ret & TIOCM_CTS)
-                       status &= ~ATMEL_US_CTS;
-               else
-                       status |= ATMEL_US_CTS;
-       }
-
-       if (!IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(atmel_port->gpios,
-                                               UART_GPIO_DSR))) {
-               if (ret & TIOCM_DSR)
-                       status &= ~ATMEL_US_DSR;
-               else
-                       status |= ATMEL_US_DSR;
-       }
-
-       if (!IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(atmel_port->gpios,
-                                               UART_GPIO_RI))) {
-               if (ret & TIOCM_RI)
-                       status &= ~ATMEL_US_RI;
-               else
-                       status |= ATMEL_US_RI;
-       }
-
-       if (!IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(atmel_port->gpios,
-                                               UART_GPIO_DCD))) {
-               if (ret & TIOCM_CD)
-                       status &= ~ATMEL_US_DCD;
-               else
-                       status |= ATMEL_US_DCD;
-       }
-
-       return status;
-}
-
 /* Enable or disable the rs485 support */
 static int atmel_config_rs485(struct uart_port *port,
                              struct serial_rs485 *rs485conf)
@@ -1453,7 +1409,7 @@ static irqreturn_t atmel_interrupt(int irq, void *dev_id)
        spin_lock(&atmel_port->lock_suspended);
 
        do {
-               status = atmel_get_lines_status(port);
+               status = atmel_uart_readl(port, ATMEL_US_CSR);
                mask = atmel_uart_readl(port, ATMEL_US_IMR);
                pending = status & mask;
                if (!pending)
@@ -2002,7 +1958,7 @@ static int atmel_startup(struct uart_port *port)
        }
 
        /* Save current CSR for comparison in atmel_tasklet_func() */
-       atmel_port->irq_status_prev = atmel_get_lines_status(port);
+       atmel_port->irq_status_prev = atmel_uart_readl(port, ATMEL_US_CSR);
 
        /*
         * Finally, enable the serial port

Reply via email to