说明:本文适用于 RK3288 kernel4.4 SDK 版本。
RK3288 的 HDMI 和 codec 共用一组 i2s 。如果需要 HDMI 和 Codec 同时输出音频,直接使用 SDK 自带的 hdmi_analog_sound 节点配置。如果需要 HDMI 和 codec 可以单独输出,需要将 HDMI 单独注册成一个 PCM 设备。
注:hdmi_analog_sound 和 simple-audio-card 这两种注册方式只能二选一。
HDMI 和 Codec 同时输出
方案一:直接使用 hdmi_analog_sound 默认节点配置( 以 RT5640 为例 )
//RK3288 kernel4.4
/ {
hdmi_analog_sound: hdmi-analog-sound {
status = "okay";
compatible = "rockchip,rk3288-hdmi-analog",
"rockchip,rk3368-hdmi-analog";
rockchip,model = "rockchip,rt5640-codec";
rockchip,cpu = <&i2s>;
rockchip,codec = <&rt5640>, <&hdmi>;
rockchip,widgets =
"Microphone", "Microphone Jack",
"Headphone", "Headphone Jack";
rockchip,routing =
"MIC1", "Microphone Jack",
"MIC2", "Microphone Jack",
"Microphone Jack", "micbias1",
"Headphone Jack", "HPOL",
"Headphone Jack", "HPOR";
};
};
&i2s {
status = "okay";
};
&hdmi{
status = "okay";
};
&i2c2 {
status = "okay";
rt5640: rt5640@1c {
#sound-dai-cells = <0>;
compatible = "realtek,rt5640";
reg = <0x1c>;
clocks = <&cru SCLK_I2S0_OUT>;
clock-names = "mclk";
interrupt-parent = <&gpio6>;
interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
pinctrl-names = "default";
pinctrl-0