flag = TTY_FRAME;
                }
 
-               spin_unlock(&uap->port.lock);
+               uart_port_unlock(&uap->port);
                sysrq = uart_handle_sysrq_char(&uap->port, ch & 255);
-               spin_lock(&uap->port.lock);
+               uart_port_lock(&uap->port);
 
                if (!sysrq)
                        uart_insert_char(&uap->port, ch, UART011_DR_OE, ch, flag);
        unsigned long flags;
        u16 dmacr;
 
-       spin_lock_irqsave(&uap->port.lock, flags);
+       uart_port_lock_irqsave(&uap->port, &flags);
        if (uap->dmatx.queued)
                dma_unmap_sg(dmatx->chan->device->dev, &dmatx->sg, 1,
                             DMA_TO_DEVICE);
        if (!(dmacr & UART011_TXDMAE) || uart_tx_stopped(&uap->port) ||
            uart_circ_empty(&uap->port.state->xmit)) {
                uap->dmatx.queued = false;
-               spin_unlock_irqrestore(&uap->port.lock, flags);
+               uart_port_unlock_irqrestore(&uap->port, flags);
                return;
        }
 
                 */
                pl011_start_tx_pio(uap);
 
-       spin_unlock_irqrestore(&uap->port.lock, flags);
+       uart_port_unlock_irqrestore(&uap->port, flags);
 }
 
 /*
         * routine to flush out the secondary DMA buffer while
         * we immediately trigger the next DMA job.
         */
-       spin_lock_irq(&uap->port.lock);
+       uart_port_lock_irq(&uap->port);
        /*
         * Rx data can be taken by the UART interrupts during
         * the DMA irq handler. So we check the residue here.
        ret = pl011_dma_rx_trigger_dma(uap);
 
        pl011_dma_rx_chars(uap, pending, lastbuf, false);
-       spin_unlock_irq(&uap->port.lock);
+       uart_port_unlock_irq(&uap->port);
        /*
         * Do this check after we picked the DMA chars so we don't
         * get some IRQ immediately from RX.
        if (jiffies_to_msecs(jiffies - dmarx->last_jiffies)
                        > uap->dmarx.poll_timeout) {
 
-               spin_lock_irqsave(&uap->port.lock, flags);
+               uart_port_lock_irqsave(&uap->port, &flags);
                pl011_dma_rx_stop(uap);
                uap->im |= UART011_RXIM;
                pl011_write(uap->im, uap, REG_IMSC);
-               spin_unlock_irqrestore(&uap->port.lock, flags);
+               uart_port_unlock_irqrestore(&uap->port, flags);
 
                uap->dmarx.running = false;
                dmaengine_terminate_all(rxchan);
        while (pl011_read(uap, REG_FR) & uap->vendor->fr_busy)
                cpu_relax();
 
-       spin_lock_irq(&uap->port.lock);
+       uart_port_lock_irq(&uap->port);
        uap->dmacr &= ~(UART011_DMAONERR | UART011_RXDMAE | UART011_TXDMAE);
        pl011_write(uap->dmacr, uap, REG_DMACR);
-       spin_unlock_irq(&uap->port.lock);
+       uart_port_unlock_irq(&uap->port);
 
        if (uap->using_tx_dma) {
                /* In theory, this should already be done by pl011_dma_flush_buffer */
 {
        unsigned long flags;
 
-       spin_lock_irqsave(&port->lock, flags);
+       uart_port_lock_irqsave(port, &flags);
        pl011_stop_rx(port);
-       spin_unlock_irqrestore(&port->lock, flags);
+       uart_port_unlock_irqrestore(port, flags);
 }
 
 static void pl011_enable_ms(struct uart_port *port)
 {
        pl011_fifo_to_tty(uap);
 
-       spin_unlock(&uap->port.lock);
+       uart_port_unlock(&uap->port);
        tty_flip_buffer_push(&uap->port.state->port);
        /*
         * If we were temporarily out of DMA mode for a while,
 #endif
                }
        }
-       spin_lock(&uap->port.lock);
+       uart_port_lock(&uap->port);
 }
 
 static bool pl011_tx_char(struct uart_amba_port *uap, unsigned char c,
        unsigned int status, pass_counter = AMBA_ISR_PASS_LIMIT;
        int handled = 0;
 
-       spin_lock_irqsave(&uap->port.lock, flags);
+       uart_port_lock_irqsave(&uap->port, &flags);
        status = pl011_read(uap, REG_RIS) & uap->im;
        if (status) {
                do {
                handled = 1;
        }
 
-       spin_unlock_irqrestore(&uap->port.lock, flags);
+       uart_port_unlock_irqrestore(&uap->port, flags);
 
        return IRQ_RETVAL(handled);
 }
        unsigned long flags;
        unsigned int lcr_h;
 
-       spin_lock_irqsave(&uap->port.lock, flags);
+       uart_port_lock_irqsave(&uap->port, &flags);
        lcr_h = pl011_read(uap, REG_LCRH_TX);
        if (break_state == -1)
                lcr_h |= UART01x_LCRH_BRK;
        else
                lcr_h &= ~UART01x_LCRH_BRK;
        pl011_write(lcr_h, uap, REG_LCRH_TX);
-       spin_unlock_irqrestore(&uap->port.lock, flags);
+       uart_port_unlock_irqrestore(&uap->port, flags);
 }
 
 #ifdef CONFIG_CONSOLE_POLL
        unsigned long flags;
        unsigned int i;
 
-       spin_lock_irqsave(&uap->port.lock, flags);
+       uart_port_lock_irqsave(&uap->port, &flags);
 
        /* Clear out any spuriously appearing RX interrupts */
        pl011_write(UART011_RTIS | UART011_RXIS, uap, REG_ICR);
        if (!pl011_dma_rx_running(uap))
                uap->im |= UART011_RXIM;
        pl011_write(uap->im, uap, REG_IMSC);
-       spin_unlock_irqrestore(&uap->port.lock, flags);
+       uart_port_unlock_irqrestore(&uap->port, flags);
 }
 
 static void pl011_unthrottle_rx(struct uart_port *port)
        struct uart_amba_port *uap = container_of(port, struct uart_amba_port, port);
        unsigned long flags;
 
-       spin_lock_irqsave(&uap->port.lock, flags);
+       uart_port_lock_irqsave(&uap->port, &flags);
 
        uap->im = UART011_RTIM;
        if (!pl011_dma_rx_running(uap))
 
        pl011_write(uap->im, uap, REG_IMSC);
 
-       spin_unlock_irqrestore(&uap->port.lock, flags);
+       uart_port_unlock_irqrestore(&uap->port, flags);
 }
 
 static int pl011_startup(struct uart_port *port)
 
        pl011_write(uap->vendor->ifls, uap, REG_IFLS);
 
-       spin_lock_irq(&uap->port.lock);
+       uart_port_lock_irq(&uap->port);
 
        cr = pl011_read(uap, REG_CR);
        cr &= UART011_CR_RTS | UART011_CR_DTR;
 
        pl011_write(cr, uap, REG_CR);
 
-       spin_unlock_irq(&uap->port.lock);
+       uart_port_unlock_irq(&uap->port);
 
        /*
         * initialise the old status of the modem signals
        unsigned int cr;
 
        uap->port.status &= ~(UPSTAT_AUTOCTS | UPSTAT_AUTORTS);
-       spin_lock_irq(&uap->port.lock);
+       uart_port_lock_irq(&uap->port);
        cr = pl011_read(uap, REG_CR);
        cr &= UART011_CR_RTS | UART011_CR_DTR;
        cr |= UART01x_CR_UARTEN | UART011_CR_TXE;
        pl011_write(cr, uap, REG_CR);
-       spin_unlock_irq(&uap->port.lock);
+       uart_port_unlock_irq(&uap->port);
 
        /*
         * disable break condition and fifos
 
 static void pl011_disable_interrupts(struct uart_amba_port *uap)
 {
-       spin_lock_irq(&uap->port.lock);
+       uart_port_lock_irq(&uap->port);
 
        /* mask all interrupts and clear all pending ones */
        uap->im = 0;
        pl011_write(uap->im, uap, REG_IMSC);
        pl011_write(0xffff, uap, REG_ICR);
 
-       spin_unlock_irq(&uap->port.lock);
+       uart_port_unlock_irq(&uap->port);
 }
 
 static void pl011_shutdown(struct uart_port *port)
 
        bits = tty_get_frame_size(termios->c_cflag);
 
-       spin_lock_irqsave(&port->lock, flags);
+       uart_port_lock_irqsave(port, &flags);
 
        /*
         * Update the per-port timeout.
        old_cr |= UART011_CR_RXE;
        pl011_write(old_cr, uap, REG_CR);
 
-       spin_unlock_irqrestore(&port->lock, flags);
+       uart_port_unlock_irqrestore(port, flags);
 }
 
 static void
        termios->c_cflag &= ~(CMSPAR | CRTSCTS);
        termios->c_cflag |= CS8 | CLOCAL;
 
-       spin_lock_irqsave(&port->lock, flags);
+       uart_port_lock_irqsave(port, &flags);
        uart_update_timeout(port, CS8, uap->fixed_baud);
        pl011_setup_status_masks(port, termios);
-       spin_unlock_irqrestore(&port->lock, flags);
+       uart_port_unlock_irqrestore(port, flags);
 }
 
 static const char *pl011_type(struct uart_port *port)
        if (uap->port.sysrq)
                locked = 0;
        else if (oops_in_progress)
-               locked = spin_trylock(&uap->port.lock);
+               locked = uart_port_trylock(&uap->port);
        else
-               spin_lock(&uap->port.lock);
+               uart_port_lock(&uap->port);
 
        /*
         *      First save the CR then disable the interrupts
                pl011_write(old_cr, uap, REG_CR);
 
        if (locked)
-               spin_unlock(&uap->port.lock);
+               uart_port_unlock(&uap->port);
        local_irq_restore(flags);
 
        clk_disable(uap->clk);