rk3568 i2s 做 master时,mclk 由 rk3568提供, dts 配置如下
dummy_codec: dummy-codec {
status = "okay";
compatible = "rockchip,dummy-codec";
#sound-dai-cells = <0>;
clocks = <&cru I2S3_MCLKOUT>;
clock-names = "mclk";
assigned-clocks = <&cru I2S3_MCLKOUT>, <&cru I2S3_MCLK_IOE>;
assigned-clock-rates = <12288000>;
assigned-clock-parents = <&cru I2S3_MCLKOUT_TX>, <&cru I2S3_MCLKOUT>;
pinctrl-names = "default";
pinctrl-0 = <&i2s3m0_mclk>;
};
audiopwmout_diff: audiopwmout-diff {
status = "okay";
compatible = "simple-audio-card";
simple-audio-card,format = "i2s";
simple-audio-card,name = "rockchiprk";
simple-audio-card,mclk-fs = <256>;
simple-audio-card,cpu {
sound-dai = <&i2s3_2ch>;
};
simple-audio-card,codec {
sound-dai = <&dummy_codec>;
};
};
rk3568 i2s 做slave时,mclk 由 codec 设备提供,一般是接晶振, dts 配置如下
dummy_codec: dummy-codec {
status = "okay";
compatible = "rockchip,dummy-codec";
#sound-dai-cells = <0>;
};
audiopwmout_diff: audiopwmout-diff {
status = "okay";
compatible = "simple-audio-card";
simple-audio-card,format = "i2s";
simple-audio-card,name = "rockchiprk";
simple-audio-card,mclk-fs = <256>;
simple-audio-card,bitclock-master = <&master>;
simple-audio-card,frame-master = <&master>;
simple-audio-card,cpu {
sound-dai = <&i2s3_2ch>;
};
master: simple-audio-card,codec {
sound-dai = <&dummy_codec>;
};
};
最后,i2s3_2ch 要打开
&i2s3_2ch {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&i2s3m0_sclk
&i2s3m0_lrck
&i2s3m0_sdi
&i2s3m0_sdo>;
}