ata: sata_dwc_460ex: burst size must be in items not bytes
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 26 Apr 2016 09:03:05 +0000 (12:03 +0300)
committerTejun Heo <tj@kernel.org>
Tue, 10 May 2016 16:29:18 +0000 (12:29 -0400)
The burst size as defined by DMAengine API is in items of address width. Derive
burst size from AHB_DMA_BRST_DFLT (64 bytes) by dividing it to
DMA_SLAVE_BUSWIDTH_4_BYTES (4 bytes) that gives us 16 items.

Tested-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
drivers/ata/sata_dwc_460ex.c

index aee8873..4cac27d 100644 (file)
@@ -65,7 +65,7 @@
 #define NO_IRQ         0
 #endif
 
-#define AHB_DMA_BRST_DFLT      64      /* 16 data items burst length*/
+#define AHB_DMA_BRST_DFLT      64      /* 16 data items burst length */
 
 enum {
        SATA_DWC_MAX_PORTS = 1,
@@ -318,8 +318,8 @@ static struct dma_async_tx_descriptor *dma_dwc_xfer_setup(struct ata_queued_cmd
        }
 
        sconf.direction = qc->dma_dir;
-       sconf.src_maxburst = AHB_DMA_BRST_DFLT;
-       sconf.dst_maxburst = AHB_DMA_BRST_DFLT;
+       sconf.src_maxburst = AHB_DMA_BRST_DFLT / 4;     /* in items */
+       sconf.dst_maxburst = AHB_DMA_BRST_DFLT / 4;     /* in items */
        sconf.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
        sconf.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;