Skip to content

Commit

Permalink
DaVinci: DM365: Voice Codec support for the DM365 EVM
Browse files Browse the repository at this point in the history
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: Miguel Aguilar <miguel.aguilar@ridgerun.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
  • Loading branch information
Miguel Aguilar authored and Mark Brown committed Mar 12, 2010
1 parent b56e972 commit aa9b88e
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 4 deletions.
4 changes: 4 additions & 0 deletions arch/arm/mach-davinci/board-dm365-evm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
24 changes: 22 additions & 2 deletions sound/soc/davinci/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,32 @@ config SND_DAVINCI_SOC_VCIF
config SND_DAVINCI_SOC_EVM
tristate "SoC Audio support for DaVinci DM6446, DM355 or DM365 EVM"
depends on SND_DAVINCI_SOC
depends on MACH_DAVINCI_EVM || MACH_DAVINCI_DM355_EVM || MACH_DAVINCI_DM365_EVM
depends on MACH_DAVINCI_EVM || MACH_DAVINCI_DM355_EVM || MACH_DAVINCI_DM365_EVM
select SND_DAVINCI_SOC_I2S
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"
Expand Down
45 changes: 43 additions & 2 deletions sound/soc/davinci/davinci-evm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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",
Expand All @@ -191,14 +209,23 @@ 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,
.dai_link = &evm_dai,
.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",
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit aa9b88e

Please sign in to comment.