aboutsummaryrefslogtreecommitdiff
path: root/drivers/serial/8250.c
diff options
context:
space:
mode:
authorKumar Gala <galak@kernel.crashing.org>2007-02-12 23:57:21 -0600
committerKumar Gala <galak@kernel.crashing.org>2007-02-12 23:57:21 -0600
commit54c66f6d781e03dc0b23956234963c4911e6d1c0 (patch)
tree40619a66ae6d8703a57bf681d087ffeabbffd346 /drivers/serial/8250.c
parent8ce0a7df6e6117d8814e976d4b7ce6a6b2c9cf93 (diff)
parent17e0e27020d028a790d97699aff85a43af5be472 (diff)
Merge branch 'master' into 85xx
Diffstat (limited to 'drivers/serial/8250.c')
-rw-r--r--drivers/serial/8250.c8
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) {
/*