There is no use for this when performing non DMA operations. So we
bypass the split.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulie...@suse.de>
---
 drivers/spi/spi-bcm2835.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c
index 37893313e595..649fd6caed35 100644
--- a/drivers/spi/spi-bcm2835.c
+++ b/drivers/spi/spi-bcm2835.c
@@ -861,15 +861,17 @@ static int bcm2835_spi_prepare_message(struct spi_master 
*master,
        u32 cs = bcm2835_rd(bs, BCM2835_SPI_CS);
        int ret;
 
-       /*
-        * DMA transfers are limited to 16 bit (0 to 65535 bytes) by the SPI HW
-        * due to DLEN. Split up transfers (32-bit FIFO aligned) if the limit is
-        * exceeded.
-        */
-       ret = spi_split_transfers_maxsize(master, msg, 65532,
-                                         GFP_KERNEL | GFP_DMA);
-       if (ret)
-               return ret;
+       if (master->can_dma) {
+               /*
+                * DMA transfers are limited to 16 bit (0 to 65535 bytes) by
+                * the SPI HW due to DLEN. Split up transfers (32-bit FIFO
+                * aligned) if the limit is exceeded.
+                */
+               ret = spi_split_transfers_maxsize(master, msg, 65532,
+                                                 GFP_KERNEL | GFP_DMA);
+               if (ret)
+                       return ret;
+       }
 
        cs &= ~(BCM2835_SPI_CS_CPOL | BCM2835_SPI_CS_CPHA);
 
-- 
2.21.0

Reply via email to