imx6: disable dma on uart
authorKoen Vandeputte <koen.vandeputte@ncentric.com>
Thu, 22 Feb 2018 11:20:16 +0000 (12:20 +0100)
committerFelix Fietkau <nbd@nbd.name>
Thu, 22 Feb 2018 11:46:49 +0000 (12:46 +0100)
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@ncentric.com>
target/linux/imx6/patches-4.14/210-disable-uart-dma.patch [new file with mode: 0644]

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 (file)
index 0000000..6abbb93
--- /dev/null
@@ -0,0 +1,23 @@
+Based on following upstream patch by Tim Harvey (Gateworks):
+
+https://github.com/Gateworks/openwrt/commit/80a01b6582f94c4547f39d3a25e0a1e9b6eb9877
+
+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;