Commit 9987f76a authored by Hector Palacios's avatar Hector Palacios Committed by Greg Kroah-Hartman

serial: mxs-auart: set the FIFO size to DMA buffer size

When DMA is enabled (with hardware flow control enabled) the FIFO size
must be set to the size of the DMA buffer, as this is the size the tty
subsystem can use.
Signed-off-by: default avatarHector Palacios <hector.palacios@digi.com>
Reviewed-by: default avatarMarek Vasut <marex@denx.de>
Acked-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 7ea816a0
...@@ -39,6 +39,7 @@ ...@@ -39,6 +39,7 @@
#include <asm/cacheflush.h> #include <asm/cacheflush.h>
#define MXS_AUART_PORTS 5 #define MXS_AUART_PORTS 5
#define MXS_AUART_FIFO_SIZE 16
#define AUART_CTRL0 0x00000000 #define AUART_CTRL0 0x00000000
#define AUART_CTRL0_SET 0x00000004 #define AUART_CTRL0_SET 0x00000004
...@@ -548,6 +549,9 @@ static int mxs_auart_dma_init(struct mxs_auart_port *s) ...@@ -548,6 +549,9 @@ static int mxs_auart_dma_init(struct mxs_auart_port *s)
s->flags |= MXS_AUART_DMA_ENABLED; s->flags |= MXS_AUART_DMA_ENABLED;
dev_dbg(s->dev, "enabled the DMA support."); dev_dbg(s->dev, "enabled the DMA support.");
/* The DMA buffer is now the FIFO the TTY subsystem can use */
s->port.fifosize = UART_XMIT_SIZE;
return 0; return 0;
err_out: err_out:
...@@ -741,6 +745,9 @@ static int mxs_auart_startup(struct uart_port *u) ...@@ -741,6 +745,9 @@ static int mxs_auart_startup(struct uart_port *u)
writel(AUART_INTR_RXIEN | AUART_INTR_RTIEN | AUART_INTR_CTSMIEN, writel(AUART_INTR_RXIEN | AUART_INTR_RTIEN | AUART_INTR_CTSMIEN,
u->membase + AUART_INTR); u->membase + AUART_INTR);
/* Reset FIFO size (it could have changed if DMA was enabled) */
u->fifosize = MXS_AUART_FIFO_SIZE;
/* /*
* Enable fifo so all four bytes of a DMA word are written to * Enable fifo so all four bytes of a DMA word are written to
* output (otherwise, only the LSB is written, ie. 1 in 4 bytes) * output (otherwise, only the LSB is written, ie. 1 in 4 bytes)
...@@ -1056,7 +1063,7 @@ static int mxs_auart_probe(struct platform_device *pdev) ...@@ -1056,7 +1063,7 @@ static int mxs_auart_probe(struct platform_device *pdev)
s->port.membase = ioremap(r->start, resource_size(r)); s->port.membase = ioremap(r->start, resource_size(r));
s->port.ops = &mxs_auart_ops; s->port.ops = &mxs_auart_ops;
s->port.iotype = UPIO_MEM; s->port.iotype = UPIO_MEM;
s->port.fifosize = 16; s->port.fifosize = MXS_AUART_FIFO_SIZE;
s->port.uartclk = clk_get_rate(s->clk); s->port.uartclk = clk_get_rate(s->clk);
s->port.type = PORT_IMX; s->port.type = PORT_IMX;
s->port.dev = s->dev = &pdev->dev; s->port.dev = s->dev = &pdev->dev;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment