ROCKCHIP multicodecs audio Required properties: - compatible: "rockchip,multicodecs-card" - rockchip,cpu: The phandle of the Rockchip I2S/PDM controller that's connected to the CODEC - rockchip,codec: The phandle of audio codecs Optional properties: - rockchip,card-name: User specified audio sound card name, one string property. - rockchip,codec-hp-det : Detect the headphone via internal codec. - rockchip,wait-card-locked : This is a variable length array, user specified these sound cards need to be prepared and locked, otherwise the local slave card can be probed. - rockchip,audio-routing : sound card dapm routing. - hp-det-gpio : headphone detect gpio. - io-channels : headset mic/key detect adc channel. - io-channel-names : headset mic/key adc channel name. - spk-con-gpio : speaker enable/disabled gpio. - hp-con-gpio : headphone enable/disabled gpio. - keyup-threshold-microvolt: keyup-threshold-microvolt uV. - poll-interval : headset adc key poller internal ms. - play-pause-key : PLAYPAUSE key, can define the other key like vol+/vol- and so on. Optional dai-link subnode properties: - rockchip,format : CPU/CODEC common audio format. "i2s", "right_j", "left_j" , "dsp_a" "dsp_b", "ac97", "pdm", "msb", "lsb". - rockchip,frame-master : Indicates dai-link frame master. phandle to a cpu or codec subnode. - rockchip,bitclock-master : Indicates dai-link bit clock master. phandle to a cpu or codec subnode. - rockchip,bitclock-inversion : bool property. Add this if the dai-link uses bit clock inversion. - rockchip,frame-inversion : bool property. Add this if the dai-link uses frame clock inversion. - rockchip,mclk-fs : Multiplication factor between stream rate and codec mclk, applied only for the dai-link. - rockchip,mclk-fs-mapping : u32 properties. Multiplication factor between steam rate and codec mclk, these values will overwrite the mclk-fs. mclk-fs-mapping = <256 1024> means: (mclk of first codec) = 256 * fs, (mclk of second codec) = 1024 * fs. Example: sound { compatible = "rockchip,multicodecs-card"; rockchip,mclk-fs = <256>; rockchip,cpu = <&i2s0_8ch>; rockchip,codec = <&codec>, <&vad>; }; Example 2 : es8388_sound: es8388-sound { status = "okay"; compatible = "rockchip,multicodecs-card"; rockchip,card-name = "rockchip-es8388"; hp-det-gpio = <&gpio1 RK_PD5 GPIO_ACTIVE_LOW>; io-channels = <&saradc 3>; io-channel-names = "adc-detect"; spk-con-gpio = <&gpio1 RK_PD3 GPIO_ACTIVE_HIGH>; hp-con-gpio = <&gpio1 RK_PD2 GPIO_ACTIVE_HIGH>; rockchip,format = "i2s"; rockchip,mclk-fs = <256>; rockchip,cpu = <&i2s0_8ch>; rockchip,codec = <&es8388>; rockchip,audio-routing = "Headphone", "LOUT1", "Headphone", "ROUT1", "Speaker", "LOUT2", "Speaker", "ROUT2", "Headphone", "Headphone Power", "Headphone", "Headphone Power", "Speaker", "Speaker Power", "Speaker", "Speaker Power", "LINPUT1", "Main Mic", "LINPUT2", "Main Mic", "RINPUT1", "Headset Mic", "RINPUT2", "Headset Mic"; pinctrl-names = "default"; pinctrl-0 = <&hp_det>; keyup-threshold-microvolt = <1800000>; poll-interval = <100>; play-pause-key{ label = "playpause"; linux,code = ; press-threshold-microvolt = <2000>; }; }; Example 3 for rockchip,mclk-fs-mapping: sai_dais: sai-dais { status = "okay"; compatible = "rockchip,multi-dais"; dais = <&sai1>, <&sai4>; capture,channel-mapping = <2 2>; playback,channel-mapping = <2 0>; bitclock-inversion = <0 0>; mclk-fs-mapping = <256 1024>; }; es8388_sound: es8388-sound { status = "okay"; compatible = "rockchip,multicodecs-card"; rockchip,card-name = "rockchip-es8388"; spk-con-gpio = <&gpio1 RK_PC6 GPIO_ACTIVE_HIGH>; rockchip,pre-power-on-delay-ms = <30>; rockchip,post-power-down-delay-ms = <40>; rockchip,format = "i2s"; rockchip,cpu = <&sai_dais>; rockchip,codec = <&es8388>, <&audio_codec>; rockchip,mclk-fs = <256>; rockchip,mclk-fs-mapping = <256 1024>; rockchip,audio-routing = "Speaker", "LOUT1", "Speaker", "ROUT1", "Speaker", "Speaker Power", "Speaker", "Speaker Power", "LINPUT1", "Main Mic", "LINPUT2", "Main Mic", "RINPUT1", "Main Mic", "RINPUT2", "Main Mic"; pinctrl-names = "default"; pinctrl-0 = <&spk_ctrl>; };