Index: drivers/char/serial.c =================================================================== RCS file: /home/cvs/linux-am33-2.4.18/drivers/char/serial.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 serial.c --- drivers/char/serial.c 8 May 2002 12:07:55 -0000 1.1.1.1 +++ drivers/char/serial.c 10 Mar 2004 13:48:32 -0000 @@ -312,6 +312,7 @@ { "XR16850", 128, UART_CLEAR_FIFO | UART_USE_FIFO | UART_STARTECH }, { "RSA", 2048, UART_CLEAR_FIFO | UART_USE_FIFO }, + { "16552", 16, UART_CLEAR_FIFO | UART_USE_FIFO }, { 0, 0} }; @@ -3739,6 +3740,19 @@ case 3: state->type = PORT_16550A; break; + } + if (state->type == PORT_16550A) { + /* check for half of an NS 16552 */ + serial_outp(info, UART_LCR, UART_LCR_DLAB); + scratch = serial_in(info, UART_EFR); + if ((scratch & ~7) == 0) { + serial_outp(info, UART_EFR, 0xff); + if (serial_in(info, UART_EFR) == 7) { + state->type = PORT_16552; + scratch = 0; + } + serial_outp(info, UART_EFR, scratch); + } } if (state->type == PORT_16550A) { /* Check for Startech UART's */ Index: include/linux/serial.h =================================================================== RCS file: /home/cvs/linux-am33-2.4.18/include/linux/serial.h,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 serial.h --- include/linux/serial.h 8 May 2002 12:11:50 -0000 1.1.1.1 +++ include/linux/serial.h 10 Mar 2004 13:48:10 -0000 @@ -75,7 +75,8 @@ #define PORT_16654 11 #define PORT_16850 12 #define PORT_RSA 13 /* RSA-DV II/S card */ -#define PORT_MAX 13 +#define PORT_16552 14 +#define PORT_MAX 14 #define SERIAL_IO_PORT 0 #define SERIAL_IO_HUB6 1