linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] dmaengine: at_xdmac: fix for chan conf simplification
@ 2015-02-12 15:30 Ludovic Desroches
  2015-02-12 15:33 ` Nicolas Ferre
  2015-03-05  9:00 ` Vinod Koul
  0 siblings, 2 replies; 4+ messages in thread
From: Ludovic Desroches @ 2015-02-12 15:30 UTC (permalink / raw)
  To: linux-arm-kernel

When simplificating the channel configuration, the cyclic case has been
forgotten. It leads to use bad configuration causing many bugs.

Signed-off-by: Ludovic Desroches <ludovic.desroches@atmel.com>
---
 drivers/dma/at_xdmac.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c
index 710546d..895b8bd 100644
--- a/drivers/dma/at_xdmac.c
+++ b/drivers/dma/at_xdmac.c
@@ -664,7 +664,6 @@ at_xdmac_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr,
 	struct at_xdmac_desc	*first = NULL, *prev = NULL;
 	unsigned int		periods = buf_len / period_len;
 	int			i;
-	u32			cfg;
 
 	dev_dbg(chan2dev(chan), "%s: buf_addr=%pad, buf_len=%zd, period_len=%zd, dir=%s, flags=0x%lx\n",
 		__func__, &buf_addr, buf_len, period_len,
@@ -700,17 +699,17 @@ at_xdmac_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr,
 		if (direction == DMA_DEV_TO_MEM) {
 			desc->lld.mbr_sa = atchan->per_src_addr;
 			desc->lld.mbr_da = buf_addr + i * period_len;
-			cfg = atchan->cfg[AT_XDMAC_DEV_TO_MEM_CFG];
+			desc->lld.mbr_cfg = atchan->cfg[AT_XDMAC_DEV_TO_MEM_CFG];
 		} else {
 			desc->lld.mbr_sa = buf_addr + i * period_len;
 			desc->lld.mbr_da = atchan->per_dst_addr;
-			cfg = atchan->cfg[AT_XDMAC_MEM_TO_DEV_CFG];
+			desc->lld.mbr_cfg = atchan->cfg[AT_XDMAC_MEM_TO_DEV_CFG];
 		}
 		desc->lld.mbr_ubc = AT_XDMAC_MBR_UBC_NDV1
 			| AT_XDMAC_MBR_UBC_NDEN
 			| AT_XDMAC_MBR_UBC_NSEN
 			| AT_XDMAC_MBR_UBC_NDE
-			| period_len >> at_xdmac_get_dwidth(cfg);
+			| period_len >> at_xdmac_get_dwidth(desc->lld.mbr_cfg);
 
 		dev_dbg(chan2dev(chan),
 			 "%s: lld: mbr_sa=%pad, mbr_da=%pad, mbr_ubc=0x%08x\n",
-- 
2.2.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH] dmaengine: at_xdmac: fix for chan conf simplification
  2015-02-12 15:30 [PATCH] dmaengine: at_xdmac: fix for chan conf simplification Ludovic Desroches
@ 2015-02-12 15:33 ` Nicolas Ferre
  2015-03-03 18:34   ` Nicolas Ferre
  2015-03-05  9:00 ` Vinod Koul
  1 sibling, 1 reply; 4+ messages in thread
From: Nicolas Ferre @ 2015-02-12 15:33 UTC (permalink / raw)
  To: linux-arm-kernel

Le 12/02/2015 16:30, Ludovic Desroches a ?crit :
> When simplificating the channel configuration, the cyclic case has been
> forgotten. It leads to use bad configuration causing many bugs.
> 
> Signed-off-by: Ludovic Desroches <ludovic.desroches@atmel.com>

Oh, yes indeed, pretty important:
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>

Bye,

> ---
>  drivers/dma/at_xdmac.c | 7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c
> index 710546d..895b8bd 100644
> --- a/drivers/dma/at_xdmac.c
> +++ b/drivers/dma/at_xdmac.c
> @@ -664,7 +664,6 @@ at_xdmac_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr,
>  	struct at_xdmac_desc	*first = NULL, *prev = NULL;
>  	unsigned int		periods = buf_len / period_len;
>  	int			i;
> -	u32			cfg;
>  
>  	dev_dbg(chan2dev(chan), "%s: buf_addr=%pad, buf_len=%zd, period_len=%zd, dir=%s, flags=0x%lx\n",
>  		__func__, &buf_addr, buf_len, period_len,
> @@ -700,17 +699,17 @@ at_xdmac_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr,
>  		if (direction == DMA_DEV_TO_MEM) {
>  			desc->lld.mbr_sa = atchan->per_src_addr;
>  			desc->lld.mbr_da = buf_addr + i * period_len;
> -			cfg = atchan->cfg[AT_XDMAC_DEV_TO_MEM_CFG];
> +			desc->lld.mbr_cfg = atchan->cfg[AT_XDMAC_DEV_TO_MEM_CFG];
>  		} else {
>  			desc->lld.mbr_sa = buf_addr + i * period_len;
>  			desc->lld.mbr_da = atchan->per_dst_addr;
> -			cfg = atchan->cfg[AT_XDMAC_MEM_TO_DEV_CFG];
> +			desc->lld.mbr_cfg = atchan->cfg[AT_XDMAC_MEM_TO_DEV_CFG];
>  		}
>  		desc->lld.mbr_ubc = AT_XDMAC_MBR_UBC_NDV1
>  			| AT_XDMAC_MBR_UBC_NDEN
>  			| AT_XDMAC_MBR_UBC_NSEN
>  			| AT_XDMAC_MBR_UBC_NDE
> -			| period_len >> at_xdmac_get_dwidth(cfg);
> +			| period_len >> at_xdmac_get_dwidth(desc->lld.mbr_cfg);
>  
>  		dev_dbg(chan2dev(chan),
>  			 "%s: lld: mbr_sa=%pad, mbr_da=%pad, mbr_ubc=0x%08x\n",
> 


-- 
Nicolas Ferre

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH] dmaengine: at_xdmac: fix for chan conf simplification
  2015-02-12 15:33 ` Nicolas Ferre
@ 2015-03-03 18:34   ` Nicolas Ferre
  0 siblings, 0 replies; 4+ messages in thread
From: Nicolas Ferre @ 2015-03-03 18:34 UTC (permalink / raw)
  To: linux-arm-kernel

Le 12/02/2015 16:33, Nicolas Ferre a ?crit :
> Le 12/02/2015 16:30, Ludovic Desroches a ?crit :
>> When simplificating the channel configuration, the cyclic case has been
>> forgotten. It leads to use bad configuration causing many bugs.
>>
>> Signed-off-by: Ludovic Desroches <ludovic.desroches@atmel.com>
> 
> Oh, yes indeed, pretty important:
> Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>

Vinod,

Can we have this fix in 4.0 please?

Bye,


>> ---
>>  drivers/dma/at_xdmac.c | 7 +++----
>>  1 file changed, 3 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c
>> index 710546d..895b8bd 100644
>> --- a/drivers/dma/at_xdmac.c
>> +++ b/drivers/dma/at_xdmac.c
>> @@ -664,7 +664,6 @@ at_xdmac_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr,
>>  	struct at_xdmac_desc	*first = NULL, *prev = NULL;
>>  	unsigned int		periods = buf_len / period_len;
>>  	int			i;
>> -	u32			cfg;
>>  
>>  	dev_dbg(chan2dev(chan), "%s: buf_addr=%pad, buf_len=%zd, period_len=%zd, dir=%s, flags=0x%lx\n",
>>  		__func__, &buf_addr, buf_len, period_len,
>> @@ -700,17 +699,17 @@ at_xdmac_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr,
>>  		if (direction == DMA_DEV_TO_MEM) {
>>  			desc->lld.mbr_sa = atchan->per_src_addr;
>>  			desc->lld.mbr_da = buf_addr + i * period_len;
>> -			cfg = atchan->cfg[AT_XDMAC_DEV_TO_MEM_CFG];
>> +			desc->lld.mbr_cfg = atchan->cfg[AT_XDMAC_DEV_TO_MEM_CFG];
>>  		} else {
>>  			desc->lld.mbr_sa = buf_addr + i * period_len;
>>  			desc->lld.mbr_da = atchan->per_dst_addr;
>> -			cfg = atchan->cfg[AT_XDMAC_MEM_TO_DEV_CFG];
>> +			desc->lld.mbr_cfg = atchan->cfg[AT_XDMAC_MEM_TO_DEV_CFG];
>>  		}
>>  		desc->lld.mbr_ubc = AT_XDMAC_MBR_UBC_NDV1
>>  			| AT_XDMAC_MBR_UBC_NDEN
>>  			| AT_XDMAC_MBR_UBC_NSEN
>>  			| AT_XDMAC_MBR_UBC_NDE
>> -			| period_len >> at_xdmac_get_dwidth(cfg);
>> +			| period_len >> at_xdmac_get_dwidth(desc->lld.mbr_cfg);
>>  
>>  		dev_dbg(chan2dev(chan),
>>  			 "%s: lld: mbr_sa=%pad, mbr_da=%pad, mbr_ubc=0x%08x\n",
>>
> 
> 


-- 
Nicolas Ferre

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH] dmaengine: at_xdmac: fix for chan conf simplification
  2015-02-12 15:30 [PATCH] dmaengine: at_xdmac: fix for chan conf simplification Ludovic Desroches
  2015-02-12 15:33 ` Nicolas Ferre
@ 2015-03-05  9:00 ` Vinod Koul
  1 sibling, 0 replies; 4+ messages in thread
From: Vinod Koul @ 2015-03-05  9:00 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Feb 12, 2015 at 04:30:30PM +0100, Ludovic Desroches wrote:
> When simplificating the channel configuration, the cyclic case has been
> forgotten. It leads to use bad configuration causing many bugs.
Applied, thanks

-- 
~Vinod

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-03-05  9:00 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-02-12 15:30 [PATCH] dmaengine: at_xdmac: fix for chan conf simplification Ludovic Desroches
2015-02-12 15:33 ` Nicolas Ferre
2015-03-03 18:34   ` Nicolas Ferre
2015-03-05  9:00 ` Vinod Koul

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).