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

Commit aa9b88ee authored by Miguel Aguilar's avatar Miguel Aguilar Committed by Mark Brown
Browse files

DaVinci: DM365: Voice Codec support for the DM365 EVM



The DM365 EVM has two codecs: the Audio Codec (AIC3x) and the Voice Codec,
the idea is to have both enabled in the same kernel simultaneously. However,
the current soc-core doesn't support simultaneous codecs, once that
support will have added, a patch will be posted to enable both codecs in
the DM365 EVM.

Signed-off-by: default avatarMiguel Aguilar <miguel.aguilar@ridgerun.com>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent b56e972b
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -604,7 +604,11 @@ static __init void dm365_evm_init(void)
	/* maybe setup mmc1/etc ... _after_ mmc0 */
	evm_init_cpld();

#ifdef CONFIG_SND_DM365_AIC3X_CODEC
	dm365_init_asp(&dm365_evm_snd_data);
#elif defined(CONFIG_SND_DM365_VOICE_CODEC)
	dm365_init_vc(&dm365_evm_snd_data);
#endif
	dm365_init_rtc();
	dm365_init_ks(&dm365evm_ks_data);

+22 −2
Original line number Diff line number Diff line
@@ -23,7 +23,27 @@ config SND_DAVINCI_SOC_EVM
	select SND_SOC_TLV320AIC3X
	help
	  Say Y if you want to add support for SoC audio on TI
	  DaVinci DM6446 or DM355 EVM platforms.
	  DaVinci DM6446, DM355 or DM365 EVM platforms.

choice
	prompt "DM365 codec select"
	depends on SND_DAVINCI_SOC_EVM
	depends on MACH_DAVINCI_DM365_EVM
	default SND_DM365_EXTERNAL_CODEC

config SND_DM365_AIC3X_CODEC
	bool "Audio Codec - AIC3101"
	help
	  Say Y if you want to add support for AIC3101 audio codec

config SND_DM365_VOICE_CODEC
	bool "Voice Codec - CQ93VC"
	select MFD_DAVINCI_VOICECODEC
	select SND_DAVINCI_SOC_VCIF
	select SND_SOC_CQ0093VC
	help
	  Say Y if you want to add support for SoC On-chip voice codec
endchoice

config  SND_DM6467_SOC_EVM
	tristate "SoC Audio support for DaVinci DM6467 EVM"
+43 −2
Original line number Diff line number Diff line
@@ -28,10 +28,12 @@
#include <mach/mux.h>

#include "../codecs/tlv320aic3x.h"
#include "../codecs/cq93vc.h"
#include "../codecs/spdif_transciever.h"
#include "davinci-pcm.h"
#include "davinci-i2s.h"
#include "davinci-mcasp.h"
#include "davinci-vcif.h"

#define AUDIO_FORMAT (SND_SOC_DAIFMT_DSP_B | \
		SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_IB_NF)
@@ -165,6 +167,22 @@ static struct snd_soc_dai_link evm_dai = {
	.ops = &evm_ops,
};

static struct snd_soc_dai_link dm365_evm_dai = {
#ifdef CONFIG_SND_DM365_AIC3X_CODEC
	.name = "TLV320AIC3X",
	.stream_name = "AIC3X",
	.cpu_dai = &davinci_i2s_dai,
	.codec_dai = &aic3x_dai,
	.init = evm_aic3x_init,
	.ops = &evm_ops,
#elif defined(CONFIG_SND_DM365_VOICE_CODEC)
	.name = "Voice Codec - CQ93VC",
	.stream_name = "CQ93",
	.cpu_dai = &davinci_vcif_dai,
	.codec_dai = &cq93vc_dai,
#endif
};

static struct snd_soc_dai_link dm6467_evm_dai[] = {
	{
		.name = "TLV320AIC3X",
@@ -191,7 +209,7 @@ static struct snd_soc_dai_link da8xx_evm_dai = {
	.ops = &evm_ops,
};

/* davinci dm6446, dm355 or dm365 evm audio machine driver */
/* davinci dm6446, dm355 evm audio machine driver */
static struct snd_soc_card snd_soc_card_evm = {
	.name = "DaVinci EVM",
	.platform = &davinci_soc_platform,
@@ -199,6 +217,15 @@ static struct snd_soc_card snd_soc_card_evm = {
	.num_links = 1,
};

/* davinci dm365 evm audio machine driver */
static struct snd_soc_card dm365_snd_soc_card_evm = {
	.name = "DaVinci DM365 EVM",
	.platform = &davinci_soc_platform,
	.dai_link = &dm365_evm_dai,
	.num_links = 1,
};


/* davinci dm6467 evm audio machine driver */
static struct snd_soc_card dm6467_snd_soc_card_evm = {
	.name = "DaVinci DM6467 EVM",
@@ -230,6 +257,17 @@ static struct snd_soc_device evm_snd_devdata = {
	.codec_data = &aic3x_setup,
};

/* evm audio subsystem */
static struct snd_soc_device dm365_evm_snd_devdata = {
	.card = &dm365_snd_soc_card_evm,
#ifdef CONFIG_SND_DM365_AIC3X_CODEC
	.codec_dev = &soc_codec_dev_aic3x,
	.codec_data = &aic3x_setup,
#elif defined(CONFIG_SND_DM365_VOICE_CODEC)
	.codec_dev = &soc_codec_dev_cq93vc,
#endif
};

/* evm audio subsystem */
static struct snd_soc_device dm6467_evm_snd_devdata = {
	.card = &dm6467_snd_soc_card_evm,
@@ -258,12 +296,15 @@ static int __init evm_init(void)
	int index;
	int ret;

	if (machine_is_davinci_evm() || machine_is_davinci_dm365_evm()) {
	if (machine_is_davinci_evm()) {
		evm_snd_dev_data = &evm_snd_devdata;
		index = 0;
	} else if (machine_is_davinci_dm355_evm()) {
		evm_snd_dev_data = &evm_snd_devdata;
		index = 1;
	} else if (machine_is_davinci_dm365_evm()) {
		evm_snd_dev_data = &dm365_evm_snd_devdata;
		index = 0;
	} else if (machine_is_davinci_dm6467_evm()) {
		evm_snd_dev_data = &dm6467_evm_snd_devdata;
		index = 0;