dmaengine: ste_dma40: limit burst size to 16
authorPer Forlin <per.forlin@stericsson.com>
Thu, 13 Oct 2011 10:11:36 +0000 (12:11 +0200)
committerFabio Baltieri <fabio.baltieri@linaro.org>
Mon, 14 Jan 2013 09:50:27 +0000 (10:50 +0100)
The client is not aware of the maximum burst size in the dma driver.  If
the size exceeds 16 set max to 16.

Signed-off-by: Per Forlin <per.forlin@stericsson.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Fabio Baltieri <fabio.baltieri@linaro.org>
drivers/dma/ste_dma40.c

index f5724d95ed48c525475c07edb537b0a1f6fe2d7b..2d0c63dcd84c16d69b6df3d53da9997d26835734 100644 (file)
@@ -2578,6 +2578,14 @@ static int d40_set_runtime_config(struct dma_chan *chan,
                return -EINVAL;
        }
 
+       if (src_maxburst > 16) {
+               src_maxburst = 16;
+               dst_maxburst = src_maxburst * src_addr_width / dst_addr_width;
+       } else if (dst_maxburst > 16) {
+               dst_maxburst = 16;
+               src_maxburst = dst_maxburst * dst_addr_width / src_addr_width;
+       }
+
        ret = dma40_config_to_halfchannel(d40c, &cfg->src_info,
                                          src_addr_width,
                                          src_maxburst);