diff options
author | Koen Vandeputte <koen.vandeputte@ncentric.com> | 2018-02-22 12:20:16 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2018-02-22 12:46:49 +0100 |
commit | efb362cd93b0c3d308685a37417fb62991878f4c (patch) | |
tree | 02e4fbe0a9ccbd63f1e0356fef7a5506dfad578c | |
parent | aad1f11efe1c0f761d3454ac371fd98e65284b35 (diff) | |
download | upstream-efb362cd93b0c3d308685a37417fb62991878f4c.tar.gz upstream-efb362cd93b0c3d308685a37417fb62991878f4c.tar.bz2 upstream-efb362cd93b0c3d308685a37417fb62991878f4c.zip |
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@ncentric.com>
-rw-r--r-- | target/linux/imx6/patches-4.14/210-disable-uart-dma.patch | 23 |
1 files changed, 23 insertions, 0 deletions
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 0000000000..6abbb93301 --- /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): + +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; |