diff options
author | Hoan Nguyen An <na-hoan@jinso.co.jp> | 2019-01-18 10:29:31 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2019-01-18 19:20:52 +0100 |
commit | d05e3eadb1bccbf276742e13b2c898959c310ce6 (patch) | |
tree | ec9948c58091cf2345f465736434d03d1696d378 /drivers/spi/spi-sh-msiof.c | |
parent | spi: sh-msiof: fix *info pointer in request_dma() (diff) | |
download | linux-d05e3eadb1bccbf276742e13b2c898959c310ce6.tar.xz linux-d05e3eadb1bccbf276742e13b2c898959c310ce6.zip |
spi: sh-msiof: Use DMA if possible
Currently, this driver only supports feature for DMA 32-bits.
In this case, only if the data length is divisible by 4 to use
DMA, otherwise PIO will be used. This patch will suggest use
the DMA 32-bits with 4bytes of words, then the remaining data
will be transmitted by PIO mode.
Signed-off-by: Hoan Nguyen An <na-hoan@jinso.co.jp>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/spi/spi-sh-msiof.c')
-rw-r--r-- | drivers/spi/spi-sh-msiof.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/drivers/spi/spi-sh-msiof.c b/drivers/spi/spi-sh-msiof.c index 351470bc020d..617cdf3be050 100644 --- a/drivers/spi/spi-sh-msiof.c +++ b/drivers/spi/spi-sh-msiof.c @@ -937,17 +937,13 @@ static int sh_msiof_transfer_one(struct spi_master *master, unsigned int l = 0; if (tx_buf) - l = min(len, p->tx_fifo_size * 4); + l = min(round_down(len, 4), p->tx_fifo_size * 4); if (rx_buf) - l = min(len, p->rx_fifo_size * 4); + l = min(round_down(len, 4), p->rx_fifo_size * 4); if (bits <= 8) { - if (l & 3) - break; copy32 = copy_bswap32; } else if (bits <= 16) { - if (l & 3) - break; copy32 = copy_wswap32; } else { copy32 = copy_plain32; |