>Dear LKML
>
>Since Kernel Release 2.6.11-bk1 + bk2 it is not possible to connect in >to the Internet via a modem connection.
>
>Following message is in my System Log:
>
>> Mar 6 19:02:08 Odin wvdial[3079]: stdin not read/write and $MODEM >not set Mar 6 19:02:08 Odin pppd[3032]: Connect script failed
>
>
>Kernel 2.6.11 works without any problems. Attached is my config file.
>
>Best regards,
>
>
>-- Michael
-- snip->
Dear LKML
Reverting attached patch fixes my serial modem connection problem.
Best regards,
-- Michael
diff -Nru a/drivers/serial/8250.c b/drivers/serial/8250.c --- a/drivers/serial/8250.c 2005-02-28 08:05:18 -08:00 +++ b/drivers/serial/8250.c 2005-01-24 08:00:57 -08:00 @@ -642,6 +642,7 @@ static void autoconfig_16550a(struct uart_8250_port *up) { unsigned char status1, status2; + unsigned int iersave; up->port.type = PORT_16550A; up->capabilities |= UART_CAP_FIFO; @@ -736,6 +737,40 @@ up->capabilities |= UART_CAP_AFE | UART_CAP_SLEEP; return; } + + /* + * Try writing and reading the UART_IER_UUE bit (b6). + * If it works, this is probably one of the Xscale platform's + * internal UARTs. + * We're going to explicitly set the UUE bit to 0 before + * trying to write and read a 1 just to make sure it's not + * already a 1 and maybe locked there before we even start start. + */ + iersave = serial_in(up, UART_IER); + serial_outp(up, UART_IER, iersave & ~UART_IER_UUE); + if (!(serial_in(up, UART_IER) & UART_IER_UUE)) { + /* + * OK it's in a known zero state, try writing and reading + * without disturbing the current state of the other bits. + */ + serial_outp(up, UART_IER, iersave | UART_IER_UUE); + if (serial_in(up, UART_IER) & UART_IER_UUE) { + /* + * It's an Xscale. + * We'll leave the UART_IER_UUE bit set to 1 (enabled). + */ + DEBUG_AUTOCONF("Xscale "); + up->port.type = PORT_XSCALE; + return; + } + } else { + /* + * If we got here we couldn't force the IER_UUE bit to 0. + * Log it and continue. + */ + DEBUG_AUTOCONF("Couldn't force IER_UUE to 0 "); + } + serial_outp(up, UART_IER, iersave); } /*