mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 07:30:53 +07:00
dmaengine: sun6i: Set default maxburst size and bus width
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@free.fr> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
This commit is contained in:
parent
52c871798f
commit
a4eb36b02c
@ -470,10 +470,30 @@ 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);
|
||||
switch (direction) {
|
||||
case 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);
|
||||
break;
|
||||
case DMA_DEV_TO_MEM:
|
||||
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);
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (src_burst < 0)
|
||||
return src_burst;
|
||||
|
Loading…
Reference in New Issue
Block a user