mirror of
https://github.com/torvalds/linux.git
synced 2024-12-09 20:51:43 +00:00
serial: samsung: fix maxburst parameter for DMA transactions
The best granularity of residue that DMA engine can report is in the BURST
units, so the serial driver must use MAXBURST = 1 and DMA_SLAVE_BUSWIDTH_1_BYTE
if it relies on exact number of bytes transferred by DMA engine.
Fixes: 62c37eedb7
("serial: samsung: add dma reqest/release functions")
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
2ccdb55e52
commit
aa2f80e752
@ -862,15 +862,12 @@ static int s3c24xx_serial_request_dma(struct s3c24xx_uart_port *p)
|
||||
dma->rx_conf.direction = DMA_DEV_TO_MEM;
|
||||
dma->rx_conf.src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;
|
||||
dma->rx_conf.src_addr = p->port.mapbase + S3C2410_URXH;
|
||||
dma->rx_conf.src_maxburst = 16;
|
||||
dma->rx_conf.src_maxburst = 1;
|
||||
|
||||
dma->tx_conf.direction = DMA_MEM_TO_DEV;
|
||||
dma->tx_conf.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;
|
||||
dma->tx_conf.dst_addr = p->port.mapbase + S3C2410_UTXH;
|
||||
if (dma_get_cache_alignment() >= 16)
|
||||
dma->tx_conf.dst_maxburst = 16;
|
||||
else
|
||||
dma->tx_conf.dst_maxburst = 1;
|
||||
dma->tx_conf.dst_maxburst = 1;
|
||||
|
||||
dma->rx_chan = dma_request_chan(p->port.dev, "rx");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user