Hi,
I am currently bringing up a device with an TLV320AIC3100 TI codec assembled, but I getting following error during driver initialization:
[ 4.104750] asoc-audio-graph-card sound: parse error -22 [ 4.108728] asoc-audio-graph-card: probe of sound failed with error -22
I am using Linux kernel version 5.4 , PHYTEC STM32MP1 SoM is used.
This is the relevant device tree part:
#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>; }; }; }; };
This is the i2c register dump
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#
Maybe someone can help me solve this issue