From: Per Forlin <[email protected]>

Maximum DMA seg size is (0xffff x data_width).  If max seg
size is not set it deafults to 64k.  This results in failure
if transferring 64k in byte mode.
Large seg sizes may be supported by splitting large transfer.

Signed-off-by: Per Forlin <[email protected]>
Acked-by: Linus Walleij <[email protected]>
Signed-off-by: Fabio Baltieri <[email protected]>
---
 drivers/dma/ste_dma40.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c
index 23c5573..f5724d9 100644
--- a/drivers/dma/ste_dma40.c
+++ b/drivers/dma/ste_dma40.c
@@ -344,6 +344,7 @@ struct d40_base {
        int                               irq;
        int                               num_phy_chans;
        int                               num_log_chans;
+       struct device_dma_parameters      dma_parms;
        struct dma_device                 dma_both;
        struct dma_device                 dma_slave;
        struct dma_device                 dma_memcpy;
@@ -3362,6 +3363,13 @@ static int __init d40_probe(struct platform_device *pdev)
        if (err)
                goto failure;
 
+       base->dev->dma_parms = &base->dma_parms;
+       err = dma_set_max_seg_size(base->dev, STEDMA40_MAX_SEG_SIZE);
+       if (err) {
+               d40_err(&pdev->dev, "Failed to set dma max seg size\n");
+               goto failure;
+       }
+
        d40_hw_init(base);
 
        dev_info(base->dev, "initialized\n");
-- 
1.7.12.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to