Hi Marcelo,
There is still a chunk of the "ELAN versus ST16C654" bug in the generic
serial driver. The previous attempt to patch it missed a spot. Please apply
the following patch to fix the second spot the same way as the first was
fixed (at line 845). This bug was the ELAN UART work-around that broke
ST16C654 UART support. Let's finish it.
Thanks,
Ed Vance
diff -Naur -X dontdiff.txt linux-2.4.23-rc2/drivers/char/serial.c
linux-2.4.23-rc2-ml/drivers/char/serial.c
--- linux-2.4.23-rc2/drivers/char/serial.c Mon Aug 25 04:44:41 2003
+++ linux-2.4.23-rc2-ml/drivers/char/serial.c Wed Nov 19 14:40:05 2003
@@ -914,10 +914,15 @@
if (status & UART_LSR_DR)
receive_chars(info, &status, regs);
check_modem_status(info);
+#ifdef CONFIG_MELAN
if ((status & UART_LSR_THRE) ||
/* For buggy ELAN processors */
((iir & UART_IIR_ID) == UART_IIR_THRI))
transmit_chars(info, 0);
+#else
+ if (status & UART_LSR_THRE)
+ transmit_chars(info, 0);
+#endif
if (pass_counter++ > RS_ISR_PASS_LIMIT) {
#if SERIAL_DEBUG_INTR
printk("rs_single loop break.\n");