diff options
author | Rabin Vincent <rabin.vincent@stericsson.com> | 2011-01-25 11:18:22 +0100 |
---|---|---|
committer | Linus WALLEIJ <linus.walleij@stericsson.com> | 2011-10-20 11:04:03 +0200 |
commit | 5a2200888e5f95d9de4ac33ee0ae0ec9fd4e3f74 (patch) | |
tree | 5e39758c26ab06d30a8a7a56d057b45f6f671a64 /drivers/dma | |
parent | c648fa58260b2537acfbe4bcec0e78c027ce7d75 (diff) |
dma40: remove export of stedma40_memcpy_sg
The dmaengine framework has the API for this now.
ST-Ericsson ID: 362972
ST-Ericsson FOSS-OUT ID: NA
ST-Ericsson Linux next: NA
Change-Id: I60e6df6532ec0d263bf40bb4b52f3f86d01b9989
Depends-on: I8ad8fb94eca418f889d31a37940b2d6fa09da404
Acked-by: Per Forlin <per.forlin@stericsson.com>
Acked-by: Jonas Aaberg <jonas.aberg@stericsson.com>
Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com>
Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/34417
Tested-by: Narayanan GOPALAKRISHNAN <narayanan.gopalakrishnan@stericsson.com>
Reviewed-by: QATOOLS
Diffstat (limited to 'drivers/dma')
-rw-r--r-- | drivers/dma/ste_dma40.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c index 3fea551f6cd..fe09b89d3a2 100644 --- a/drivers/dma/ste_dma40.c +++ b/drivers/dma/ste_dma40.c @@ -2063,10 +2063,11 @@ err: return NULL; } -struct dma_async_tx_descriptor *stedma40_memcpy_sg(struct dma_chan *chan, +static struct dma_async_tx_descriptor *stedma40_memcpy_sg(struct dma_chan *chan, struct scatterlist *sgl_dst, + unsigned int dst_nents, struct scatterlist *sgl_src, - unsigned int sgl_len, + unsigned int src_nents, unsigned long dma_flags) { struct d40_desc *d40d; @@ -2082,7 +2083,7 @@ struct dma_async_tx_descriptor *stedma40_memcpy_sg(struct dma_chan *chan, spin_lock_irqsave(&d40c->lock, flags); - d40d = d40_prep_desc(d40c, sgl_dst, sgl_len, dma_flags); + d40d = d40_prep_desc(d40c, sgl_dst, src_nents, dma_flags); if (!d40d) goto err; @@ -2090,10 +2091,10 @@ struct dma_async_tx_descriptor *stedma40_memcpy_sg(struct dma_chan *chan, if (chan_is_logical(d40c)) { err = d40_prep_sg_log(d40c, d40d, sgl_src, sgl_dst, - sgl_len, DMA_NONE, 0); + src_nents, DMA_NONE, 0); } else { err = d40_prep_sg_phy(d40c, d40d, sgl_src, sgl_dst, - sgl_len, DMA_NONE, 0); + src_nents, DMA_NONE, 0); } if (err < 0) @@ -2108,7 +2109,6 @@ err: spin_unlock_irqrestore(&d40c->lock, flags); return NULL; } -EXPORT_SYMBOL(stedma40_memcpy_sg); bool stedma40_filter(struct dma_chan *chan, void *data) { @@ -2272,7 +2272,7 @@ static struct dma_async_tx_descriptor *d40_prep_memcpy(struct dma_chan *chan, sg_dma_len(&dst_sg) = size; sg_dma_len(&src_sg) = size; - return stedma40_memcpy_sg(chan, &dst_sg, &src_sg, 1, dma_flags); + return stedma40_memcpy_sg(chan, &dst_sg, 1, &src_sg, 1, dma_flags); } int stedma40_set_dev_addr(struct dma_chan *chan, @@ -2939,6 +2939,9 @@ static void d40_ops_init(struct d40_base *base, struct dma_device *dev) dev->copy_align = 2; } + if (dma_has_cap(DMA_SG, dev->cap_mask)) + dev->device_prep_dma_sg = stedma40_memcpy_sg; + if (dma_has_cap(DMA_CYCLIC, dev->cap_mask)) dev->device_prep_dma_cyclic = dma40_prep_dma_cyclic; @@ -2976,6 +2979,7 @@ static int __init d40_dmaengine_init(struct d40_base *base, dma_cap_zero(base->dma_memcpy.cap_mask); dma_cap_set(DMA_MEMCPY, base->dma_memcpy.cap_mask); + dma_cap_set(DMA_SG, base->dma_memcpy.cap_mask); d40_ops_init(base, &base->dma_memcpy); @@ -2993,6 +2997,7 @@ static int __init d40_dmaengine_init(struct d40_base *base, dma_cap_zero(base->dma_both.cap_mask); dma_cap_set(DMA_SLAVE, base->dma_both.cap_mask); dma_cap_set(DMA_MEMCPY, base->dma_both.cap_mask); + dma_cap_set(DMA_SG, base->dma_both.cap_mask); dma_cap_set(DMA_CYCLIC, base->dma_both.cap_mask); d40_ops_init(base, &base->dma_both); |