patch "Revert "serial: imx: initialized DMA w/o HW flow enabled"" added to tty-linus
Subsystems (3)
This is a note to let you know that I've just added the patch titled
Revert "serial: imx: initialized DMA w/o HW flow enabled"
to my tty git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git
in the tty-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
Quoted 1 line
From
907eda32a36fcdb979bdb91ea097abb3dd2c23c9Mon Sep 17 00:00:00 2001
From: David Jander <[email protected]>
Date: Fri, 26 Jun 2015 08:11:30 +0200
Subject: Revert "serial: imx: initialized DMA w/o HW flow enabled"
This reverts commit 068500e08dc87ea9a453cc4a500cf3ab28d0f936.
According to some tests, SDMA support is broken at least for i.MX6 without HW flow control. Different forms of data-corruption appear either with the ROM firmware for the SDMA controller as well as when loading Freescale provided SDMA firmware versions 1.1 or 3.1.
--- drivers/tty/serial/imx.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-)
drivers/tty/serial/imx.c +7 -8
@@ -1121,11 +1121,6 @@ static int imx_startup(struct uart_port *port)writel (temp & ~UCR4_DREN , sport->port.membase +UCR4 ); -/* Can we enable the DMA support? */ -if (is_imx6q_uart (sport) && !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 ;
@@ -1143,9 +1138,6 @@ static int imx_startup(struct uart_port *port)writel (USR1_RTSD , sport->port.membase +USR1 );writel (USR2_ORE , sport->port.membase +USR2 ); -if (sport->dma_is_inited && !sport->dma_is_enabled) -imx_enable_dma (sport); - temp =readl (sport->port.membase +UCR1 ); temp |=UCR1_RRDYEN |UCR1_RTSDEN |UCR1_UARTEN ;
@@ -1316,6 +1308,11 @@ imx_set_termios(struct uart_port *port, struct ktermios *termios, }else { ucr2 |=UCR2_CTSC ; } + +/* Can we enable the DMA support? */ +if (is_imx6q_uart (sport) && !uart_console (port) + && !sport->dma_is_inited) +imx_uart_dma_init (sport); }else { termios->c_cflag &= ~CRTSCTS ; }
@@ -1432,6 +1429,8 @@ imx_set_termios(struct uart_port *port, struct ktermios *termios,if (UART_ENABLE_MS (&sport->port, termios->c_cflag))imx_enable_ms (&sport->port); +if (sport->dma_is_inited && !sport->dma_is_enabled) +imx_enable_dma (sport);spin_unlock_irqrestore (&sport->port.lock, flags); }
Signature · 1 line
2.4.6