[openwrt/openwrt] imx6: disable dma on uart

LEDE Commits lede-commits at lists.infradead.org
Thu Feb 22 03:47:26 PST 2018

nbd pushed a commit to openwrt/openwrt.git, branch master:

commit efb362cd93b0c3d308685a37417fb62991878f4c
Author: Koen Vandeputte <koen.vandeputte at ncentric.com>
AuthorDate: Thu Feb 22 12:20:16 2018 +0100

    imx6: disable dma on uart
    When this target got updated to 4.14, this patch got removed to
    re-evaluate if it was still needed.
    Extensive testing now shows this issue is still present.
    Let's re-add the patch to fix it for now.
    As the uart bus is very low bandwidth .. performance impact is negligible.
    Boot log:
    [   22.513051] imx-uart 2020000.serial: DMA transaction error.
    [   22.522721] imx-uart 2020000.serial: DMA transaction error.
    As a sidenote:
    The patch mentiones an issue with RS485, but the bootlog
    errors above were recorded with the uart ports in standard RS232 mode.
    Compile/Run-tested on imx6/GW5200
    Signed-off-by: Koen Vandeputte <koen.vandeputte at ncentric.com>
 .../imx6/patches-4.14/210-disable-uart-dma.patch   | 23 ++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/target/linux/imx6/patches-4.14/210-disable-uart-dma.patch b/target/linux/imx6/patches-4.14/210-disable-uart-dma.patch
new file mode 100644
index 0000000..6abbb93
--- /dev/null
+++ b/target/linux/imx6/patches-4.14/210-disable-uart-dma.patch
@@ -0,0 +1,23 @@
+Based on following upstream patch by Tim Harvey (Gateworks):
+TX complete DMA messages are getting missed.
+This is also currently an issue in mainline.
+For now we will disable DMA in serial/imx.c.
+This resolves an issue encountered with RS485 transmit.
+--- a/drivers/tty/serial/imx.c
++++ b/drivers/tty/serial/imx.c
+@@ -1268,10 +1268,6 @@ static int imx_startup(struct uart_port
+ 	writel(temp & ~UCR4_DREN, sport->port.membase + UCR4);
+-	/* Can we enable the DMA support? */
+-	if (!uart_console(port) && !sport->dma_is_inited)
+-		imx_uart_dma_init(sport);
+ 	spin_lock_irqsave(&sport->port.lock, flags);
+ 	/* Reset fifo's and state machines */
+ 	i = 100;

More information about the lede-commits mailing list