summaryrefslogtreecommitdiffstats
path: root/sound/soc/fsl
diff options
context:
space:
mode:
authorRobin Gong <yibin.gong@nxp.com>2021-03-05 17:19:37 +0800
committerMark Brown <broonie@kernel.org>2021-03-12 20:48:05 +0000
commitee427ea4f12672e5d7874abaa634ddee0ff2bb97 (patch)
treeb33eef09acf5ca83ccb581496db1efd56823e0ae /sound/soc/fsl
parent464b489a7885d6a89b0dfa7b7f1f56e2db80700d (diff)
downloadlinux-stable-ee427ea4f12672e5d7874abaa634ddee0ff2bb97.tar.gz
linux-stable-ee427ea4f12672e5d7874abaa634ddee0ff2bb97.tar.bz2
linux-stable-ee427ea4f12672e5d7874abaa634ddee0ff2bb97.zip
ASoC: fsl_asrc_dma: request dma channel from specific controller
Request dma channel from specific dma controller instead of generic dma controller list, otherwise, may get the wrong dma controller if there are multi dma controllers such as i.MX8MP. Signed-off-by: Robin Gong <yibin.gong@nxp.com> Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com> Link: https://lore.kernel.org/r/1614935977-21638-1-git-send-email-shengjiu.wang@nxp.com Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/fsl')
-rw-r--r--sound/soc/fsl/fsl_asrc_dma.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sound/soc/fsl/fsl_asrc_dma.c b/sound/soc/fsl/fsl_asrc_dma.c
index 29f91cdecbc3..c313a26c8f95 100644
--- a/sound/soc/fsl/fsl_asrc_dma.c
+++ b/sound/soc/fsl/fsl_asrc_dma.c
@@ -141,6 +141,7 @@ static int fsl_asrc_dma_hw_params(struct snd_soc_component *component,
struct dma_slave_config config_fe, config_be;
enum asrc_pair_index index = pair->index;
struct device *dev = component->dev;
+ struct device_node *of_dma_node;
int stream = substream->stream;
struct imx_dma_data *tmp_data;
struct snd_soc_dpcm *dpcm;
@@ -231,8 +232,10 @@ static int fsl_asrc_dma_hw_params(struct snd_soc_component *component,
pair->dma_data.priority = tmp_data->priority;
dma_release_channel(tmp_chan);
+ of_dma_node = pair->dma_chan[!dir]->device->dev->of_node;
pair->dma_chan[dir] =
- dma_request_channel(mask, filter, &pair->dma_data);
+ __dma_request_channel(&mask, filter, &pair->dma_data,
+ of_dma_node);
pair->req_dma_chan = true;
} else {
pair->dma_chan[dir] = tmp_chan;