master/slave配置

您可在DTS中配置CPU_DAI和Codec,分别对应master或slave。以下代码块为一个示例:
linux/arch/riscv/boot/dts/starfive/codecs/sf_es8316.dtsi

&sound7 {
	/* i2s + es8316 */
	simple-audio-card,dai-link@0 {
		reg = <0>;
		format = "i2s";
		bitclock-master = <&sndes8316>;
		frame-master = <&sndes8316>;
		mclk-fs = <256>;
		status = "okay";

		sndi2srx1: cpu0 {
			sound-dai = <&i2srx_3ch>;
		};

		sndi2stx1: cpu1 {
			sound-dai = <&i2stx_4ch1>;
		};

		sndes8316: codec {
			sound-dai = <&es8316>;
		};
	};
};

在以上示例代码中,您可以得知bitclock-masterframe-master的属性,这两个属性就是配置该声卡的master或slave,该属性指向的设备(CPU_DAI或Codec),则作为时钟的提供者(master),而另一个设备自动就变成slave。由于I2Smaster自身的硬件限制,没有时钟IO输出,且已作为HDMI Audio的CPU_DAI,因此在ES8316声卡中,是以Codec ES8316作为master,I2S则作为slave。