I2C3 및 SAI2 라인을 통해 iMX8M에 연결된 코덱 드라이버(TLV320AIC3104)에 액세스하려고 합니다. 코덱 클럭 bclk는 FPGA에서 제공하는 4096000이며 해당 mclk는 접지되어 있습니다. iMx8M SOM SAI2 BCLk& MCLK는 4.096Mhz의 주파수로 FPGA에서 제공하는 클록 라인에 연결됩니다. 단순 사운드 카드 또는 드라이버 활성화를 등록할 수 없습니다. 16개 슬롯이 있는 TDM 모드로 코덱을 구성하고 16khz에서 오디오를 캡처해야 합니다.
이것은 내 dts 파일 변경 사항입니다.
sound {
compatible = "simple-audio-card";
simple-audio-card,name = "tdm-audio";
simple-audio-card,format = "tdm";
simple-audio-card,routing =
"Headphone Jack", "HPOUTL",
"Headphone Jack", "HPCOMR",
"IN2L", "Line In Jack",
"IN2R", "Line In Jack",
"IN1L", "Mic Jack",
"Playback", "CPU-Playback",
"CPU-Capture", "Capture";
status = "okay";
simple-audio-card,cpu {
sound-dai = <&sai2>;
dai-tdm-slot-num = <16>;
dai-tdm-slot-width = <16>;
};
simple-audio-card,codec {
audio-codec = <&codec>;
clocks = <&clk IMX8MM_CLK_SAI2_ROOT>;
clock-names = "bclk";
};
};
pinctrl_i2c3: i2c3grp {
fsl,pins = <
MX8MM_IOMUXC_I2C3_SCL_I2C3_SCL 0x400001c3
MX8MM_IOMUXC_I2C3_SDA_I2C3_SDA 0x400001c3
>;
};
pinctrl_sai2: sai2grp {
fsl,pins = <
MX8MM_IOMUXC_SAI2_RXFS_SAI2_RX_SYNC 0xd6
MX8MM_IOMUXC_SAI2_RXC_SAI2_RX_BCLK 0xd6
MX8MM_IOMUXC_SAI2_RXD0_SAI2_RX_DATA0 0xd6
MX8MM_IOMUXC_SAI2_TXFS_SAI2_TX_SYNC 0xd6
MX8MM_IOMUXC_SAI2_TXC_SAI2_TX_BCLK 0xd6
MX8MM_IOMUXC_SAI2_TXD0_SAI2_TX_DATA0 0xd6
MX8MM_IOMUXC_SAI2_MCLK_SAI2_MCLK 0xd6
>;
};
&i2c3 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3>;
status = "okay";
codec: tlv320aic3x@18 {
/* ai3x-micbias-vg = <2>; */
compatible = "ti,tlv320aic3104";
reg = <0x18>;
/* gpio-reset = <&gpio5 0 GPIO_ACTIVE_LOW>; */
#sound-dai-cells = <0>;
clocks = <&clk IMX8MM_CLK_SAI2_ROOT>;
clock-names = "bclk";
AVDD-supply = <®_audio>;
IOVDD-supply = <®_audio>;
DRVDD-supply = <®_audio>;
DVDD-supply = <&ldo5_reg>;
status = "okay";
};
};
또한 업데이트 Makefile
, 추가 imx-tlv320aic3x.c
및 sound/soc/fsl
패치했습니다 clk-imx8mm.c
.CLK_EXT3
+ pr_info("i.MX*MM clock driver before setting CLK_EXT3");
+ clk_set_parent(clks[IMX8MM_CLK_SAI2_ROOT], clks[IMX8MM_CLK_EXT3]);
+ pr_info("i.MX*MM clock driver after setting CLK_EXT3");
다음 오류가 발생합니다.
OF: /sound/simple-audio-card,cpu: could not get #sound-dai-cells for /sai@30020000
asoc-simple-card sound: parse error -22
asoc-simple-card: probe of sound failed with error -22
clk: failed to reparent sai2_root_clk to audio_pll1_out: -22
코덱이 제대로 작동하도록 dts를 적절하게 업데이트하는 데 도움이나 지침을 주시면 감사하겠습니다.