}
 
        if (uart_circ_empty(xmit) || uart_tx_stopped(port)) {
-               spin_lock_irqsave(&port->lock, flags);
+               uart_port_lock_irqsave(port, &flags);
                sc16is7xx_stop_tx(port);
-               spin_unlock_irqrestore(&port->lock, flags);
+               uart_port_unlock_irqrestore(port, flags);
                return;
        }
 
                sc16is7xx_fifo_write(port, to_send);
        }
 
-       spin_lock_irqsave(&port->lock, flags);
+       uart_port_lock_irqsave(port, &flags);
        if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
                uart_write_wakeup(port);
 
        if (uart_circ_empty(xmit))
                sc16is7xx_stop_tx(port);
-       spin_unlock_irqrestore(&port->lock, flags);
+       uart_port_unlock_irqrestore(port, flags);
 }
 
 static unsigned int sc16is7xx_get_hwmctrl(struct uart_port *port)
 
        one->old_mctrl = status;
 
-       spin_lock_irqsave(&port->lock, flags);
+       uart_port_lock_irqsave(port, &flags);
        if ((changed & TIOCM_RNG) && (status & TIOCM_RNG))
                port->icount.rng++;
        if (changed & TIOCM_DSR)
                uart_handle_cts_change(port, status & TIOCM_CTS);
 
        wake_up_interruptible(&port->state->port.delta_msr_wait);
-       spin_unlock_irqrestore(&port->lock, flags);
+       uart_port_unlock_irqrestore(port, flags);
 }
 
 static bool sc16is7xx_port_irq(struct sc16is7xx_port *s, int portno)
        sc16is7xx_handle_tx(port);
        mutex_unlock(&s->efr_lock);
 
-       spin_lock_irqsave(&port->lock, flags);
+       uart_port_lock_irqsave(port, &flags);
        sc16is7xx_ier_set(port, SC16IS7XX_IER_THRI_BIT);
-       spin_unlock_irqrestore(&port->lock, flags);
+       uart_port_unlock_irqrestore(port, flags);
 }
 
 static void sc16is7xx_reconf_rs485(struct uart_port *port)
        struct serial_rs485 *rs485 = &port->rs485;
        unsigned long irqflags;
 
-       spin_lock_irqsave(&port->lock, irqflags);
+       uart_port_lock_irqsave(port, &irqflags);
        if (rs485->flags & SER_RS485_ENABLED) {
                efcr |= SC16IS7XX_EFCR_AUTO_RS485_BIT;
 
                if (rs485->flags & SER_RS485_RTS_AFTER_SEND)
                        efcr |= SC16IS7XX_EFCR_RTS_INVERT_BIT;
        }
-       spin_unlock_irqrestore(&port->lock, irqflags);
+       uart_port_unlock_irqrestore(port, irqflags);
 
        sc16is7xx_port_update(port, SC16IS7XX_EFCR_REG, mask, efcr);
 }
        struct sc16is7xx_one_config config;
        unsigned long irqflags;
 
-       spin_lock_irqsave(&one->port.lock, irqflags);
+       uart_port_lock_irqsave(&one->port, &irqflags);
        config = one->config;
        memset(&one->config, 0, sizeof(one->config));
-       spin_unlock_irqrestore(&one->port.lock, irqflags);
+       uart_port_unlock_irqrestore(&one->port, irqflags);
 
        if (config.flags & SC16IS7XX_RECONF_MD) {
                u8 mcr = 0;
         * value set in MCR register. Stop reading data from RX FIFO so the
         * AutoRTS feature will de-activate RTS output.
         */
-       spin_lock_irqsave(&port->lock, flags);
+       uart_port_lock_irqsave(port, &flags);
        sc16is7xx_ier_clear(port, SC16IS7XX_IER_RDI_BIT);
-       spin_unlock_irqrestore(&port->lock, flags);
+       uart_port_unlock_irqrestore(port, flags);
 }
 
 static void sc16is7xx_unthrottle(struct uart_port *port)
 {
        unsigned long flags;
 
-       spin_lock_irqsave(&port->lock, flags);
+       uart_port_lock_irqsave(port, &flags);
        sc16is7xx_ier_set(port, SC16IS7XX_IER_RDI_BIT);
-       spin_unlock_irqrestore(&port->lock, flags);
+       uart_port_unlock_irqrestore(port, flags);
 }
 
 static unsigned int sc16is7xx_tx_empty(struct uart_port *port)
        /* Setup baudrate generator */
        baud = sc16is7xx_set_baud(port, baud);
 
-       spin_lock_irqsave(&port->lock, flags);
+       uart_port_lock_irqsave(port, &flags);
 
        /* Update timeout according to new baud rate */
        uart_update_timeout(port, termios->c_cflag, baud);
        if (UART_ENABLE_MS(port, termios->c_cflag))
                sc16is7xx_enable_ms(port);
 
-       spin_unlock_irqrestore(&port->lock, flags);
+       uart_port_unlock_irqrestore(port, flags);
 }
 
 static int sc16is7xx_config_rs485(struct uart_port *port, struct ktermios *termios,
        sc16is7xx_port_write(port, SC16IS7XX_IER_REG, val);
 
        /* Enable modem status polling */
-       spin_lock_irqsave(&port->lock, flags);
+       uart_port_lock_irqsave(port, &flags);
        sc16is7xx_enable_ms(port);
-       spin_unlock_irqrestore(&port->lock, flags);
+       uart_port_unlock_irqrestore(port, flags);
 
        return 0;
 }