Messages in this thread Patches in this message | | | Date | Mon, 8 Sep 2003 13:54:31 -0700 | From | Tom Rini <> | Subject | [PATCH] Make the Startech UART detection 'more correct'. |
| |
Hello. The following patches (vs 2.4 and 2.6) make the Startech UART detection 'more correct' The problem is that on with the Motorola MPC82xx line (8245 for example) it has an internal DUART that it claims to be PC16550D compatible, and it has an additional EFR (Enhanced Feature Register) at offset 0x2, like on the Startech UARTS. However, it is not a Startech, and when it's detected as such, FIFOs don't work. The fix for this is that the Startech UARTs have a 32 byte FIFO [1] and the MPC82xx DUARTs have a 16-byte FIFO [2], to check that the FIFO size is correct for a Startech.
2.4: ===== drivers/char/serial.c 1.34 vs edited ===== --- 1.34/drivers/char/serial.c Sun Jul 6 22:33:28 2003 +++ edited/drivers/char/serial.c Fri Sep 5 15:44:11 2003 @@ -3740,7 +3740,7 @@ if (state->type == PORT_16550A) { /* Check for Startech UART's */ serial_outp(info, UART_LCR, UART_LCR_DLAB); - if (serial_in(info, UART_EFR) == 0) { + if (serial_in(info, UART_EFR) == 0 && size_fifo(info) != 16) { state->type = PORT_16650; } else { serial_outp(info, UART_LCR, 0xBF); 2.6: ===== drivers/serial/8250.c 1.34 vs edited ===== --- 1.34/drivers/serial/8250.c Sun Jun 15 02:21:11 2003 +++ edited/drivers/serial/8250.c Fri Sep 5 15:43:23 2003 @@ -467,7 +467,7 @@ * Only ST16C650V1 UARTs pass this test. */ serial_outp(up, UART_LCR, UART_LCR_DLAB); - if (serial_in(up, UART_EFR) == 0) { + if (serial_in(up, UART_EFR) == 0 && size_fifo(up) != 16) { DEBUG_AUTOCONF("EFRv1 "); up->port.type = PORT_16650; return; I must admit however, that after reading both datasheets, I'm not sure if the correct test is for && size_fifo() == 32 or != 16, or if it matters. Comments?
This was originally fixed by Greg Allen[3].
[1]: http://www.exar.com/products/uartnote.pdf [2]: http://e-www.motorola.com/brdata/PDFDB/docs/MPC8245UM_CH12.pdf [3]: http://www.geocrawler.com/archives/3/8358/2002/3/0/8228902/ -- Tom Rini http://gate.crashing.org/~trini/ [unhandled content-type:application/pgp-signature] | |