Linux 6.6.15-rt22
[platform/kernel/linux-rpi.git] / drivers / tty / serial / xilinx_uartps.c
index 2e5e86a..9c13dac 100644 (file)
@@ -346,7 +346,7 @@ static irqreturn_t cdns_uart_isr(int irq, void *dev_id)
        struct uart_port *port = (struct uart_port *)dev_id;
        unsigned int isrstatus;
 
-       spin_lock(&port->lock);
+       uart_port_lock(port);
 
        /* Read the interrupt status register to determine which
         * interrupt(s) is/are active and clear them.
@@ -369,7 +369,7 @@ static irqreturn_t cdns_uart_isr(int irq, void *dev_id)
            !(readl(port->membase + CDNS_UART_CR) & CDNS_UART_CR_RX_DIS))
                cdns_uart_handle_rx(dev_id, isrstatus);
 
-       spin_unlock(&port->lock);
+       uart_port_unlock(port);
        return IRQ_HANDLED;
 }
 
@@ -506,14 +506,14 @@ static int cdns_uart_clk_notifier_cb(struct notifier_block *nb,
                        return NOTIFY_BAD;
                }
 
-               spin_lock_irqsave(&cdns_uart->port->lock, flags);
+               uart_port_lock_irqsave(cdns_uart->port, &flags);
 
                /* Disable the TX and RX to set baud rate */
                ctrl_reg = readl(port->membase + CDNS_UART_CR);
                ctrl_reg |= CDNS_UART_CR_TX_DIS | CDNS_UART_CR_RX_DIS;
                writel(ctrl_reg, port->membase + CDNS_UART_CR);
 
-               spin_unlock_irqrestore(&cdns_uart->port->lock, flags);
+               uart_port_unlock_irqrestore(cdns_uart->port, flags);
 
                return NOTIFY_OK;
        }
@@ -523,7 +523,7 @@ static int cdns_uart_clk_notifier_cb(struct notifier_block *nb,
                 * frequency.
                 */
 
-               spin_lock_irqsave(&cdns_uart->port->lock, flags);
+               uart_port_lock_irqsave(cdns_uart->port, &flags);
 
                locked = 1;
                port->uartclk = ndata->new_rate;
@@ -533,7 +533,7 @@ static int cdns_uart_clk_notifier_cb(struct notifier_block *nb,
                fallthrough;
        case ABORT_RATE_CHANGE:
                if (!locked)
-                       spin_lock_irqsave(&cdns_uart->port->lock, flags);
+                       uart_port_lock_irqsave(cdns_uart->port, &flags);
 
                /* Set TX/RX Reset */
                ctrl_reg = readl(port->membase + CDNS_UART_CR);
@@ -555,7 +555,7 @@ static int cdns_uart_clk_notifier_cb(struct notifier_block *nb,
                ctrl_reg |= CDNS_UART_CR_TX_EN | CDNS_UART_CR_RX_EN;
                writel(ctrl_reg, port->membase + CDNS_UART_CR);
 
-               spin_unlock_irqrestore(&cdns_uart->port->lock, flags);
+               uart_port_unlock_irqrestore(cdns_uart->port, flags);
 
                return NOTIFY_OK;
        default:
@@ -652,7 +652,7 @@ static void cdns_uart_break_ctl(struct uart_port *port, int ctl)
        unsigned int status;
        unsigned long flags;
 
-       spin_lock_irqsave(&port->lock, flags);
+       uart_port_lock_irqsave(port, &flags);
 
        status = readl(port->membase + CDNS_UART_CR);
 
@@ -664,7 +664,7 @@ static void cdns_uart_break_ctl(struct uart_port *port, int ctl)
                        writel(CDNS_UART_CR_STOPBRK | status,
                                        port->membase + CDNS_UART_CR);
        }
-       spin_unlock_irqrestore(&port->lock, flags);
+       uart_port_unlock_irqrestore(port, flags);
 }
 
 /**
@@ -683,7 +683,7 @@ static void cdns_uart_set_termios(struct uart_port *port,
        unsigned long flags;
        unsigned int ctrl_reg, mode_reg;
 
-       spin_lock_irqsave(&port->lock, flags);
+       uart_port_lock_irqsave(port, &flags);
 
        /* Disable the TX and RX to set baud rate */
        ctrl_reg = readl(port->membase + CDNS_UART_CR);
@@ -794,7 +794,7 @@ static void cdns_uart_set_termios(struct uart_port *port,
                cval &= ~CDNS_UART_MODEMCR_FCM;
        writel(cval, port->membase + CDNS_UART_MODEMCR);
 
-       spin_unlock_irqrestore(&port->lock, flags);
+       uart_port_unlock_irqrestore(port, flags);
 }
 
 /**
@@ -813,7 +813,7 @@ static int cdns_uart_startup(struct uart_port *port)
 
        is_brk_support = cdns_uart->quirks & CDNS_UART_RXBS_SUPPORT;
 
-       spin_lock_irqsave(&port->lock, flags);
+       uart_port_lock_irqsave(port, &flags);
 
        /* Disable the TX and RX */
        writel(CDNS_UART_CR_TX_DIS | CDNS_UART_CR_RX_DIS,
@@ -861,7 +861,7 @@ static int cdns_uart_startup(struct uart_port *port)
        writel(readl(port->membase + CDNS_UART_ISR),
                        port->membase + CDNS_UART_ISR);
 
-       spin_unlock_irqrestore(&port->lock, flags);
+       uart_port_unlock_irqrestore(port, flags);
 
        ret = request_irq(port->irq, cdns_uart_isr, 0, CDNS_UART_NAME, port);
        if (ret) {
@@ -889,7 +889,7 @@ static void cdns_uart_shutdown(struct uart_port *port)
        int status;
        unsigned long flags;
 
-       spin_lock_irqsave(&port->lock, flags);
+       uart_port_lock_irqsave(port, &flags);
 
        /* Disable interrupts */
        status = readl(port->membase + CDNS_UART_IMR);
@@ -900,7 +900,7 @@ static void cdns_uart_shutdown(struct uart_port *port)
        writel(CDNS_UART_CR_TX_DIS | CDNS_UART_CR_RX_DIS,
                        port->membase + CDNS_UART_CR);
 
-       spin_unlock_irqrestore(&port->lock, flags);
+       uart_port_unlock_irqrestore(port, flags);
 
        free_irq(port->irq, port);
 }
@@ -1050,7 +1050,7 @@ static int cdns_uart_poll_get_char(struct uart_port *port)
        int c;
        unsigned long flags;
 
-       spin_lock_irqsave(&port->lock, flags);
+       uart_port_lock_irqsave(port, &flags);
 
        /* Check if FIFO is empty */
        if (readl(port->membase + CDNS_UART_SR) & CDNS_UART_SR_RXEMPTY)
@@ -1058,7 +1058,7 @@ static int cdns_uart_poll_get_char(struct uart_port *port)
        else /* Read a character */
                c = (unsigned char) readl(port->membase + CDNS_UART_FIFO);
 
-       spin_unlock_irqrestore(&port->lock, flags);
+       uart_port_unlock_irqrestore(port, flags);
 
        return c;
 }
@@ -1067,7 +1067,7 @@ static void cdns_uart_poll_put_char(struct uart_port *port, unsigned char c)
 {
        unsigned long flags;
 
-       spin_lock_irqsave(&port->lock, flags);
+       uart_port_lock_irqsave(port, &flags);
 
        /* Wait until FIFO is empty */
        while (!(readl(port->membase + CDNS_UART_SR) & CDNS_UART_SR_TXEMPTY))
@@ -1080,7 +1080,7 @@ static void cdns_uart_poll_put_char(struct uart_port *port, unsigned char c)
        while (!(readl(port->membase + CDNS_UART_SR) & CDNS_UART_SR_TXEMPTY))
                cpu_relax();
 
-       spin_unlock_irqrestore(&port->lock, flags);
+       uart_port_unlock_irqrestore(port, flags);
 }
 #endif
 
@@ -1232,9 +1232,9 @@ static void cdns_uart_console_write(struct console *co, const char *s,
        if (port->sysrq)
                locked = 0;
        else if (oops_in_progress)
-               locked = spin_trylock_irqsave(&port->lock, flags);
+               locked = uart_port_trylock_irqsave(port, &flags);
        else
-               spin_lock_irqsave(&port->lock, flags);
+               uart_port_lock_irqsave(port, &flags);
 
        /* save and disable interrupt */
        imr = readl(port->membase + CDNS_UART_IMR);
@@ -1257,7 +1257,7 @@ static void cdns_uart_console_write(struct console *co, const char *s,
        writel(imr, port->membase + CDNS_UART_IER);
 
        if (locked)
-               spin_unlock_irqrestore(&port->lock, flags);
+               uart_port_unlock_irqrestore(port, flags);
 }
 
 /**
@@ -1325,7 +1325,7 @@ static int cdns_uart_suspend(struct device *device)
        if (console_suspend_enabled && uart_console(port) && may_wake) {
                unsigned long flags;
 
-               spin_lock_irqsave(&port->lock, flags);
+               uart_port_lock_irqsave(port, &flags);
                /* Empty the receive FIFO 1st before making changes */
                while (!(readl(port->membase + CDNS_UART_SR) &
                                        CDNS_UART_SR_RXEMPTY))
@@ -1334,7 +1334,7 @@ static int cdns_uart_suspend(struct device *device)
                writel(1, port->membase + CDNS_UART_RXWM);
                /* disable RX timeout interrups */
                writel(CDNS_UART_IXR_TOUT, port->membase + CDNS_UART_IDR);
-               spin_unlock_irqrestore(&port->lock, flags);
+               uart_port_unlock_irqrestore(port, flags);
        }
 
        /*
@@ -1372,7 +1372,7 @@ static int cdns_uart_resume(struct device *device)
                        return ret;
                }
 
-               spin_lock_irqsave(&port->lock, flags);
+               uart_port_lock_irqsave(port, &flags);
 
                /* Set TX/RX Reset */
                ctrl_reg = readl(port->membase + CDNS_UART_CR);
@@ -1392,14 +1392,14 @@ static int cdns_uart_resume(struct device *device)
 
                clk_disable(cdns_uart->uartclk);
                clk_disable(cdns_uart->pclk);
-               spin_unlock_irqrestore(&port->lock, flags);
+               uart_port_unlock_irqrestore(port, flags);
        } else {
-               spin_lock_irqsave(&port->lock, flags);
+               uart_port_lock_irqsave(port, &flags);
                /* restore original rx trigger level */
                writel(rx_trigger_level, port->membase + CDNS_UART_RXWM);
                /* enable RX timeout interrupt */
                writel(CDNS_UART_IXR_TOUT, port->membase + CDNS_UART_IER);
-               spin_unlock_irqrestore(&port->lock, flags);
+               uart_port_unlock_irqrestore(port, flags);
        }
 
        return uart_resume_port(cdns_uart->cdns_uart_driver, port);