Other Parts Discussed in Thread: TLV320AIC3106, TMDSEVM437X,
Tool/software: Linux
2 parter:
1) when setting up my custom codec configuration for the tlv320aic3106 codec attached to the 4378 EVM GP board (not the on board codec, an additional one attached to a header) i am using this as the details:
sound1: sound1 {
compatible = "simple-audio-card";
simple-audio-card,name = "AM437x-GP-EVM-UTI";
simple-audio-card,widgets =
"Line Out Jack", "Headphone",
"Line In Jack", "Microphone";
simple-audio-card,routing =
"Line Out Jack", "MONO_LOUT",
"Headphone", "LLOUT",
"LINE1L", "Microphone",
"LINE2R", "Line In";
simple-audio-card,format = "dsp_b";
simple-audio-card,bitclock-master = <&sound1_master>;
simple-audio-card,frame-master = <&sound1_master>;
simple-audio-card,bitclock-inversion;
simple-audio-card,cpu {
sound-dai = <&mcasp0>;
system-clock-frequency = <12000000>;
};
sound1_master: simple-audio-card,codec {
sound-dai = <&tlv320aic3106>;
system-clock-frequency = <12000000>;
};
};
and i get this as output:
[ 19.191861] asoc-simple-card sound1: ASoC: no sink widget found for Line Out Jack
[ 19.273897] FAT-fs (mmcblk1p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[ 19.464054] asoc-simple-card sound1: ASoC: Failed to add route MONO_LOUT -> direct -> Line Out Jack
[ 19.638265] asoc-simple-card sound1: ASoC: no source widget found for Line In
[ 19.783832] asoc-simple-card sound1: ASoC: Failed to add route Line In -> direct -> LINE2R
based on "widgets.txt" i see my options are:
simple-audio-widgets =
"Microphone", "Microphone Jack",
"Line", "Line In Jack",
"Line", "Line Out Jack",
"Headphone", "Headphone Jack",
"Speaker", "Speaker External";
based on the file tlv320aic3x.c the only output options for the 3106 seem to be:
SND_SOC_DAPM_OUTPUT("LLOUT"),
SND_SOC_DAPM_OUTPUT("RLOUT"),
SND_SOC_DAPM_OUTPUT("HPLOUT"),
SND_SOC_DAPM_OUTPUT("HPROUT"),
SND_SOC_DAPM_OUTPUT("HPLCOM"),
SND_SOC_DAPM_OUTPUT("HPRCOM"),
SND_SOC_DAPM_INPUT("LINE1L"),
SND_SOC_DAPM_INPUT("LINE1R"),
and it seems that MONO_LOUT is not defined for the 3106 codec, but are 3104 only. is that correct?
i see this:
SND_SOC_DAPM_INPUT("MIC3L"),
SND_SOC_DAPM_INPUT("MIC3R"),
SND_SOC_DAPM_INPUT("LINE2L"),
SND_SOC_DAPM_INPUT("LINE2R"), under the section "for other than 3104" but it still doesn't route upon booting. what's up with that?
2) what code do i have to execute to route audio to a different input/output in my program? assuming amixer for ALSA. there doesn't seem to be a very obvious example of this when i looked for it. i can't imagine this is that uncommon of a request that there aren't many examples or i am overhtinking it and it is easier than i am making it
thanks