Rockchip 机器驱动与 HDMI 机制与实现详解
源码路径:
rk3588/kernel-6.1/sound/soc/rockchip/(machine)、soc/codecs/rk_codec_digital.c
文档目录:linuxDoc/sound/
目录
一、Machine 驱动角色
Machine(平台驱动)填充 struct snd_soc_card:
dai_link[]:CPU DAI ↔ Codec DAI 连接、格式DAIFMTdapm_routes:耳机/喇叭/麦克风路径- GPIO:功放使能、耳机检测
- 可选:jack、extcon、ADC 按键
RK 板级常由 设备树 sound 节点 + 驱动 probe 解析子节点完成。
二、multicodecs
rockchip_multicodecs.c(DRV_NAME "rk-multicodecs"):
| 特性 | 说明 |
|---|---|
| 多 Codec | dai_link[3],支持多路 I2C Codec |
| 耳机检测 | GPIO / ADC 电压检测 / codec_hp_det |
| extcon | 与 Type-C 音频切换协同 |
| jack | snd_soc_jack 上报 headset |
适用于 RK3308 等 多 Codec 音箱方案;RK3588 产品可复用或参考 DT 写法。
三、HDMI 音频
rockchip_hdmi.c(rk-hdmi-sound):
- 链接 CPU I2S →
hdmi-codec(SND_SOC_HDMI_CODEC) - 与 DRM HDMI 驱动配合,音频随显示输出
- 可选 HDMI jack 检测热插拔
本树 RK3588 活跃路径是 rockchip_hdmi.c + soc/codecs/hdmi-codec.c + DRM codec callbacks。rockchip_hdmi_dp.c、rockchip_cdndp.c 虽保留在源码目录中,但没有加入 sound/soc/rockchip/Makefile,属于不可直接使用的遗留文件。
RK3588 常见板级映射:
- HDMI0/1:I2S5/I2S6,常用
mclk-fs = <128>; - DP0/1:SPDIF TX2/TX5,常用
mclk-fs = <512>; - HDMI-IN:HDMI RX → I2S7 capture。
编解码盒 HDMI 输出带音频 时,用户态播放到 card 的 HDMI PCM 即可。
四、VAD ASRC DLP
| 模块 | 文件 | 作用 |
|---|---|---|
| VAD | rockchip_vad.c |
硬件语音活动检测;RK3588 映射 I2S1_8CH、PDM0 地址 |
| ASRC | rockchip_asrc.c |
异步采样率转换;本分支只匹配 RK3506/RK3576,不能直接归入 RK3588 |
| DLP | rockchip_dlp.c |
数字环回:Mic/Loopback 多通道模式 |
| multi_dais | rockchip_multi_dais.c |
聚合多 DAI 为单一 PCM |
VAD 含 ARM64 预处理汇编(vad_preprocess_arm64.S)。
五、片上数字 Codec
soc/codecs/rk_codec_digital.c:
rockchip,rk3588-codec-digital- 通过 GRF 寄存器(如
RK3588_GRF_SOC_CON6)做 SOC 侧数字音频开关配置 - 非 完整模拟 Codec,常与 HDMI/内置路径配合
附录
| 平台驱动 | 典型芯片 |
|---|---|
rockchip_rt5645.c |
RK3399 等 |
rk3399_gru_sound.c |
Chromebook GRU |
RK3588 新品以 DT + i2s_tdm + hdmi/multicodecs 为主,不局限上述遗留模块。
相关:06 RK3588 拓扑
正在加载留言…