[PATCH v5 2/3] dmaengine: sun6i: Set default maxburst size and bus width
Vinod Koul
vinod.koul at intel.com
Mon Apr 25 20:45:54 PDT 2016
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 at free.fr>
> ---
> 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
More information about the linux-arm-kernel
mailing list