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

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.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 2619e037
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
# 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"
+7 −0
Original line number Diff line number Diff line
@@ -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: