你好
我使用的是 Linux4.19内核,芯片是 tlv320aic3104,然后是 menuconfig 配置<*>德州仪器 TLV320AIC3x 编解码器,我的器件树配置当音频输入时,我可以控制从 BYPASS 到 RIHGHT_LOP/M 的输出。 我要实现的是具有红色差分输入和绿色差分输出的配置。 但当我执行 arecord -D HW:0、0 -f s16_LE -d 10 -c 2 -r 16 -t wav 001.wav 时、音频不会从 I2S 输出到 CPU、播放 CPU 发出的音频播放 sin.wav 声音、但我不确定它是否能进入3104芯片。 以前使用 Linux4.1时,配置音频可以达到我需要的效果,但使用相同的配置却无法实现。
我希望通过 ALSA 命令满足我的需求、并寻求您的帮助。
此致
注1:我注意到 alsa 命令的旧版本和新版本之间的 numid 数字发生了变化。 例如:
numid=42、iface=混频器、name='Right Line1L Mux'、numid=43、iface=混频器、name='RightLine1RMux'
注2:我用于配置录制的命令是
amixer cset numid=32,iface=Mixer,name='PGA Capture Switch'开,of
amixer cset numid=31, iface=Mixer, name='PGA Capture Volume' 31
amixer cset numid=23,iface=mixer, name='AGC Switch' off,off
amixer cset numid=40,iface=mixer,name='Left Line1L Mux' 2
amixer cset numid=44、iface=mixer、name='Left PGA Mixer Line1L Switch' on
amixer cset numid=37,iface=mixer, name='Left HPCOM Mux'
----------------------------------------------------------------------------------------------------------------
到目前为止、我发现当我配置路径时、寄存器0x66配置为0xa2 (i2cset -y -f 0 0x18 0x66 0xa2)。 执行一次播放、不会产生任何声音(0x66将变回0x02)、再执行一个路径配置、再次将寄存器0x66配置为0xa2 (i2cset -y -f 0 0x18 0x66 0xa2)、播放音频并查找声音(检查0x66寄存器是否已更改为0xa2)。
----------------------------------------------------------------------------------------------------------------
我的设备树:
sound {
compatible = "simple-audio-card";
simple-audio-card,name = "tlv320aic3104";
simple-audio-card,format = "i2s";
simple-audio-card,mclk-fs = <256>;
simple-audio-card,bitclock-master = <&dailink0_master>;
simple-audio-card,frame-master = <&dailink0_master>;
simple-audio-card,widgets =
"Microphone", "Microphone Jack",
"Headphone", "Headphone Jack",
"Speaker", "External Speaker",
"Line", "Line Out",
"Line", "Line In";
,routing =
"MIC_IN", "Microphone Jack",
"Headphone Jack", "HP_OUT",
"LINE1L", "Line In",
"LINE1R", "Line In",
"Headphone Jack", "RLOUT",
"Headphone Jack", "LLOUT";
dailink0_master:simple-audio-card,cpu {
sound-dai = <&sai1 0>;
};
simple-audio-card,codec {
sound-dai = <&codec 0>;
/* clocks = <&clks IMX6UL_CLK_SAI1>; */
};
};
&clks {
assigned-clocks = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
/* assigned-clock-rates = <1179648000>; */
assigned-clock-rates = <786432000>;
/* assigned-clock-rates = <705600000>; */
};
&i2c1 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c1>;
status = "okay";
codec: tlv320aic3104@18 {
#sound-dai-cells = <0>;
compatible = "ti,tlv320aic3104";
reg = <0x18>;
gpio-reset = <&gpio5 2 GPIO_ACTIVE_LOW>;
ai3x-micbias-vg = <0>;
/* Regulators */
DRVDD-supply = <®_3p3v>;
AVDD-supply = <®_3p3v>;
IOVDD-supply = <®_3p3v>;
DVDD-supply = <®_1p8v>;
status = "okay";
};
eeprom@50 {
compatible = "atmel,24c02";
reg = <0x50>;
};
};
&sai1 {
#sound-dai-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai1>;
assigned-clocks = <&clks IMX6UL_CLK_SAI1_SEL>,
<&clks IMX6UL_CLK_SAI1>;
assigned-clock-parents = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
/* assigned-clock-rates = <2>, <12288000>; */
assigned-clock-rates = <2>, <24576000>;
/* assigned-clock-rates = <2>, <28224000>; */
status = "okay";
};


录像

阿普拉斯
