Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

ASoC: davinci-mcasp: Use dmaengine based platform driver for AM335x/447x



Use the edma-pcm with AM335x and AM437x SoCs.
Keep using the davinci-pcm for daVinci devices, they can be switched to use
the dmaengine based driver later when they are verified to work correctly.

Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@ti.com>
Tested-by: default avatarDaniel Mack <daniel@zonque.org>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent e8ffacee
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
config SND_DAVINCI_SOC
	tristate "SoC Audio for TI DAVINCI or AM33XX/AM43XX chips"
	depends on ARCH_DAVINCI || SOC_AM33XX || SOC_AM43XX
	tristate "SoC Audio for TI DAVINCI"
	depends on ARCH_DAVINCI

config SND_EDMA_SOC
	tristate "SoC Audio for Texas Instruments chips using eDMA (AM33XX/43XX)"
	depends on SOC_AM33XX || SOC_AM43XX
	select SND_SOC_GENERIC_DMAENGINE_PCM
	help
	  Say Y or M here if you want audio support for TI SoC which uses eDMA.
	  The following line of SoCs are supported by this platform driver:
	  - AM335x
	  - AM437x/AM438x

config SND_DAVINCI_SOC_I2S
	tristate

config SND_DAVINCI_SOC_MCASP
	depends on SND_DAVINCI_SOC || SND_OMAP_SOC
	depends on SND_DAVINCI_SOC || SND_OMAP_SOC || SND_EDMA_SOC
	tristate

config SND_DAVINCI_SOC_VCIF
@@ -19,7 +29,7 @@ config SND_DAVINCI_SOC_GENERIC_EVM

config SND_AM33XX_SOC_EVM
	tristate "SoC Audio for the AM33XX chip based boards"
	depends on SND_DAVINCI_SOC && SOC_AM33XX && I2C
	depends on SND_EDMA_SOC && SOC_AM33XX && I2C
	select SND_DAVINCI_SOC_GENERIC_EVM
	help
	  Say Y or M if you want to add support for SoC audio on AM33XX
+2 −0
Original line number Diff line number Diff line
# DAVINCI Platform Support
snd-soc-davinci-objs := davinci-pcm.o
snd-soc-edma-objs := edma-pcm.o
snd-soc-davinci-i2s-objs := davinci-i2s.o
snd-soc-davinci-mcasp-objs:= davinci-mcasp.o
snd-soc-davinci-vcif-objs:= davinci-vcif.o

obj-$(CONFIG_SND_DAVINCI_SOC) += snd-soc-davinci.o
obj-$(CONFIG_SND_EDMA_SOC) += snd-soc-edma.o
obj-$(CONFIG_SND_DAVINCI_SOC_I2S) += snd-soc-davinci-i2s.o
obj-$(CONFIG_SND_DAVINCI_SOC_MCASP) += snd-soc-davinci-mcasp.o
obj-$(CONFIG_SND_DAVINCI_SOC_VCIF) += snd-soc-davinci-vcif.o
+9 −2
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@
#include <sound/omap-pcm.h>

#include "davinci-pcm.h"
#include "edma-pcm.h"
#include "davinci-mcasp.h"

#define MCASP_MAX_AFIFO_DEPTH	64
@@ -831,7 +832,7 @@ static int davinci_mcasp_dai_probe(struct snd_soc_dai *dai)
{
	struct davinci_mcasp *mcasp = snd_soc_dai_get_drvdata(dai);

	if (mcasp->version == MCASP_VERSION_4) {
	if (mcasp->version >= MCASP_VERSION_3) {
		/* Using dmaengine PCM */
		dai->playback_dma_data =
				&mcasp->dma_data[SNDRV_PCM_STREAM_PLAYBACK];
@@ -1281,10 +1282,16 @@ static int davinci_mcasp_probe(struct platform_device *pdev)
	 IS_MODULE(CONFIG_SND_DAVINCI_SOC))
	case MCASP_VERSION_1:
	case MCASP_VERSION_2:
	case MCASP_VERSION_3:
		ret = davinci_soc_platform_register(&pdev->dev);
		break;
#endif
#if IS_BUILTIN(CONFIG_SND_EDMA_SOC) || \
	(IS_MODULE(CONFIG_SND_DAVINCI_SOC_MCASP) && \
	 IS_MODULE(CONFIG_SND_EDMA_SOC))
	case MCASP_VERSION_3:
		ret = edma_pcm_platform_register(&pdev->dev);
		break;
#endif
#if IS_BUILTIN(CONFIG_SND_OMAP_SOC) || \
	(IS_MODULE(CONFIG_SND_DAVINCI_SOC_MCASP) && \
	 IS_MODULE(CONFIG_SND_OMAP_SOC))