HDMI/DP 音频与 DRM 协同

HDMI/DP 音频与 DRM 协同

1. 跨子系统

HDMI/DP 音频不是 sound/ 单目录闭环:

1
2
3
4
5
6
7
ALSA PCM
-> ASoC machine/link
-> Rockchip I2S/SPDIF CPU DAI
-> hdmi-codec component
-> DRM HDMI/DP audio callbacks
-> display controller/bridge/PHY
-> sink

显示驱动负责 hotplug、EDID/ELD 和链路状态;音频驱动负责 PCM/DAI。

2. 相关代码

  • soc/codecs/hdmi-codec.c:通用 HDMI codec;
  • soc/rockchip/rockchip_hdmi.c:Rockchip HDMI machine;
  • core/pcm_drm_eld.c:ELD 辅助;
  • DRM 侧 HDMI/DP controller/bridge。

rockchip_hdmi_dp.crockchip_cdndp.c 等文件没有进入本分支 sound/soc/rockchip/Makefile,不属于 RK3588 可构建的活跃路径。

3. ELD

ELD 从 sink EDID 音频能力生成,包含:

  • supported rates;
  • channels;
  • coding types;
  • speaker allocation;
  • monitor identity。

ALSA hw constraints 应与当前 sink 能力求交。热插拔后能力可变化。

4. hw_params

HDMI codec 配置:

  • sample rate;
  • sample width;
  • channels;
  • IEC channel allocation;
  • audio infoframe;
  • N/CTS 或等效时钟参数。

同时 CPU DAI 必须产生匹配 I2S/SPDIF 数据。

5. Hotplug

拔线或 mode set 期间可能:

  • jack 状态变化;
  • ELD invalid;
  • PCM disconnect/stop;
  • 音频静音;
  • 重新配置 display clock。

应用应处理设备暂时不可用,不能假设 card number 与 sink 能力永久固定。

6. DP

DP 音频通过 SDP 等机制承载,依赖 DP link training 与 DRM connector。驱动文件存在不代表当前 RK3588 板级 DP controller/bridge 已启用。

本树常见 RK3588 连接是:

1
2
DP0: rockchip,hdmi machine -> spdif_tx2 -> dp0 codec DAI
DP1: rockchip,hdmi machine -> spdif_tx5 -> dp1 codec DAI

板级 DTS 常配置 mclk-fs = <512>。HDMI0/1 通常改走 I2S5/I2S6,并常见 mclk-fs = <128>;这些数值是本树板级配置,不是所有 HDMI/DP 硬件的通用常量。

7. eARC

ARC/eARC 是电视回传音频,与普通 SoC 向显示器发送 HDMI playback 不同。是否支持取决于 HDMI controller、PHY、codec/machine 和 DTS;不能由 rockchip_hdmi.c 单独推断。

8. 常见故障

现象 定位
无 HDMI card ASoC machine、hdmi-codec、DRM component
card 有但无声 sink ELD、mixer、I2S route、infoframe
只支持 2ch ELD 或 machine constraints
插拔后失败 DRM hotplug、ELD 更新、应用重开
切分辨率断音 mode set/clock 重配
多 HDMI 口选错 connector 与 dai_link 映射

9. 观测

1
2
3
4
5
6
cat /proc/asound/cards
aplay -L
cat /proc/asound/card*/eld*
cat /sys/class/drm/card*-*/status
cat /sys/class/drm/card*-*/edid > /tmp/edid.bin
dmesg | grep -Ei 'hdmi|displayport|eld|asoc|audio'

文章互动

阅读 --

留言

0 条留言

正在加载留言…