说明:本文适用于基于 linux 4.4 内核版本开发的 RK 系列 SDK。硬件上,RK 芯片端 i2s mclk 引脚连接外部 codec 芯片 mclk 引脚,为外部芯片提供 mclk 时钟。软件上,需要对 mclk 做使能处理。
DTS配置
不同平台对应的时钟名称不一样,下述只举例 RK3399 和 RK3288 平台配置,其他平台可以去 kernel\drivers\clk\rockchip\clk-rk3xxx.c 中确定。
RK3399:
/{
dummy_codec: dummy-codec {
status = "okay";
compatible = "rockchip,dummy-codec";
#sound-dai-cells = <0>;
+ clocks = <&cru SCLK_I2S_8CH_OUT>;
+ clock-names = "mclk";
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2s_8ch_mclk>;
};
};
RK3288:
/{
dummy_codec: dummy-codec {
#sound-dai-cells = <0>;
compatible = "rockchip,dummy-codec";
+ clocks = <&cru SCLK_I2S0_OUT>;
+ clock-names = "mclk";
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2s0_mclk>;
};
};
codec 驱动
使用 dummy codec driver 需要添加下述patch:
diff --git a/sound/soc/codecs/dummy-codec.c b/sound/soc/codecs/dummy-codec.c
index 2761797..354251c 100644
--- a/sound/soc/codecs/dummy-codec.c
+++ b/sound/soc/codecs/dummy-codec.c
@@ -14,6 +14,7 @@
*
*/