diff options
author | Per Forlin <per.forlin@stericsson.com> | 2011-10-18 18:39:47 +0200 |
---|---|---|
committer | Linus WALLEIJ <linus.walleij@stericsson.com> | 2011-10-25 13:08:32 +0200 |
commit | 7fbd14f639e61126e7067d656174858e4998e277 (patch) | |
tree | ec2fd9b8cabecb59859ef4073a7d77ff1b188d8c | |
parent | 2bfecb709f07e30cfbde59126ff3f726542799de (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>
-rw-r--r-- | drivers/dma/ste_dma40.c | 8 |
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); |