Commit fb0c3c6e authored by Peter Ujfalusi's avatar Peter Ujfalusi Committed by Mark Brown

ASoC: ti: davinci-mcasp: Add support for platforms using UDMA

k3 devices including am654 and j721e are using UDMA
Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@ti.com>
Link: https://lore.kernel.org/r/20200210140950.11090-3-peter.ujfalusi@ti.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 2619e037
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
menu "Audio support for Texas Instruments SoCs" 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 config SND_SOC_TI_EDMA_PCM
tristate tristate
...@@ -28,6 +28,7 @@ config SND_SOC_DAVINCI_MCASP ...@@ -28,6 +28,7 @@ config SND_SOC_DAVINCI_MCASP
tristate "Multichannel Audio Serial Port (McASP) support" tristate "Multichannel Audio Serial Port (McASP) support"
select SND_SOC_TI_EDMA_PCM select SND_SOC_TI_EDMA_PCM
select SND_SOC_TI_SDMA_PCM select SND_SOC_TI_SDMA_PCM
select SND_SOC_TI_UDMA_PCM
help help
Say Y or M here if you want to have support for McASP IP found in Say Y or M here if you want to have support for McASP IP found in
various Texas Instruments SoCs like: various Texas Instruments SoCs like:
...@@ -35,6 +36,7 @@ config SND_SOC_DAVINCI_MCASP ...@@ -35,6 +36,7 @@ config SND_SOC_DAVINCI_MCASP
- Sitara line of SoCs (AM335x, AM438x, etc) - Sitara line of SoCs (AM335x, AM438x, etc)
- DRA7x devices - DRA7x devices
- Keystone devices - Keystone devices
- K3 devices (am654, j721e)
config SND_SOC_DAVINCI_VCIF config SND_SOC_DAVINCI_VCIF
tristate "daVinci Voice Interface (VCIF) support" tristate "daVinci Voice Interface (VCIF) support"
......
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
#include "edma-pcm.h" #include "edma-pcm.h"
#include "sdma-pcm.h" #include "sdma-pcm.h"
#include "udma-pcm.h"
#include "davinci-mcasp.h" #include "davinci-mcasp.h"
#define MCASP_MAX_AFIFO_DEPTH 64 #define MCASP_MAX_AFIFO_DEPTH 64
...@@ -1875,6 +1876,7 @@ static struct davinci_mcasp_pdata *davinci_mcasp_set_pdata_from_of( ...@@ -1875,6 +1876,7 @@ static struct davinci_mcasp_pdata *davinci_mcasp_set_pdata_from_of(
enum { enum {
PCM_EDMA, PCM_EDMA,
PCM_SDMA, PCM_SDMA,
PCM_UDMA,
}; };
static const char *sdma_prefix = "ti,omap"; static const char *sdma_prefix = "ti,omap";
...@@ -1912,6 +1914,8 @@ static int davinci_mcasp_get_dma_type(struct davinci_mcasp *mcasp) ...@@ -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); dev_dbg(mcasp->dev, "DMA controller compatible = \"%s\"\n", tmp);
if (!strncmp(tmp, sdma_prefix, strlen(sdma_prefix))) if (!strncmp(tmp, sdma_prefix, strlen(sdma_prefix)))
return PCM_SDMA; return PCM_SDMA;
else if (strstr(tmp, "udmap"))
return PCM_UDMA;
return PCM_EDMA; return PCM_EDMA;
} }
...@@ -2371,6 +2375,9 @@ static int davinci_mcasp_probe(struct platform_device *pdev) ...@@ -2371,6 +2375,9 @@ static int davinci_mcasp_probe(struct platform_device *pdev)
case PCM_SDMA: case PCM_SDMA:
ret = sdma_pcm_platform_register(&pdev->dev, "tx", "rx"); ret = sdma_pcm_platform_register(&pdev->dev, "tx", "rx");
break; break;
case PCM_UDMA:
ret = udma_pcm_platform_register(&pdev->dev);
break;
default: default:
dev_err(&pdev->dev, "No DMA controller found (%d)\n", ret); dev_err(&pdev->dev, "No DMA controller found (%d)\n", ret);
case -EPROBE_DEFER: case -EPROBE_DEFER:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment