diff options
author | Thomas Hoehn <thomas.hoehn@avocent.com> | 2007-02-10 01:46:05 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-11 10:51:33 -0800 |
commit | 482120084d843d4cbb7ff3eb84510a1471130ce0 (patch) | |
tree | 22943ce8e09319530a1acf84a397a7b1f6dbea6f /drivers/serial/8250.c | |
parent | a21217daae8ce6e841e33d4a2bb24026723cb21d (diff) |
[PATCH] Perle multimodem card (PCI-RAS) detection
Get the Perle quad-modem PCI card (PCI-RAS4) detected by serial driver. It
may also get the PCI-RAS8 running, but can't guarantee as I didn't had one for
testing.
Signed-off-by: Thomas Hoehn <thomas.hoehn@avocent.com>
Cc: Russell King <rmk@arm.linux.org.uk>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/serial/8250.c')
-rw-r--r-- | drivers/serial/8250.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c index 5261f0af8b1..2964ca9df5a 100644 --- a/drivers/serial/8250.c +++ b/drivers/serial/8250.c @@ -920,12 +920,16 @@ static void autoconfig(struct uart_8250_port *up, unsigned int probeflags) #ifdef __i386__ outb(0xff, 0x080); #endif - scratch2 = serial_inp(up, UART_IER); + /* + * Mask out IER[7:4] bits for test as some UARTs (e.g. TL + * 16C754B) allow only to modify them if an EFR bit is set. + */ + scratch2 = serial_inp(up, UART_IER) & 0x0f; serial_outp(up, UART_IER, 0x0F); #ifdef __i386__ outb(0, 0x080); #endif - scratch3 = serial_inp(up, UART_IER); + scratch3 = serial_inp(up, UART_IER) & 0x0f; serial_outp(up, UART_IER, scratch); if (scratch2 != 0 || scratch3 != 0x0F) { /* |