diff mbox

[1/2] dma: ste_dma40: indicate directions on channels

Message ID 20170113150203.27029-1-linus.walleij@linaro.org (mailing list archive)
State Accepted
Headers show

Commit Message

Linus Walleij Jan. 13, 2017, 3:02 p.m. UTC
Since the introduction of the .directions flags, ste_dma40 was
never patched to indicate which transfer directions it can manage.
This causes a problem when trying to use the dmaengine for generic
ALSA SoC DMA:

ux500-msp-i2s.1: Failed to get DMA channel capabilities, falling
   back to period counting: -6

This patch fixes this issue by indicating the supported transfer
directions for slave and memcpy channels.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 drivers/dma/ste_dma40.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Vinod Koul Jan. 14, 2017, 3:05 p.m. UTC | #1
On Fri, Jan 13, 2017 at 04:02:03PM +0100, Linus Walleij wrote:
> Since the introduction of the .directions flags, ste_dma40 was
> never patched to indicate which transfer directions it can manage.
> This causes a problem when trying to use the dmaengine for generic
> ALSA SoC DMA:
> 
> ux500-msp-i2s.1: Failed to get DMA channel capabilities, falling
>    back to period counting: -6
> 
> This patch fixes this issue by indicating the supported transfer
> directions for slave and memcpy channels.

Applied both after fixing the subsytem name.
diff mbox

Patch

diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c
index 8684d11b29bb..2f0852dfbd1b 100644
--- a/drivers/dma/ste_dma40.c
+++ b/drivers/dma/ste_dma40.c
@@ -2809,12 +2809,14 @@  static void __init d40_chan_init(struct d40_base *base, struct dma_device *dma,
 
 static void d40_ops_init(struct d40_base *base, struct dma_device *dev)
 {
-	if (dma_has_cap(DMA_SLAVE, dev->cap_mask))
+	if (dma_has_cap(DMA_SLAVE, dev->cap_mask)) {
 		dev->device_prep_slave_sg = d40_prep_slave_sg;
+		dev->directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV);
+	}
 
 	if (dma_has_cap(DMA_MEMCPY, dev->cap_mask)) {
 		dev->device_prep_dma_memcpy = d40_prep_memcpy;
-
+		dev->directions = BIT(DMA_MEM_TO_MEM);
 		/*
 		 * This controller can only access address at even
 		 * 32bit boundaries, i.e. 2^2