On 11/02/10 09:58, Brian Murphy wrote: > Hi Folks, > We have been working with L137 and there is an issue where the serial > driver handles > the UART in a very bad way. This may be the same issue as described > in the other > two mails on this thread. > The issue is that the serial driver 8250.c expects the uart to > generate a fifo empty interrupt > if the FIFO is empty and interrupts are enabled. The UART in the L137 > only generates a FIFO > empty interrupt the first time. The serial driver handles this > situation by starting a timer which > times out after 200ms when interrupts are enabled and only then begins > to transmit. > I have rewritten the interrupt handling so the driver maintains a flag > which tells whether the UART > is currently transmitting or not. If not then we begin filling the TX > fifo immediately (we do not > wait for an interrupt which never comes). This fixes the transmit > latency issue for us. > > I have attached the patch. It is against the linux-davinci git at > kernel.org as of friday last week. > > I have sent the patch to the linux-serial list with no response. > > Could you who have problems with serial performance test the patch? I > can try to send it > again to linux-serial if I get good feedback from you. > > /Brian
Hi Brian, I know you developed this on the OMAP-L137 and tested it yourself, but I can confirm I get the same results here on the same device. (I had to back port it to MVL5 first.) I spent quite a bit of time studying the patch and I would be happy to endorse it (though I'm sure that won't count for anything). It has a few minor style problems, but the approach looks good to me. I think it will need testing on many more platforms before it is accepted though :( Thanks for sharing. The product I am working on requires efficient serial ports and this patch has saved me a bunch of time. Nick. _______________________________________________ Davinci-linux-open-source mailing list [email protected] http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
