Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1524715

[PATCH 2/4] spi: spi-fsl-dspi: Fix incorrect DMA setup

From Sanchayan Maity <maitysanchayan@gmail.com>
Newsgroups linux.kernel
Subject [PATCH 2/4] spi: spi-fsl-dspi: Fix incorrect DMA setup
Date 2016-11-17 19:50 +0100
Message-ID <sEzUZ-4p4-15@gated-at.bofh.it> (permalink)
References <sCj7X-4hu-13@gated-at.bofh.it> <sEzBD-4hS-7@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Currently dmaengine_prep_slave_single was being called with length
set to the complete DMA buffer size. This resulted in unwanted bytes
being transferred to the SPI register leading to clock and MOSI lines
having unwanted data even after chip select got deasserted and the
required bytes having been transferred.

Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
---
 drivers/spi/spi-fsl-dspi.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c
index b1ee1f5..aee8c88 100644
--- a/drivers/spi/spi-fsl-dspi.c
+++ b/drivers/spi/spi-fsl-dspi.c
@@ -265,7 +265,10 @@ static int dspi_next_xfer_dma_submit(struct fsl_dspi *dspi)
 
 	dma->tx_desc = dmaengine_prep_slave_single(dma->chan_tx,
 					dma->tx_dma_phys,
-					DSPI_DMA_BUFSIZE, DMA_MEM_TO_DEV,
+					dma->curr_xfer_len *
+					DMA_SLAVE_BUSWIDTH_4_BYTES /
+					(tx_word ? 2 : 1),
+					DMA_MEM_TO_DEV,
 					DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
 	if (!dma->tx_desc) {
 		dev_err(dev, "Not able to get desc for DMA xfer\n");
@@ -281,7 +284,10 @@ static int dspi_next_xfer_dma_submit(struct fsl_dspi *dspi)
 
 	dma->rx_desc = dmaengine_prep_slave_single(dma->chan_rx,
 					dma->rx_dma_phys,
-					DSPI_DMA_BUFSIZE, DMA_DEV_TO_MEM,
+					dma->curr_xfer_len *
+					DMA_SLAVE_BUSWIDTH_4_BYTES /
+					(tx_word ? 2 : 1),
+					DMA_DEV_TO_MEM,
 					DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
 	if (!dma->rx_desc) {
 		dev_err(dev, "Not able to get desc for DMA xfer\n");
-- 
2.10.2

Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 0/4] Fixes for Vybrid SPI DMA implementation Sanchayan Maity <maitysanchayan@gmail.com> - 2016-11-17 19:50 +0100
  [PATCH 2/4] spi: spi-fsl-dspi: Fix incorrect DMA setup Sanchayan Maity <maitysanchayan@gmail.com> - 2016-11-17 19:50 +0100
    Re: [PATCH 2/4] spi: spi-fsl-dspi: Fix incorrect DMA setup Stefan Agner <stefan@agner.ch> - 2016-11-18 02:10 +0100
      Re: [PATCH 2/4] spi: spi-fsl-dspi: Fix incorrect DMA setup maitysanchayan@gmail.com - 2016-11-18 09:20 +0100
        Re: [PATCH 2/4] spi: spi-fsl-dspi: Fix incorrect DMA setup Stefan Agner <stefan@agner.ch> - 2016-11-19 00:50 +0100
  [PATCH 4/4] spi: spi-fsl-dspi: Minor code cleanup and error path fixes Sanchayan Maity <maitysanchayan@gmail.com> - 2016-11-17 20:00 +0100

csiph-web