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: Miguel Aguilar <miguel.aguilar@ridgerun.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
b56e972b75
commit
aa9b88ee80
3 changed files with 69 additions and 4 deletions
|
@ -604,7 +604,11 @@ static __init void dm365_evm_init(void)
|
||||||
/* maybe setup mmc1/etc ... _after_ mmc0 */
|
/* maybe setup mmc1/etc ... _after_ mmc0 */
|
||||||
evm_init_cpld();
|
evm_init_cpld();
|
||||||
|
|
||||||
|
#ifdef CONFIG_SND_DM365_AIC3X_CODEC
|
||||||
dm365_init_asp(&dm365_evm_snd_data);
|
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_rtc();
|
||||||
dm365_init_ks(&dm365evm_ks_data);
|
dm365_init_ks(&dm365evm_ks_data);
|
||||||
|
|
||||||
|
|
|
@ -18,12 +18,32 @@ config SND_DAVINCI_SOC_VCIF
|
||||||
config SND_DAVINCI_SOC_EVM
|
config SND_DAVINCI_SOC_EVM
|
||||||
tristate "SoC Audio support for DaVinci DM6446, DM355 or DM365 EVM"
|
tristate "SoC Audio support for DaVinci DM6446, DM355 or DM365 EVM"
|
||||||
depends on SND_DAVINCI_SOC
|
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_DAVINCI_SOC_I2S
|
||||||
select SND_SOC_TLV320AIC3X
|
select SND_SOC_TLV320AIC3X
|
||||||
help
|
help
|
||||||
Say Y if you want to add support for SoC audio on TI
|
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
|
config SND_DM6467_SOC_EVM
|
||||||
tristate "SoC Audio support for DaVinci DM6467 EVM"
|
tristate "SoC Audio support for DaVinci DM6467 EVM"
|
||||||
|
|
|
@ -28,10 +28,12 @@
|
||||||
#include <mach/mux.h>
|
#include <mach/mux.h>
|
||||||
|
|
||||||
#include "../codecs/tlv320aic3x.h"
|
#include "../codecs/tlv320aic3x.h"
|
||||||
|
#include "../codecs/cq93vc.h"
|
||||||
#include "../codecs/spdif_transciever.h"
|
#include "../codecs/spdif_transciever.h"
|
||||||
#include "davinci-pcm.h"
|
#include "davinci-pcm.h"
|
||||||
#include "davinci-i2s.h"
|
#include "davinci-i2s.h"
|
||||||
#include "davinci-mcasp.h"
|
#include "davinci-mcasp.h"
|
||||||
|
#include "davinci-vcif.h"
|
||||||
|
|
||||||
#define AUDIO_FORMAT (SND_SOC_DAIFMT_DSP_B | \
|
#define AUDIO_FORMAT (SND_SOC_DAIFMT_DSP_B | \
|
||||||
SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_IB_NF)
|
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,
|
.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[] = {
|
static struct snd_soc_dai_link dm6467_evm_dai[] = {
|
||||||
{
|
{
|
||||||
.name = "TLV320AIC3X",
|
.name = "TLV320AIC3X",
|
||||||
|
@ -191,7 +209,7 @@ static struct snd_soc_dai_link da8xx_evm_dai = {
|
||||||
.ops = &evm_ops,
|
.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 = {
|
static struct snd_soc_card snd_soc_card_evm = {
|
||||||
.name = "DaVinci EVM",
|
.name = "DaVinci EVM",
|
||||||
.platform = &davinci_soc_platform,
|
.platform = &davinci_soc_platform,
|
||||||
|
@ -199,6 +217,15 @@ static struct snd_soc_card snd_soc_card_evm = {
|
||||||
.num_links = 1,
|
.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 */
|
/* davinci dm6467 evm audio machine driver */
|
||||||
static struct snd_soc_card dm6467_snd_soc_card_evm = {
|
static struct snd_soc_card dm6467_snd_soc_card_evm = {
|
||||||
.name = "DaVinci DM6467 EVM",
|
.name = "DaVinci DM6467 EVM",
|
||||||
|
@ -230,6 +257,17 @@ static struct snd_soc_device evm_snd_devdata = {
|
||||||
.codec_data = &aic3x_setup,
|
.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 */
|
/* evm audio subsystem */
|
||||||
static struct snd_soc_device dm6467_evm_snd_devdata = {
|
static struct snd_soc_device dm6467_evm_snd_devdata = {
|
||||||
.card = &dm6467_snd_soc_card_evm,
|
.card = &dm6467_snd_soc_card_evm,
|
||||||
|
@ -258,12 +296,15 @@ static int __init evm_init(void)
|
||||||
int index;
|
int index;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (machine_is_davinci_evm() || machine_is_davinci_dm365_evm()) {
|
if (machine_is_davinci_evm()) {
|
||||||
evm_snd_dev_data = &evm_snd_devdata;
|
evm_snd_dev_data = &evm_snd_devdata;
|
||||||
index = 0;
|
index = 0;
|
||||||
} else if (machine_is_davinci_dm355_evm()) {
|
} else if (machine_is_davinci_dm355_evm()) {
|
||||||
evm_snd_dev_data = &evm_snd_devdata;
|
evm_snd_dev_data = &evm_snd_devdata;
|
||||||
index = 1;
|
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()) {
|
} else if (machine_is_davinci_dm6467_evm()) {
|
||||||
evm_snd_dev_data = &dm6467_evm_snd_devdata;
|
evm_snd_dev_data = &dm6467_evm_snd_devdata;
|
||||||
index = 0;
|
index = 0;
|
||||||
|
|
Loading…
Reference in a new issue