You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
[PATCH] Serial: Adjust serial locking
This patch changes the way serial ports are locked when getting modem status. This change is necessary because we will need to atomically read the modem status and take action depending on the CTS status. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
committed by
Russell King
parent
a839688362
commit
c5f4644e6c
@@ -426,18 +426,15 @@ static void sunsab_set_mctrl(struct uart_port *port, unsigned int mctrl)
|
||||
sunsab_tx_idle(up);
|
||||
}
|
||||
|
||||
/* port->lock is not held. */
|
||||
/* port->lock is held by caller and interrupts are disabled. */
|
||||
static unsigned int sunsab_get_mctrl(struct uart_port *port)
|
||||
{
|
||||
struct uart_sunsab_port *up = (struct uart_sunsab_port *) port;
|
||||
unsigned long flags;
|
||||
unsigned char val;
|
||||
unsigned int result;
|
||||
|
||||
result = 0;
|
||||
|
||||
spin_lock_irqsave(&up->port.lock, flags);
|
||||
|
||||
val = readb(&up->regs->r.pvr);
|
||||
result |= (val & up->pvr_dsr_bit) ? 0 : TIOCM_DSR;
|
||||
|
||||
@@ -447,8 +444,6 @@ static unsigned int sunsab_get_mctrl(struct uart_port *port)
|
||||
val = readb(&up->regs->r.star);
|
||||
result |= (val & SAB82532_STAR_CTS) ? TIOCM_CTS : 0;
|
||||
|
||||
spin_unlock_irqrestore(&up->port.lock, flags);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user