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-master
和frame-master
的属性,这两个属性就是配置该声卡的master或slave,该属性指向的设备(CPU_DAI
或Codec),则作为时钟的提供者(master),而另一个设备自动就变成slave。由于I2Smaster自身的硬件限制,没有时钟IO输出,且已作为HDMI
Audio的CPU_DAI
,因此在ES8316声卡中,是以Codec ES8316作为master,I2S则作为slave。