Client drivers configure DMA transfer parameters based on the DMA transfer direction. This patch sets corresponding parameters in rz_dmac_config() based on the DMA transfer direction. Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx> Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx> --- v1->v2: * Updated commit description --- drivers/dma/sh/rz-dmac.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/drivers/dma/sh/rz-dmac.c b/drivers/dma/sh/rz-dmac.c index ee2872e7d64c..de57ae006879 100644 --- a/drivers/dma/sh/rz-dmac.c +++ b/drivers/dma/sh/rz-dmac.c @@ -597,24 +597,24 @@ static int rz_dmac_config(struct dma_chan *chan, struct dma_slave_config *config) { struct rz_dmac_chan *channel = to_rz_dmac_chan(chan); - u32 val; + u32 val, data_sz; - channel->src_per_address = config->src_addr; - channel->src_word_size = config->src_addr_width; - channel->dst_per_address = config->dst_addr; - channel->dst_word_size = config->dst_addr_width; - - val = rz_dmac_ds_to_val_mapping(config->dst_addr_width); - if (val == CHCFG_DS_INVALID) - return -EINVAL; - - channel->chcfg |= CHCFG_FILL_DDS(val); + if (config->direction == DMA_DEV_TO_MEM) { + channel->src_per_address = config->src_addr; + channel->src_word_size = config->src_addr_width; + val = rz_dmac_ds_to_val_mapping(config->src_addr_width); + data_sz = CHCFG_FILL_SDS(val); + } else { + channel->dst_per_address = config->dst_addr; + channel->dst_word_size = config->dst_addr_width; + val = rz_dmac_ds_to_val_mapping(config->dst_addr_width); + data_sz = CHCFG_FILL_DDS(val); + } - val = rz_dmac_ds_to_val_mapping(config->src_addr_width); if (val == CHCFG_DS_INVALID) return -EINVAL; - channel->chcfg |= CHCFG_FILL_SDS(val); + channel->chcfg |= data_sz; return 0; } -- 2.25.1