aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorPeter Ujfalusi <peter.ujfalusi@ti.com>2012-09-14 08:05:47 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-09-22 11:12:45 -0400
commitec8b5e48c03790a68cb875fe5064007a9cbdfdd0 (patch)
tree18c572345b2c54d3d50f234e0e913d9f227363ba /drivers
parent2dcdf570936168d488acf90be9b04a3d32dafce7 (diff)
dmaengine: Pass flags via device_prep_dma_cyclic() callback
Change the parameter list of device_prep_dma_cyclic() so the DMA drivers can receive the flags coming from clients. This feature can be used during audio operation to disable all audio related interrupts when the DMA_PREP_INTERRUPT is cleared from the flags. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com> Acked-by: Shawn Guo <shawn.guo@linaro.org> Acked-by: Vinod Koul <vinod.koul@linux.intel.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/dma/at_hdmac.c3
-rw-r--r--drivers/dma/ep93xx_dma.c4
-rw-r--r--drivers/dma/imx-dma.c2
-rw-r--r--drivers/dma/imx-sdma.c2
-rw-r--r--drivers/dma/mmp_tdma.c2
-rw-r--r--drivers/dma/mxs-dma.c2
-rw-r--r--drivers/dma/omap-dma.c3
-rw-r--r--drivers/dma/pl330.c2
-rw-r--r--drivers/dma/sa11x0-dma.c2
-rw-r--r--drivers/dma/sirf-dma.c2
-rw-r--r--drivers/dma/ste_dma40.c3
-rw-r--r--drivers/dma/tegra20-apb-dma.c2
12 files changed, 17 insertions, 12 deletions
diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c
index 3934fcc4e00b..7e5f6b65c651 100644
--- a/drivers/dma/at_hdmac.c
+++ b/drivers/dma/at_hdmac.c
@@ -841,12 +841,13 @@ atc_dma_cyclic_fill_desc(struct dma_chan *chan, struct at_desc *desc,
841 * @buf_len: total number of bytes for the entire buffer 841 * @buf_len: total number of bytes for the entire buffer
842 * @period_len: number of bytes for each period 842 * @period_len: number of bytes for each period
843 * @direction: transfer direction, to or from device 843 * @direction: transfer direction, to or from device
844 * @flags: tx descriptor status flags
844 * @context: transfer context (ignored) 845 * @context: transfer context (ignored)
845 */ 846 */
846static struct dma_async_tx_descriptor * 847static struct dma_async_tx_descriptor *
847atc_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len, 848atc_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len,
848 size_t period_len, enum dma_transfer_direction direction, 849 size_t period_len, enum dma_transfer_direction direction,
849 void *context) 850 unsigned long flags, void *context)
850{ 851{
851 struct at_dma_chan *atchan = to_at_dma_chan(chan); 852 struct at_dma_chan *atchan = to_at_dma_chan(chan);
852 struct at_dma_slave *atslave = chan->private; 853 struct at_dma_slave *atslave = chan->private;
diff --git a/drivers/dma/ep93xx_dma.c b/drivers/dma/ep93xx_dma.c
index c64917ec313d..493735b9b2c9 100644
--- a/drivers/dma/ep93xx_dma.c
+++ b/drivers/dma/ep93xx_dma.c
@@ -1120,6 +1120,7 @@ fail:
1120 * @buf_len: length of the buffer (in bytes) 1120 * @buf_len: length of the buffer (in bytes)
1121 * @period_len: lenght of a single period 1121 * @period_len: lenght of a single period
1122 * @dir: direction of the operation 1122 * @dir: direction of the operation
1123 * @flags: tx descriptor status flags
1123 * @context: operation context (ignored) 1124 * @context: operation context (ignored)
1124 * 1125 *
1125 * Prepares a descriptor for cyclic DMA operation. This means that once the 1126 * Prepares a descriptor for cyclic DMA operation. This means that once the
@@ -1133,7 +1134,8 @@ fail:
1133static struct dma_async_tx_descriptor * 1134static struct dma_async_tx_descriptor *
1134ep93xx_dma_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t dma_addr, 1135ep93xx_dma_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t dma_addr,
1135 size_t buf_len, size_t period_len, 1136 size_t buf_len, size_t period_len,
1136 enum dma_transfer_direction dir, void *context) 1137 enum dma_transfer_direction dir, unsigned long flags,
1138 void *context)
1137{ 1139{
1138 struct ep93xx_dma_chan *edmac = to_ep93xx_dma_chan(chan); 1140 struct ep93xx_dma_chan *edmac = to_ep93xx_dma_chan(chan);
1139 struct ep93xx_dma_desc *desc, *first; 1141 struct ep93xx_dma_desc *desc, *first;
diff --git a/drivers/dma/imx-dma.c b/drivers/dma/imx-dma.c
index 5084975d793c..41b4376eb614 100644
--- a/drivers/dma/imx-dma.c
+++ b/drivers/dma/imx-dma.c
@@ -801,7 +801,7 @@ static struct dma_async_tx_descriptor *imxdma_prep_slave_sg(
801static struct dma_async_tx_descriptor *imxdma_prep_dma_cyclic( 801static struct dma_async_tx_descriptor *imxdma_prep_dma_cyclic(
802 struct dma_chan *chan, dma_addr_t dma_addr, size_t buf_len, 802 struct dma_chan *chan, dma_addr_t dma_addr, size_t buf_len,
803 size_t period_len, enum dma_transfer_direction direction, 803 size_t period_len, enum dma_transfer_direction direction,
804 void *context) 804 unsigned long flags, void *context)
805{ 805{
806 struct imxdma_channel *imxdmac = to_imxdma_chan(chan); 806 struct imxdma_channel *imxdmac = to_imxdma_chan(chan);
807 struct imxdma_engine *imxdma = imxdmac->imxdma; 807 struct imxdma_engine *imxdma = imxdmac->imxdma;
diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c
index 1dc2a4ad0026..2c5fd3e9880c 100644
--- a/drivers/dma/imx-sdma.c
+++ b/drivers/dma/imx-sdma.c
@@ -1012,7 +1012,7 @@ err_out:
1012static struct dma_async_tx_descriptor *sdma_prep_dma_cyclic( 1012static struct dma_async_tx_descriptor *sdma_prep_dma_cyclic(
1013 struct dma_chan *chan, dma_addr_t dma_addr, size_t buf_len, 1013 struct dma_chan *chan, dma_addr_t dma_addr, size_t buf_len,
1014 size_t period_len, enum dma_transfer_direction direction, 1014 size_t period_len, enum dma_transfer_direction direction,
1015 void *context) 1015 unsigned long flags, void *context)
1016{ 1016{
1017 struct sdma_channel *sdmac = to_sdma_chan(chan); 1017 struct sdma_channel *sdmac = to_sdma_chan(chan);
1018 struct sdma_engine *sdma = sdmac->sdma; 1018 struct sdma_engine *sdma = sdmac->sdma;
diff --git a/drivers/dma/mmp_tdma.c b/drivers/dma/mmp_tdma.c
index 8a15cf2163dc..6d52bd43a527 100644
--- a/drivers/dma/mmp_tdma.c
+++ b/drivers/dma/mmp_tdma.c
@@ -358,7 +358,7 @@ struct mmp_tdma_desc *mmp_tdma_alloc_descriptor(struct mmp_tdma_chan *tdmac)
358static struct dma_async_tx_descriptor *mmp_tdma_prep_dma_cyclic( 358static struct dma_async_tx_descriptor *mmp_tdma_prep_dma_cyclic(
359 struct dma_chan *chan, dma_addr_t dma_addr, size_t buf_len, 359 struct dma_chan *chan, dma_addr_t dma_addr, size_t buf_len,
360 size_t period_len, enum dma_transfer_direction direction, 360 size_t period_len, enum dma_transfer_direction direction,
361 void *context) 361 unsigned long flags, void *context)
362{ 362{
363 struct mmp_tdma_chan *tdmac = to_mmp_tdma_chan(chan); 363 struct mmp_tdma_chan *tdmac = to_mmp_tdma_chan(chan);
364 struct mmp_tdma_desc *desc; 364 struct mmp_tdma_desc *desc;
diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
index 7f41b25805fa..734a4eb84d65 100644
--- a/drivers/dma/mxs-dma.c
+++ b/drivers/dma/mxs-dma.c
@@ -531,7 +531,7 @@ err_out:
531static struct dma_async_tx_descriptor *mxs_dma_prep_dma_cyclic( 531static struct dma_async_tx_descriptor *mxs_dma_prep_dma_cyclic(
532 struct dma_chan *chan, dma_addr_t dma_addr, size_t buf_len, 532 struct dma_chan *chan, dma_addr_t dma_addr, size_t buf_len,
533 size_t period_len, enum dma_transfer_direction direction, 533 size_t period_len, enum dma_transfer_direction direction,
534 void *context) 534 unsigned long flags, void *context)
535{ 535{
536 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan); 536 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan);
537 struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma; 537 struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma;
diff --git a/drivers/dma/omap-dma.c b/drivers/dma/omap-dma.c
index 71d786973dfd..4d2650f4202c 100644
--- a/drivers/dma/omap-dma.c
+++ b/drivers/dma/omap-dma.c
@@ -366,7 +366,8 @@ static struct dma_async_tx_descriptor *omap_dma_prep_slave_sg(
366 366
367static struct dma_async_tx_descriptor *omap_dma_prep_dma_cyclic( 367static struct dma_async_tx_descriptor *omap_dma_prep_dma_cyclic(
368 struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len, 368 struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len,
369 size_t period_len, enum dma_transfer_direction dir, void *context) 369 size_t period_len, enum dma_transfer_direction dir, unsigned long flags,
370 void *context)
370{ 371{
371 struct omap_chan *c = to_omap_dma_chan(chan); 372 struct omap_chan *c = to_omap_dma_chan(chan);
372 enum dma_slave_buswidth dev_width; 373 enum dma_slave_buswidth dev_width;
diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c
index e4feba6b03c0..00356458e399 100644
--- a/drivers/dma/pl330.c
+++ b/drivers/dma/pl330.c
@@ -2683,7 +2683,7 @@ static inline int get_burst_len(struct dma_pl330_desc *desc, size_t len)
2683static struct dma_async_tx_descriptor *pl330_prep_dma_cyclic( 2683static struct dma_async_tx_descriptor *pl330_prep_dma_cyclic(
2684 struct dma_chan *chan, dma_addr_t dma_addr, size_t len, 2684 struct dma_chan *chan, dma_addr_t dma_addr, size_t len,
2685 size_t period_len, enum dma_transfer_direction direction, 2685 size_t period_len, enum dma_transfer_direction direction,
2686 void *context) 2686 unsigned long flags, void *context)
2687{ 2687{
2688 struct dma_pl330_desc *desc; 2688 struct dma_pl330_desc *desc;
2689 struct dma_pl330_chan *pch = to_pchan(chan); 2689 struct dma_pl330_chan *pch = to_pchan(chan);
diff --git a/drivers/dma/sa11x0-dma.c b/drivers/dma/sa11x0-dma.c
index f5a73606217e..b893159c1ecb 100644
--- a/drivers/dma/sa11x0-dma.c
+++ b/drivers/dma/sa11x0-dma.c
@@ -614,7 +614,7 @@ static struct dma_async_tx_descriptor *sa11x0_dma_prep_slave_sg(
614 614
615static struct dma_async_tx_descriptor *sa11x0_dma_prep_dma_cyclic( 615static struct dma_async_tx_descriptor *sa11x0_dma_prep_dma_cyclic(
616 struct dma_chan *chan, dma_addr_t addr, size_t size, size_t period, 616 struct dma_chan *chan, dma_addr_t addr, size_t size, size_t period,
617 enum dma_transfer_direction dir, void *context) 617 enum dma_transfer_direction dir, unsigned long flags, void *context)
618{ 618{
619 struct sa11x0_dma_chan *c = to_sa11x0_dma_chan(chan); 619 struct sa11x0_dma_chan *c = to_sa11x0_dma_chan(chan);
620 struct sa11x0_dma_desc *txd; 620 struct sa11x0_dma_desc *txd;
diff --git a/drivers/dma/sirf-dma.c b/drivers/dma/sirf-dma.c
index 434ad31174f2..3eed8b35b0f1 100644
--- a/drivers/dma/sirf-dma.c
+++ b/drivers/dma/sirf-dma.c
@@ -489,7 +489,7 @@ err_dir:
489static struct dma_async_tx_descriptor * 489static struct dma_async_tx_descriptor *
490sirfsoc_dma_prep_cyclic(struct dma_chan *chan, dma_addr_t addr, 490sirfsoc_dma_prep_cyclic(struct dma_chan *chan, dma_addr_t addr,
491 size_t buf_len, size_t period_len, 491 size_t buf_len, size_t period_len,
492 enum dma_transfer_direction direction, void *context) 492 enum dma_transfer_direction direction, unsigned long flags, void *context)
493{ 493{
494 struct sirfsoc_dma_chan *schan = dma_chan_to_sirfsoc_dma_chan(chan); 494 struct sirfsoc_dma_chan *schan = dma_chan_to_sirfsoc_dma_chan(chan);
495 struct sirfsoc_dma_desc *sdesc = NULL; 495 struct sirfsoc_dma_desc *sdesc = NULL;
diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c
index 000d309602b2..eee8d9b9a20b 100644
--- a/drivers/dma/ste_dma40.c
+++ b/drivers/dma/ste_dma40.c
@@ -2347,7 +2347,8 @@ static struct dma_async_tx_descriptor *d40_prep_slave_sg(struct dma_chan *chan,
2347static struct dma_async_tx_descriptor * 2347static struct dma_async_tx_descriptor *
2348dma40_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t dma_addr, 2348dma40_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t dma_addr,
2349 size_t buf_len, size_t period_len, 2349 size_t buf_len, size_t period_len,
2350 enum dma_transfer_direction direction, void *context) 2350 enum dma_transfer_direction direction, unsigned long flags,
2351 void *context)
2351{ 2352{
2352 unsigned int periods = buf_len / period_len; 2353 unsigned int periods = buf_len / period_len;
2353 struct dma_async_tx_descriptor *txd; 2354 struct dma_async_tx_descriptor *txd;
diff --git a/drivers/dma/tegra20-apb-dma.c b/drivers/dma/tegra20-apb-dma.c
index 24acd711e032..b42b6ffb75ad 100644
--- a/drivers/dma/tegra20-apb-dma.c
+++ b/drivers/dma/tegra20-apb-dma.c
@@ -990,7 +990,7 @@ static struct dma_async_tx_descriptor *tegra_dma_prep_slave_sg(
990struct dma_async_tx_descriptor *tegra_dma_prep_dma_cyclic( 990struct dma_async_tx_descriptor *tegra_dma_prep_dma_cyclic(
991 struct dma_chan *dc, dma_addr_t buf_addr, size_t buf_len, 991 struct dma_chan *dc, dma_addr_t buf_addr, size_t buf_len,
992 size_t period_len, enum dma_transfer_direction direction, 992 size_t period_len, enum dma_transfer_direction direction,
993 void *context) 993 unsigned long flags, void *context)
994{ 994{
995 struct tegra_dma_channel *tdc = to_tegra_dma_chan(dc); 995 struct tegra_dma_channel *tdc = to_tegra_dma_chan(dc);
996 struct tegra_dma_desc *dma_desc = NULL; 996 struct tegra_dma_desc *dma_desc = NULL;