This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TLV320AIC3110: Unable to sync registers 0x9f-0x9f. -6

Part Number: TLV320AIC3110

Hi Team,

Need your help.

we are developing audio module on IMX8MM EVK board and  A11 code

Changes:

+        sound-tlv320aic31xx {
+                compatible = "simple-audio-card";
+                simple-audio-card,name = "tlv320aic31xx-Codec";
+                simple-audio-card,format = "i2s";
+                simple-audio-card,frame-master = <&cpudai2>;
+                simple-audio-card,bitclock-master = <&cpudai2>;
+
+               simple-audio-card,widgets =
+                       "Microphone", "Microphone Jack",
+                       "Headphone", "Headphone Jack",
+                       "Speaker", "Speaker Jack";
+                simple-audio-card,routing =
+                       "MIC1LP", "Microphone Jack",
+                       "MIC1RP", "Microphone Jack",
+                       "MIC1LP", "MICBIAS",
+                       "MIC1RP", "MICBIAS",
+                       "Headphone Jack", "HPL",
+                       "Headphone Jack", "HPR",
+                       "Speaker Jack", "SPL",
+                       "Speaker Jack", "SPR";
+
+              cpudai2: simple-audio-card,cpu {
+                        sound-dai = <&sai1>;
+                };
+
+                simple-audio-card,codec {
+                        sound-dai = <&tlv320aic31xx>;
+                       system-clock-frequency = <12000000>;
+
+                };
+        };

I2C3:

+        tlv320aic31xx: codec@18 {
+                compatible = "ti,tlv320aic3110";
+                reg = <0x18>;
+                pinctrl-0 = <&pinctrl_audio_reset>;
+                reset-gpios = <&gpio4 1 GPIO_ACTIVE_LOW>;
+                #sound-dai-cells = <0>;
+                HPVDD-supply = <&reg_3p3v>;
+                SPRVDD-supply = <&reg_3p3v>;
+                SPLVDD-supply = <&reg_3p3v>;
+                AVDD-supply = <&reg_3p3v>;
+                IOVDD-supply = <&reg_3p3v>;
+                DVDD-supply = <&reg_1p8v>;
+        };

 &sai1 {
+        #sound-dai-cells = <0>;
+        pinctrl-names = "default";
+        pinctrl-0 = <&pinctrl_sai1>;
+        fsl,sai-mclk-direction-output;
+        assigned-clocks = <&clk IMX8MM_CLK_SAI1>;
+        assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
+        assigned-clock-rates = <49152000>;
+        status = "okay";
+};

+       pinctrl_audio_reset: pinctrl_audio_reset {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SAI1_RXC_GPIO4_IO1         0x13
+               >;
+       };
+
        pinctrl_sai1: sai1grp {
                fsl,pins = <
                        MX8MM_IOMUXC_SAI1_MCLK_SAI1_MCLK        0xd6
                        MX8MM_IOMUXC_SAI1_TXFS_SAI1_TX_SYNC     0xd6
-                       MX8MM_IOMUXC_SAI1_RXD7_SAI1_TX_SYNC     0xd6
+                       /*MX8MM_IOMUXC_SAI1_RXD7_SAI1_TX_SYNC   0xd6*/
                        MX8MM_IOMUXC_SAI1_TXC_SAI1_TX_BCLK      0xd6
                        MX8MM_IOMUXC_SAI1_TXD0_SAI1_TX_DATA0    0xd6
-                       MX8MM_IOMUXC_SAI1_TXD1_SAI1_TX_DATA1    0xd6
+                       /*MX8MM_IOMUXC_SAI1_TXD1_SAI1_TX_DATA1  0xd6
                        MX8MM_IOMUXC_SAI1_TXD2_SAI1_TX_DATA2    0xd6
                        MX8MM_IOMUXC_SAI1_TXD3_SAI1_TX_DATA3    0xd6
                        MX8MM_IOMUXC_SAI1_TXD4_SAI1_TX_DATA4    0xd6
                        MX8MM_IOMUXC_SAI1_TXD5_SAI1_TX_DATA5    0xd6
                        MX8MM_IOMUXC_SAI1_TXD6_SAI1_TX_DATA6    0xd6
-                       MX8MM_IOMUXC_SAI1_TXD7_SAI1_TX_DATA7    0xd6
+                       MX8MM_IOMUXC_SAI1_TXD7_SAI1_TX_DATA7    0xd6 */
+                       MX8MM_IOMUXC_SAI1_RXD0_SAI1_RX_DATA0    0xd6
                >;
        };

OUTPUT:

1.  Codec is registered properly

2. MCLK is 11.2MHz  , BCLK 2.8Mhz and WCLK 44KHz

|evk_8mm:/ # i2cdump -f -y 2 0x18                                                                                                   
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
i2cdump: i2c_read_byte: No such device or address


1|evk_8mm:/ # i2cdetect -y 2                                                                                                         
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
20: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- 4d -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- 69 -- -- -- -- -- --
70: -- -- -- -- -- -- -- -- 

ERROR:

[    3.449149] tlv320aic31xx-codec 2-0018: Unable to sync registers 0x9f-0x9f. -6
[    3.456537] tlv320aic31xx-codec 2-0018: Failed to restore cache: -6
[    3.873907] #0: tlv320aic31xx-Codec
[  190.650287] tlv320aic31xx-codec 2-0018: ASoC: error at soc_component_read_no_lock on tlv320aic31xx-codec.2-0018: -16
[  190.661004] tlv320aic31xx-codec 2-0018: ASoC: error at soc_component_read_no_lock on tlv320aic31xx-codec.2-0018: -16