• Huang Shijie's avatar
    serial: imx: implement the flush_buffer hook · eb56b7ed
    Huang Shijie authored
    The current driver does not implement the flush_buffer hook for
    uart_ops. When we enable the DMA for the driver, and test it with Bluetooth,
    we may meet the following bug for TX:
    
        [1] User application may call the flush operation at any time.
            The uart_flush_buffer() calls the uart_circ_clear() to set
            the xmit->head and xmit->tail with 0.
    
        [2] The TX DMA callback can be called at any time too.
            The dma_tx_call() will update the xmit->tail.
    
        If [2] occurs just after the [1], we will get the wrong xmit->tail.
    
    This patch implements the flush_buffer hook to fix this issue.
    Signed-off-by: default avatarHuang Shijie <b32955@freescale.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    eb56b7ed
imx.c 53.3 KB