ASoC: ti: davinci-mcasp: Add support for platforms using UDMA
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Mon, 10 Feb 2020 14:09:50 +0000 (16:09 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 11 Feb 2020 11:47:56 +0000 (11:47 +0000)
k3 devices including am654 and j721e are using UDMA

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Link: https://lore.kernel.org/r/20200210140950.11090-3-peter.ujfalusi@ti.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/ti/Kconfig
sound/soc/ti/davinci-mcasp.c

index bf85a16..c5408c1 100644 (file)
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0-only
 menu "Audio support for Texas Instruments SoCs"
-depends on DMA_OMAP || TI_EDMA || COMPILE_TEST
+depends on DMA_OMAP || TI_EDMA || TI_K3_UDMA || COMPILE_TEST
 
 config SND_SOC_TI_EDMA_PCM
        tristate
@@ -28,6 +28,7 @@ config SND_SOC_DAVINCI_MCASP
        tristate "Multichannel Audio Serial Port (McASP) support"
        select SND_SOC_TI_EDMA_PCM
        select SND_SOC_TI_SDMA_PCM
+       select SND_SOC_TI_UDMA_PCM
        help
          Say Y or M here if you want to have support for McASP IP found in
          various Texas Instruments SoCs like:
@@ -35,6 +36,7 @@ config SND_SOC_DAVINCI_MCASP
          - Sitara line of SoCs (AM335x, AM438x, etc)
          - DRA7x devices
          - Keystone devices
+         - K3 devices (am654, j721e)
 
 config SND_SOC_DAVINCI_VCIF
        tristate "daVinci Voice Interface (VCIF) support"
index e1e937e..d9c3a32 100644 (file)
@@ -38,6 +38,7 @@
 
 #include "edma-pcm.h"
 #include "sdma-pcm.h"
+#include "udma-pcm.h"
 #include "davinci-mcasp.h"
 
 #define MCASP_MAX_AFIFO_DEPTH  64
@@ -1875,6 +1876,7 @@ nodata:
 enum {
        PCM_EDMA,
        PCM_SDMA,
+       PCM_UDMA,
 };
 static const char *sdma_prefix = "ti,omap";
 
@@ -1912,6 +1914,8 @@ static int davinci_mcasp_get_dma_type(struct davinci_mcasp *mcasp)
        dev_dbg(mcasp->dev, "DMA controller compatible = \"%s\"\n", tmp);
        if (!strncmp(tmp, sdma_prefix, strlen(sdma_prefix)))
                return PCM_SDMA;
+       else if (strstr(tmp, "udmap"))
+               return PCM_UDMA;
 
        return PCM_EDMA;
 }
@@ -2371,6 +2375,9 @@ static int davinci_mcasp_probe(struct platform_device *pdev)
        case PCM_SDMA:
                ret = sdma_pcm_platform_register(&pdev->dev, "tx", "rx");
                break;
+       case PCM_UDMA:
+               ret = udma_pcm_platform_register(&pdev->dev);
+               break;
        default:
                dev_err(&pdev->dev, "No DMA controller found (%d)\n", ret);
        case -EPROBE_DEFER: