fix for 16C850 uarts: lost transmit data
Brought to you by:
tytso
For 16C850 uarts, the transmit trigger level is set at 96
(when the fifo drops below 96, it interrupts) but the
transmit interrupt routine seems to assume that there
are 128 free bytes in the tx fifo. This can cause lots of
dropped data when the interrupt routine tries to shove
128 bytes of data into 32 bytes of space. The simple
solution is to simply change the tx fifo trigger to interrupt
when there actually are 128 bytes free, and I have
included a patch to do so. If the patch doesn't work,
just search through serial.c for the line "serial_outp(info,
UART_TRG, UART_TRG_96);" and change
UART_TRG_96 to UART_TRG_1.
16C850 uart patch