Re: [PATCH v5 2/3] dmaengine: sun6i: Set default maxburst size and bus width

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Apr 22, 2016 at 08:48:40AM +0200, Jean-Francois Moine wrote:
> Some DMA clients, as audio, don't set the maxburst size and bus width
> on the memory side when starting DMA transfers.
> This patch prevents such transfers to be aborted by providing system
> default values to the lacking ones.
> 
> Signed-off-by: Jean-Francois Moine <moinejf@xxxxxxx>
> ---
>  drivers/dma/sun6i-dma.c | 23 +++++++++++++++++++----
>  1 file changed, 19 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c
> index b08245e..821fc4f 100644
> --- a/drivers/dma/sun6i-dma.c
> +++ b/drivers/dma/sun6i-dma.c
> @@ -470,10 +470,25 @@ static int set_config(struct sun6i_dma_dev *sdev,
>  {
>  	s8 src_width, dst_width, src_burst, dst_burst;
>  
> -	src_burst = convert_burst(sconfig->src_maxburst);
> -	src_width = convert_buswidth(sconfig->src_addr_width);
> -	dst_burst = convert_burst(sconfig->dst_maxburst);
> -	dst_width = convert_buswidth(sconfig->dst_addr_width);
> +	if (direction == DMA_MEM_TO_DEV) {
> +		src_burst = convert_burst(sconfig->src_maxburst ?
> +					sconfig->src_maxburst : 8);
> +		src_width = convert_buswidth(sconfig->src_addr_width !=
> +						DMA_SLAVE_BUSWIDTH_UNDEFINED ?
> +				sconfig->src_addr_width :
> +				DMA_SLAVE_BUSWIDTH_4_BYTES);
> +		dst_burst = convert_burst(sconfig->dst_maxburst);
> +		dst_width = convert_buswidth(sconfig->dst_addr_width);
> +	} else {	/* DMA_DEV_TO_MEM */

Else can be any other direction, I would prefer we check that. Also swicth
would be better

> +		src_burst = convert_burst(sconfig->src_maxburst);
> +		src_width = convert_buswidth(sconfig->src_addr_width);
> +		dst_burst = convert_burst(sconfig->dst_maxburst ?
> +					sconfig->dst_maxburst : 8);
> +		dst_width = convert_buswidth(sconfig->dst_addr_width !=
> +						DMA_SLAVE_BUSWIDTH_UNDEFINED ?
> +				sconfig->dst_addr_width :
> +				DMA_SLAVE_BUSWIDTH_4_BYTES);
> +	}
>  
>  	if (src_burst < 0)
>  		return src_burst;

-- 
~Vinod
--
To unsubscribe from this list: send the line "unsubscribe dmaengine" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux