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 = <®_3p3v>;
+ SPRVDD-supply = <®_3p3v>;
+ SPLVDD-supply = <®_3p3v>;
+ AVDD-supply = <®_3p3v>;
+ IOVDD-supply = <®_3p3v>;
+ DVDD-supply = <®_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