diff options
Diffstat (limited to 'drivers/tty')
-rw-r--r-- | drivers/tty/mxser.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/tty/mxser.c b/drivers/tty/mxser.c index 5789c4343f10..daf820c086f4 100644 --- a/drivers/tty/mxser.c +++ b/drivers/tty/mxser.c @@ -428,14 +428,15 @@ static void mxser_dtr_rts(struct tty_port *port, int on) { struct mxser_port *mp = container_of(port, struct mxser_port, port); unsigned long flags; + u8 mcr; spin_lock_irqsave(&mp->slock, flags); + mcr = inb(mp->ioaddr + UART_MCR); if (on) - outb(inb(mp->ioaddr + UART_MCR) | - UART_MCR_DTR | UART_MCR_RTS, mp->ioaddr + UART_MCR); + mcr |= UART_MCR_DTR | UART_MCR_RTS; else - outb(inb(mp->ioaddr + UART_MCR)&~(UART_MCR_DTR | UART_MCR_RTS), - mp->ioaddr + UART_MCR); + mcr &= ~(UART_MCR_DTR | UART_MCR_RTS); + outb(mcr, mp->ioaddr + UART_MCR); spin_unlock_irqrestore(&mp->slock, flags); } |