|
@@ -1535,6 +1535,8 @@ static int pl011_startup(struct uart_port *port)
|
|
|
/*
|
|
|
* Provoke TX FIFO interrupt into asserting.
|
|
|
*/
|
|
|
+ spin_lock_irq(&uap->port.lock);
|
|
|
+
|
|
|
cr = UART01x_CR_UARTEN | UART011_CR_TXE | UART011_CR_LBE;
|
|
|
writew(cr, uap->port.membase + UART011_CR);
|
|
|
writew(0, uap->port.membase + UART011_FBRD);
|
|
@@ -1559,6 +1561,8 @@ static int pl011_startup(struct uart_port *port)
|
|
|
cr |= UART01x_CR_UARTEN | UART011_CR_RXE | UART011_CR_TXE;
|
|
|
writew(cr, uap->port.membase + UART011_CR);
|
|
|
|
|
|
+ spin_unlock_irq(&uap->port.lock);
|
|
|
+
|
|
|
/*
|
|
|
* initialise the old status of the modem signals
|
|
|
*/
|
|
@@ -1627,11 +1631,13 @@ static void pl011_shutdown(struct uart_port *port)
|
|
|
* it during startup().
|
|
|
*/
|
|
|
uap->autorts = false;
|
|
|
+ spin_lock_irq(&uap->port.lock);
|
|
|
cr = readw(uap->port.membase + UART011_CR);
|
|
|
uap->old_cr = cr;
|
|
|
cr &= UART011_CR_RTS | UART011_CR_DTR;
|
|
|
cr |= UART01x_CR_UARTEN | UART011_CR_TXE;
|
|
|
writew(cr, uap->port.membase + UART011_CR);
|
|
|
+ spin_unlock_irq(&uap->port.lock);
|
|
|
|
|
|
/*
|
|
|
* disable break condition and fifos
|