diff options
Diffstat (limited to 'drivers/serial/sunsab.c')
| -rw-r--r-- | drivers/serial/sunsab.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/drivers/serial/sunsab.c b/drivers/serial/sunsab.c index 10e2990a40d4..8d198880756a 100644 --- a/drivers/serial/sunsab.c +++ b/drivers/serial/sunsab.c | |||
| @@ -426,18 +426,15 @@ static void sunsab_set_mctrl(struct uart_port *port, unsigned int mctrl) | |||
| 426 | sunsab_tx_idle(up); | 426 | sunsab_tx_idle(up); |
| 427 | } | 427 | } |
| 428 | 428 | ||
| 429 | /* port->lock is not held. */ | 429 | /* port->lock is held by caller and interrupts are disabled. */ |
| 430 | static unsigned int sunsab_get_mctrl(struct uart_port *port) | 430 | static unsigned int sunsab_get_mctrl(struct uart_port *port) |
| 431 | { | 431 | { |
| 432 | struct uart_sunsab_port *up = (struct uart_sunsab_port *) port; | 432 | struct uart_sunsab_port *up = (struct uart_sunsab_port *) port; |
| 433 | unsigned long flags; | ||
| 434 | unsigned char val; | 433 | unsigned char val; |
| 435 | unsigned int result; | 434 | unsigned int result; |
| 436 | 435 | ||
| 437 | result = 0; | 436 | result = 0; |
| 438 | 437 | ||
| 439 | spin_lock_irqsave(&up->port.lock, flags); | ||
| 440 | |||
| 441 | val = readb(&up->regs->r.pvr); | 438 | val = readb(&up->regs->r.pvr); |
| 442 | result |= (val & up->pvr_dsr_bit) ? 0 : TIOCM_DSR; | 439 | result |= (val & up->pvr_dsr_bit) ? 0 : TIOCM_DSR; |
| 443 | 440 | ||
| @@ -447,8 +444,6 @@ static unsigned int sunsab_get_mctrl(struct uart_port *port) | |||
| 447 | val = readb(&up->regs->r.star); | 444 | val = readb(&up->regs->r.star); |
| 448 | result |= (val & SAB82532_STAR_CTS) ? TIOCM_CTS : 0; | 445 | result |= (val & SAB82532_STAR_CTS) ? TIOCM_CTS : 0; |
| 449 | 446 | ||
| 450 | spin_unlock_irqrestore(&up->port.lock, flags); | ||
| 451 | |||
| 452 | return result; | 447 | return result; |
| 453 | } | 448 | } |
| 454 | 449 | ||
