ASoC: ti: edma-pcm: Fix for legacy dma_slave_map based channel lookup
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Fri, 30 Aug 2019 10:38:40 +0000 (13:38 +0300)
committerMark Brown <broonie@kernel.org>
Fri, 30 Aug 2019 11:22:46 +0000 (12:22 +0100)
Most of the daVinci devices does not boot with DT. In this case the DMA
channel is looked up with dma_slave_map and for that the chan_names[]
must be configured.

Both McASP and ASP/McBSP uses "tx" and "rx" as channel names, so we can
just do this when the dev->of_node is not valid.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Link: https://lore.kernel.org/r/20190830103841.25128-4-peter.ujfalusi@ti.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/ti/edma-pcm.c

index 3ebea1bd15cb648e9fae8f4058e83b0daaa496c5..634b040b65f0cadb1e4d547744ab1f82deea84bb 100644 (file)
@@ -39,7 +39,22 @@ static const struct snd_dmaengine_pcm_config edma_dmaengine_pcm_config = {
 
 int edma_pcm_platform_register(struct device *dev)
 {
-       return devm_snd_dmaengine_pcm_register(dev, &edma_dmaengine_pcm_config, 0);
+       struct snd_dmaengine_pcm_config *config;
+
+       if (dev->of_node)
+               return devm_snd_dmaengine_pcm_register(dev,
+                                               &edma_dmaengine_pcm_config, 0);
+
+       config = devm_kzalloc(dev, sizeof(*config), GFP_KERNEL);
+       if (!config)
+               return -ENOMEM;
+
+       *config = edma_dmaengine_pcm_config;
+
+       config->chan_names[0] = "tx";
+       config->chan_names[1] = "rx";
+
+       return devm_snd_dmaengine_pcm_register(dev, config, 0);
 }
 EXPORT_SYMBOL_GPL(edma_pcm_platform_register);