On Wed, Mar 27, 2013 at 06:38:11PM +0900, Chanho Min wrote: > In DMA support, The received data is not pushed to tty until the DMA buffer > is filled. But some megabyte rate chips such as BT expect fast response and > data should be pushed immediately. In order to fix this issue, We suggest > the use of the timer for polling DMA buffer. > In our test, no data loss occurred at high-baudrate as compared with interrupt- > driven (We tested with 3Mbps). > We changes: > > - We add timer for polling. If we set poll_timer to 10, every 10ms, > timer handler checks the residue in the dma buffer and transfer data > to the tty. Also, last_residue is updated for the next polling. > > - poll_timeout is used to prevent the timer's system cost. > If poll_timeout is set to 3000 and no data is received in 3 seconds, > we inactivate poll timer and driver falls back to interrupt-driven. > When data is received again in FIFO and UART irq is occurred, we switch > back to DMA mode and start polling. > > - We use consistent DMA mappings to avoid from the frequent cache operation > of the timer function for default. > > - pl011_dma_rx_chars is modified. the pending size is recalculated because > data can be taken by polling. > > - the polling time is adjusted if dma rx poll is enabled but no rate is > specified. Ideal polling interval to push 1 character at every interval > is the reciprocal of 'baud rate / 10 line bits per character / 1000 ms > per sec'. But It is very aggressive to system. Experimentally, > '10000000 / baud' is suitable to receive dozens of characters. the poll rate > can be specified statically by dma_rx_poll_rate of the platform data as well. > > Changes compared to v1: > - Use of consistent DMA mappings. > - Added dma_rx_poll_rate in platform data to specify the polling interval. > - Added dma_rx_poll_timeout in platform data to specify the polling timeout. > > Changes compared to v2: > - Use of consistent DMA mappings for default. > - Added dma_rx_poll_enable in platform data to adjust the polling time > according to the baud rate. > - remove unnecessary lock from the polling function. > > Signed-off-by: Chanho Min <chanho.min@xxxxxxx> This patch was line-wrapped and I had to fix it up by editing it by hand. Please fix your email client to not have this happen again. greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html