3.9 KiB
3.9 KiB
H3 / Story B:真机拓扑与 IPC comp_id 核对(jack-Kaisa)
清单类说明:../../docs/linux-hdmi/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md。时间:2026-04-04 · 内核:6.17.0-20-generic
方法:zstd -dc …/sof-cml-rt5682.tplg.zst | alsatplg -d -;对照 dmesg 与 STREAM_PCM_PARAMS 载荷(comp_id=0x14)。
1. 本机固件与拓扑文件
| 文件 | SHA256 |
|---|---|
/lib/firmware/intel/sof-tplg/sof-cml-rt5682.tplg.zst |
eba6d312a8db5d1dff3ccac18655622fde73d74b834137f70cc5749e4ef3b0ac |
/lib/firmware/intel/sof/intel-signed/sof-cml.ri.zst(→ sof-cnl.ri.zst) |
b0aa0f52ccc6dc8c894f43433e9e3ddb8408dd65d90d0348d845b935fccc45c0 |
解压后拓扑约 35711 字节,与仓库 ANALYSIS_Audio.md 中「Chrome 解压规模一致」类描述相符。
2. HDMI 管道(拓扑图语义)
自 alsatplg 解码的 SectionWidget:
| ALSA 名 | 类型 | 说明 |
|---|---|---|
| PCM2P | aif_in |
Passthrough Playback 2 → 对应 pcm2 / HDMI1 |
| PGA4.0 | pga |
4 Master Playback Volume |
| BUF4.0 / BUF4.1 | buffer |
缓冲 |
| HDA0.OUT | dai_in |
stream_name 'iDisp1' |
| PIPELINE.4.HDA0.OUT | scheduler |
pipeline 4 |
同理:PCM3P → … → iDisp2(HDA1.OUT,PIPELINE.5);PCM4P → … → iDisp3(HDA2.OUT,PIPELINE.6)。
SectionGraph 连接关系(节选):
BUF4.0 , , PCM2P
PGA4.0 , , BUF4.0
BUF4.1 , , PGA4.0
… → HDA0.OUT / PIPELINE.4.HDA0.OUT
与 dmesg 中 pcm2 (HDMI1)、**cmd=1 dai iDisp1 Pin** 一致。
3. 与 IPC 载荷 comp_id = 0x14 (20) 的对照
- 已保存载荷(
dmesg_sof_TRACE_PAYLOAD_jack-Kaisa_6.17.0-20-generic_20260404_210954.txt)在pcm2 (HDMI1)场景下comp_id = 0x00000014。 - 解码拓扑中,HDMI 三路 PGA(PGA4.0 / PGA5.0 / PGA6.0) 的 tuple 均含
token251 20(同一模板;PGA1.0 为 SSP/Port1 路径,亦有token251 20,属拓扑 token 重复用法,不等于 运行时全局comp_id必然唯一)。
结论(H3):
- 「拓扑里根本没有 HDMI / iDisp / PCM2 这条边」 — 已排除;图结构与日志一致。
- 「
comp_id与拓扑完全对不上」 — 未证实;主机侧为pcm2填的comp_id=20与拓扑中 PGA 侧token251 20一致可作为支持证据,但 运行时 PCM 组件全局 ID 应以固件加载后为准;若要 100% 钉死,需在能导出 component 表 的 debug 接口或固件侧确认。 - 在
comp_id与图一致仍 -5 的情形下,仓库SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md的指引仍成立:更偏向 H1(固件策略/拒绝) 或 需上游一起看 DSP 侧,而非简单的「拓扑文件装错」。
4. stream_tag(当前会话 dmesg)
本次抓取中可见 pcm0 (Port1) 与 pcm2 (HDMI1) 均出现 stream_tag 1,且 0x60010000 后接 0x60040000 等,未在同一 grep 窗口内出现 ipc tx error(与历史采集里 HDMI2/HDMI3 集中 -5 的片段可能因播放设备/会话不同)。多条 PCM 共用 stream_tag 1 是否符合固件预期,仍建议在上游讨论中一并写出。
5. 复现本解码的命令(真机)
zstd -dc /lib/firmware/intel/sof-tplg/sof-cml-rt5682.tplg.zst > /tmp/sof-cml-rt5682.tplg
alsatplg -d /tmp/sof-cml-rt5682.tplg -o /tmp/sof-cml-rt5682-decoded.conf
grep -nE 'PCM2P|iDisp1|PGA4|PIPELINE\.4' /tmp/sof-cml-rt5682-decoded.conf
6. Story B 结论摘要
| 项 | 结论 |
|---|---|
| 拓扑文件 | sof-cml-rt5682.tplg.zst,已解码核对 |
| PCM2 / HDMI1 / iDisp1 | 与拓扑 一致 |
comp_id vs 拓扑 token |
与 PGA 模板中 token251 20 一致(支持对齐,非最终数学证明) |
| H3「主机配错 comp_id」 | 当前削弱;优先继续 H1 + 上游复现 |