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: Peter Ujfalusi <peter.ujfalusi@ti.com>
Tested-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
Peter Ujfalusi 2014-07-16 15:12:04 +03:00 committed by Mark Brown
parent e8ffacee0a
commit f3f9cfa8a1
3 changed files with 25 additions and 6 deletions

View File

@ -1,12 +1,22 @@
config SND_DAVINCI_SOC config SND_DAVINCI_SOC
tristate "SoC Audio for TI DAVINCI or AM33XX/AM43XX chips" tristate "SoC Audio for TI DAVINCI"
depends on ARCH_DAVINCI || SOC_AM33XX || SOC_AM43XX 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 config SND_DAVINCI_SOC_I2S
tristate tristate
config SND_DAVINCI_SOC_MCASP 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 tristate
config SND_DAVINCI_SOC_VCIF config SND_DAVINCI_SOC_VCIF
@ -19,7 +29,7 @@ config SND_DAVINCI_SOC_GENERIC_EVM
config SND_AM33XX_SOC_EVM config SND_AM33XX_SOC_EVM
tristate "SoC Audio for the AM33XX chip based boards" 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 select SND_DAVINCI_SOC_GENERIC_EVM
help help
Say Y or M if you want to add support for SoC audio on AM33XX Say Y or M if you want to add support for SoC audio on AM33XX

View File

@ -1,10 +1,12 @@
# DAVINCI Platform Support # DAVINCI Platform Support
snd-soc-davinci-objs := davinci-pcm.o 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-i2s-objs := davinci-i2s.o
snd-soc-davinci-mcasp-objs:= davinci-mcasp.o snd-soc-davinci-mcasp-objs:= davinci-mcasp.o
snd-soc-davinci-vcif-objs:= davinci-vcif.o snd-soc-davinci-vcif-objs:= davinci-vcif.o
obj-$(CONFIG_SND_DAVINCI_SOC) += snd-soc-davinci.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_I2S) += snd-soc-davinci-i2s.o
obj-$(CONFIG_SND_DAVINCI_SOC_MCASP) += snd-soc-davinci-mcasp.o obj-$(CONFIG_SND_DAVINCI_SOC_MCASP) += snd-soc-davinci-mcasp.o
obj-$(CONFIG_SND_DAVINCI_SOC_VCIF) += snd-soc-davinci-vcif.o obj-$(CONFIG_SND_DAVINCI_SOC_VCIF) += snd-soc-davinci-vcif.o

View File

@ -37,6 +37,7 @@
#include <sound/omap-pcm.h> #include <sound/omap-pcm.h>
#include "davinci-pcm.h" #include "davinci-pcm.h"
#include "edma-pcm.h"
#include "davinci-mcasp.h" #include "davinci-mcasp.h"
#define MCASP_MAX_AFIFO_DEPTH 64 #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); 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 */ /* Using dmaengine PCM */
dai->playback_dma_data = dai->playback_dma_data =
&mcasp->dma_data[SNDRV_PCM_STREAM_PLAYBACK]; &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)) IS_MODULE(CONFIG_SND_DAVINCI_SOC))
case MCASP_VERSION_1: case MCASP_VERSION_1:
case MCASP_VERSION_2: case MCASP_VERSION_2:
case MCASP_VERSION_3:
ret = davinci_soc_platform_register(&pdev->dev); ret = davinci_soc_platform_register(&pdev->dev);
break; break;
#endif #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) || \ #if IS_BUILTIN(CONFIG_SND_OMAP_SOC) || \
(IS_MODULE(CONFIG_SND_DAVINCI_SOC_MCASP) && \ (IS_MODULE(CONFIG_SND_DAVINCI_SOC_MCASP) && \
IS_MODULE(CONFIG_SND_OMAP_SOC)) IS_MODULE(CONFIG_SND_OMAP_SOC))