diff mbox

[LEDE-DEV] imx6: disable UART dma

Message ID 1494928661-6907-1-git-send-email-koen.vandeputte@ncentric.com
State Changes Requested
Headers show

Commit Message

Koen Vandeputte May 16, 2017, 9:57 a.m. UTC
Fixes these prints on boot:

[   13.785600] imx-uart 2020000.serial: DMA transaction error.
[   13.793134] imx-uart 2020000.serial: DMA transaction error.
[   13.798721] imx-uart 2020000.serial: DMA transaction error.

These error prints can only be seen when viewing the bootlog through
uart.
They are not visible when consulting dmesg.

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.

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
---

WARNING!
This patch is based on kernel 4.9.28 and thus needs following patch applied first:

"kernel: update kernel 4.9 to 4.9.28"


 target/linux/imx6/patches-4.9/210-disable-uart-dma.patch | 13 +++++++++++++
 1 file changed, 13 insertions(+)
 create mode 100644 target/linux/imx6/patches-4.9/210-disable-uart-dma.patch

Comments

John Crispin May 24, 2017, 9:19 a.m. UTC | #1
On 16/05/17 11:57, Koen Vandeputte wrote:
> Fixes these prints on boot:
>
> [   13.785600] imx-uart 2020000.serial: DMA transaction error.
> [   13.793134] imx-uart 2020000.serial: DMA transaction error.
> [   13.798721] imx-uart 2020000.serial: DMA transaction error.
>
> These error prints can only be seen when viewing the bootlog through
> uart.
> They are not visible when consulting dmesg.
>
> 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.
>
> Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
> ---
>
> WARNING!
> This patch is based on kernel 4.9.28 and thus needs following patch applied first:
>
> "kernel: update kernel 4.9 to 4.9.28"
>
>
>   target/linux/imx6/patches-4.9/210-disable-uart-dma.patch | 13 +++++++++++++
>   1 file changed, 13 insertions(+)
>   create mode 100644 target/linux/imx6/patches-4.9/210-disable-uart-dma.patch
>
> diff --git a/target/linux/imx6/patches-4.9/210-disable-uart-dma.patch b/target/linux/imx6/patches-4.9/210-disable-uart-dma.patch
> new file mode 100644
> index 0000000..a370420
> --- /dev/null
> +++ b/target/linux/imx6/patches-4.9/210-disable-uart-dma.patch
> @@ -0,0 +1,13 @@
> +--- a/drivers/tty/serial/imx.c
> ++++ b/drivers/tty/serial/imx.c
> +@@ -1269,8 +1269,10 @@ 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 */
Hi,

please update the patch and make it just remove the lines rather than 
commenting them out. please also make sure that the patch that you are 
adding is annotated explaining why it is required.

     John
diff mbox

Patch

diff --git a/target/linux/imx6/patches-4.9/210-disable-uart-dma.patch b/target/linux/imx6/patches-4.9/210-disable-uart-dma.patch
new file mode 100644
index 0000000..a370420
--- /dev/null
+++ b/target/linux/imx6/patches-4.9/210-disable-uart-dma.patch
@@ -0,0 +1,13 @@ 
+--- a/drivers/tty/serial/imx.c
++++ b/drivers/tty/serial/imx.c
+@@ -1269,8 +1269,10 @@ 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 */