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.
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.