summaryrefslogtreecommitdiff
path: root/drivers/dma/ste_dma40.c
diff options
context:
space:
mode:
authorRabin Vincent <rabin.vincent@stericsson.com>2011-01-25 11:18:22 +0100
committerLinus WALLEIJ <linus.walleij@stericsson.com>2011-10-20 11:04:03 +0200
commit5a2200888e5f95d9de4ac33ee0ae0ec9fd4e3f74 (patch)
tree5e39758c26ab06d30a8a7a56d057b45f6f671a64 /drivers/dma/ste_dma40.c
parentc648fa58260b2537acfbe4bcec0e78c027ce7d75 (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/ste_dma40.c')
-rw-r--r--drivers/dma/ste_dma40.c19
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);