请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:TLV320AIC3100 您好,
我目前正在组装一台带有 TLV320AIC3100 TI 编解码器的设备,但在驱动 程序初始化过程中遇到以下错误:
[ 4.104750] asoc-audio-graph-card sound: parse error -22 [ 4.108728] asoc-audio-graph-card: probe of sound failed with error -22
我使用的是 Linux 内核版本5.4,使用的是 PHYTEC STM32MP1 som。
这是相关的设备树部分:
#include <dt-bindings/sound/tlv320aic31xx-micbias.h>
/ {
sound {
compatible = "audio-graph-card";
label = "STM32MP1-PHYCORE";
routing = "Playback", "MCLK", /* Set a route between "MCLK" and "playback" widgets */
"Capture", "MCLK";
dais = <&sai2b_port &sai2a_port>;
status = "okay";
};
};
&i2c1 {
codec: tlv320@18 {
compatible = "ti,tlv320aic3100";
#sound-dai-cells = <0>;
reg = <0x18>;
status = "okay";
ai31xx-micbias-vg = <2>;
/* gpio-reset = <&gpio5 8 GPIO_ACTIVE_LOW>; */
ai31xx-ocmv = <2>;
HPVDD-supply = <&v3v3>;
SPRVDD-supply = <&v3v3>;
SPLVDD-supply = <&v3v3>;
AVDD-supply = <&v3v3>;
IOVDD-supply = <&v3v3>;
DVDD-supply = <&v1v8_audio>;
clocks = <&sai2b>;
clock-names = "MCLK";
tlv320_port: port {
#address-cells = <1>;
#size-cells = <0>;
tlv320_tx_endpoint: endpoint@0 {
reg = <0>;
remote-endpoint = <&sai2b_endpoint>;
frame-master;
bitclock-master;
};
tlv320_rx_endpoint: endpoint@1 {
reg = <1>;
remote-endpoint = <&sai2a_endpoint>;
frame-master;
bitclock-master;
};
};
};
};
&sai2 {
clocks = <&rcc SAI2>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
clock-names = "pclk", "x8k", "x11k";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&sai2a_pins_b>, <&sai2b_pins_a>;
pinctrl-1 = <&sai2a_sleep_pins_b>, <&sai2b_sleep_pins_a>;
status = "okay";
sai2a: audio-controller@4400b004 {
compatible = "st,stm32-sai-sub-a";
dma-names = "rx";
st,sync = <&sai2b 2>;
status = "okay";
clocks = <&rcc SAI2_K>, <&sai2b>;
clock-names = "sai_ck", "MCLK";
sai2a_port: port {
sai2a_endpoint: endpoint {
remote-endpoint = <&tlv320_rx_endpoint>;
format = "i2s";
mclk-fs = <256>;
dai-tdm-slot-num = <2>;
dai-tdm-slot-width = <16>;
};
};
};
sai2b: audio-controller@4400b024 {
compatible = "st,stm32-sai-sub-b";
#clock-cells = <0>;
dma-names = "tx";
clocks = <&rcc SAI2_K>;
clock-names = "sai_ck";
status = "okay";
sai2b_port: port {
sai2b_endpoint: endpoint {
remote-endpoint = <&tlv320_tx_endpoint>;
format = "i2s";
mclk-fs = <256>;
dai-tdm-slot-num = <2>;
dai-tdm-slot-width = <16>;
};
};
};
};
这是 i2c 寄存器转储
root@phycore-stm32mp1-3:/boot# i2cdump -y 0 0x18
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 00 00 01 66 00 11 04 00 00 00 00 01 01 00 80 80 ..?f.??....??.??
10: 08 00 01 01 80 80 04 00 00 00 01 00 00 00 01 00 ?.?????...?...?.
20: 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 ....?...........
30: 00 00 00 02 32 12 03 02 02 11 10 00 01 04 00 14 ...?2??????.??.?
40: 0c 00 00 00 6f 38 00 00 00 00 00 ee 10 d8 7e e3 ?...o8.....???~?
50: 00 00 80 00 00 00 00 00 7f 00 00 00 00 00 00 00 ..?.....?.......
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
root@phycore-stm32mp1-3:/boot#
也许有人能帮我解决这个问题