Rockchip DAI 控制器机制与实现详解
源码路径:
rk3588/kernel-6.1/sound/soc/rockchip/
文档目录:linuxDoc/sound/
目录
一、原理
本源码树为 Rockchip 多代 SoC 提供 I2S/TDM、PDM、SAI、SPDIF 等驱动;其中 RK3588 DTS/匹配表明确使用 I2S/TDM、PDM、SPDIF、SPDIFRX(以后者的 rk3308-spdifrx fallback 匹配)。rockchip_sai.c 只有通用 rockchip,sai-v1 匹配,不能仅凭源码存在认定 RK3588 集成或启用 SAI。驱动作为 ASoC CPU DAI component:
- 解析 设备树(clocks、
dma-names、TDM slot) - 实现
snd_soc_dai_ops:hw_params、set_fmt、trigger - 通过 DMAengine 与 PCM 环缓冲交互
compatible 区分 SoC 代际(如 rockchip,rk3588-i2s-tdm)。
二、I2S/TDM
rockchip_i2s_tdm.c / rockchip_i2s_tdm.h(主路径,~2700+ 行):
| 能力 | 说明 |
|---|---|
| TDM slot | 多声道时分复用(8ch 等) |
| TXCR/RXCR | 数据格式、时钟边沿、PCM/TDM 模式 |
| 多 lane | CONFIG_SND_SOC_ROCKCHIP_I2S_TDM_MULTI_LANES |
| TRCM | 时隙路由(rockchip_trcm.c) |
连接外置 Codec(I2C 控制)或 HDMI IP 的 I2S 输入。
旧版 rockchip_i2s.c:早期 RK 芯片,3588 以 TDM 为主。
三、PDM 与 SAI
| 驱动 | 用途 |
|---|---|
rockchip_pdm.c |
PDM 数字麦(rk3588-pdm) |
rockchip_pdm_v2.c |
PDM 第二代 IP;本分支匹配 RK3506/RK3576/RV1126B,不匹配 RK3588 |
rockchip_sai.c |
Serial Audio Interface |
适用于 麦克风阵列、语音前端;常与 VAD、DLP 配合。
四、SPDIF
rockchip_spdif.c:S/PDIF 输出(rk3588-spdif)rockchip_spdifrx.c:S/PDIF 输入
用于光纤/同轴数字音频,消费类 RK 板较少。
五、公共与工具
| 文件 | 作用 |
|---|---|
rockchip_utils.c |
时钟、复位、常用配置 |
rockchip_utils.h |
共享声明 |
rockchip_dummy_dai.c |
占位 DAI |
时钟:依赖 HAVE_CLK,从 CRU/CCU 获取 MCLK/BCLK/LRCK。
附录
| Kconfig | 模块 |
|---|---|
SND_SOC_ROCKCHIP_I2S_TDM |
i2s-tdm |
SND_SOC_ROCKCHIP_PDM |
pdm |
SND_SOC_ROCKCHIP_SAI |
sai |
下一篇:04 Machine/HDMI
正在加载留言…