IMX93 I2S Audio Issue

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

IMX93 I2S Audio Issue

147 Views
AlanWen
Contributor III

I'm using the default kernel code for sai definition as below:

 

 

pinctrl_sai3: sai3grp {
		fsl,pins = <
			MX93_PAD_GPIO_IO26__SAI3_TX_SYNC		0x31e
			MX93_PAD_GPIO_IO16__SAI3_TX_BCLK		0x31e
			MX93_PAD_GPIO_IO17__SAI3_MCLK			0x31e
			MX93_PAD_GPIO_IO19__SAI3_TX_DATA00		0x31e
			MX93_PAD_GPIO_IO20__SAI3_RX_DATA00		0x31e
		>;
	};

	pinctrl_sai3_sleep: sai3grpsleep {
		fsl,pins = <
			MX93_PAD_GPIO_IO26__GPIO2_IO26			0x51e
			MX93_PAD_GPIO_IO16__GPIO2_IO16			0x51e
			MX93_PAD_GPIO_IO17__GPIO2_IO17			0x51e
			MX93_PAD_GPIO_IO19__GPIO2_IO19			0x51e
			MX93_PAD_GPIO_IO20__GPIO2_IO20			0x51e
		>;
	};
&sai3 {
	#sound-dai-cells = <0>;
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&pinctrl_sai3>;
	pinctrl-1 = <&pinctrl_sai3_sleep>;
	assigned-clocks = <&clk IMX93_CLK_SAI3>;
	assigned-clock-parents = <&clk IMX93_CLK_AUDIO_PLL>;
	assigned-clock-rates = <12288000>;
	fsl,sai-mclk-direction-output;
	status = "okay";
};

 

 

 

And I'm using the TLV320AIC3106 as my Sound-Card, the device tree shown below:

&lpi2c2 {
	#address-cells = <1>;
	#size-cells = <0>;
	clock-frequency = <400000>;
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&pinctrl_lpi2c2>;
	pinctrl-1 = <&pinctrl_lpi2c2>;
	status = "okay";
    tlv320aic3106: audio-codec@1b {
		compatible = "ti,tlv320aic3106";
		reg = <0x1b>;

		reset-gpios = <&gpio3 20 GPIO_ACTIVE_LOW>;
		status = "okay";
	};
};
/ {
    sound-tlv320 {
		compatible = "simple-audio-card";
		simple-audio-card,name = "tlv320-audio";
		simple-audio-card,widgets =
			"Line",    "Line Out",
			"Line",    "Line In",
			"Microphone",    "Microphone Jack";
		simple-audio-card,routing =
			"Line Out",	"LLOUT",
			"Line Out",	"RLOUT",
			"LINE1L",	"Line In",
			"LINE1R",	"Line In",
                        "MIC3L",	"Microphone Jack",
			"MIC3R",	"Microphone Jack",
                        "Microphone Jack",	"Mic Bias";
        
		simple-audio-card,format = "i2s";
		simple-audio-card,bitclock-master = <&sound_master>;
		simple-audio-card,frame-master = <&sound_master>;
		simple-audio-card,bitclock-inversion;

		sound_master: simple-audio-card,cpu {
			sound-dai = <&sai3>;
			dai-tdm-slot-num = <2>;
			dai-tdm-slot-width = <16>;
		};

		simple-audio-card,codec {
			sound-dai = <&tlv320aic3106>;
		};
	};
};

After compiling the kernel code, I can find the i2c device registered, but it's not 'UU'.

Can anyone help me solve this probelm ?

 

Thanks in advance.

0 Kudos
Reply
1 Reply

113 Views
jimmychan
NXP TechSupport
NXP TechSupport

You could check the TLV320AIC3106 is at operation mode. Check the reset signal is proper or not. Is the I2C communication work? You could check it in the TLV320AIC3106 driver.

0 Kudos
Reply