summaryrefslogtreecommitdiff
path: root/drivers/dma/ste_dma40.c
diff options
context:
space:
mode:
authorPer Forlin <per.forlin@stericsson.com>2011-10-18 18:39:47 +0200
committerLinus WALLEIJ <linus.walleij@stericsson.com>2011-10-25 13:08:32 +0200
commit7fbd14f639e61126e7067d656174858e4998e277 (patch)
treeec2fd9b8cabecb59859ef4073a7d77ff1b188d8c /drivers/dma/ste_dma40.c
parent2bfecb709f07e30cfbde59126ff3f726542799de (diff)
dmaengine/ste_dma40: set dma max seg to 0xffff
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. ---------------- commit d49278e3351b34870cbffffc5067348a318e7b06 Author: Per Forlin <per.forlin@stericsson.com> Date: Mon Dec 20 18:31:38 2010 +0100 dmaengine: dma40: Add support to split up large elements ---------------- This patch has been rejected or lost on kernel 3.0. It exists on mainline kernel 3.0. ST-Ericsson ID: 363565 ST-Ericsson FOSS-OUT ID: Trivial ST-Ericsson Linux next: NA Change-Id: I7c0bf09df04cb20da2164c5c40f3a0ae73e65289 Signed-off-by: Per Forlin <per.forlin@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/34405 Reviewed-by: QATOOLS Reviewed-by: Linus WALLEIJ <linus.walleij@stericsson.com>
Diffstat (limited to 'drivers/dma/ste_dma40.c')
-rw-r--r--drivers/dma/ste_dma40.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c
index 047a7de76c7..9430f05c4c7 100644
--- a/drivers/dma/ste_dma40.c
+++ b/drivers/dma/ste_dma40.c
@@ -346,6 +346,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;
@@ -3613,6 +3614,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, 0xffff);
+ if (err) {
+ d40_err(&pdev->dev, "Failed to set dma max seg size\n");
+ goto failure;
+ }
+
d40_hw_init(base);
spin_lock_irqsave(&base->usage_lock, flags);