diff --git a/README.md b/README.md
index 4bef681979..8088c901f7 100644
--- a/README.md
+++ b/README.md
@@ -2,61 +2,70 @@
修复 Chromebox 刷写 Coreboot 后,安装 Windows/Linux 时的声音问题。
+## 文档入口(请先读)
+
+**全仓库仅本文件为 README**;`docs/` 下详细目录见 [docs/INDEX.md](docs/INDEX.md)(非 README,避免双层入口)。
+
+| 你想… | 打开 |
+| ----- | ---- |
+| **解决 Linux HDMI 无声**(分阶段步骤、已排除项、成功标准) | [docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md](docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md) |
+| **按主题浏览全部文档** | [docs/INDEX.md](docs/INDEX.md) |
+| Linux / Windows 分平台思路与文档索引 | [audio_topology/REPAIR_Plan_Audio.md](audio_topology/REPAIR_Plan_Audio.md) |
+| 三平台技术分析与对比 | [audio_topology/ANALYSIS_Audio.md](audio_topology/ANALYSIS_Audio.md) |
+| 换机交接、源码克隆、实验结论 | [docs/meta/WORK_PROGRESS.md](docs/meta/WORK_PROGRESS.md) |
+
+---
+
## 当前问题概况
| 平台 | HDMI 声音 | 3.5mm 耳机声音 | 插入/拔出提示 |
| ------- | ------- | ---------- | ------- |
-| Linux | ❌ 无 | ✅ 有 | ✅ 有 |
-| Windows | ✅ 有 | ❌ 无 | ❌ 无 |
+| Linux | 无 | 有 | 有 |
+| Windows | 有 | 无 | 无 |
+**目标平台**:Chromebox(10 代 Intel,Google **Kaisa**),Coreboot 刷机后。
+
---
-## 任务列表
+## 任务列表(与路线图对齐)
-> **建议执行顺序**:先完成共通文档(尤其是硬件拓扑),再分别处理 Linux / Windows 平台问题。
+> **建议顺序**:共通拓扑与文档 → Linux HDMI 按 [路线图](docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md) 分阶段推进 → Windows 3.5mm。
-### 一、共通与文档(优先)
+### 共通与文档
-- [✓] **C1**: 整理 Chromebox 10 代音频硬件拓扑(HDMI、3.5mm、codec 型号)
- - [✓] C1a: 在 Linux 下收集硬件拓扑信息(运行 `audio_topology/collect_linux_audio_topology.sh`,输出到 `audio_topology/collected/`)
- - [✓] C1b: 在 Windows 下收集硬件拓扑信息(运行 `audio_topology/collect_windows_audio_topology.ps1`,输出到 `audio_topology/collected/`)
- - C1c: 在原生 ChromeOS 下收集硬件拓扑信息(运行 `audio_topology/collect_chromeos_audio_topology.sh`,并在 chrome://system 的 audio 节复制补充;结果放入 `audio_topology/collected/`)
-- **C2**: 记录 Coreboot 下与原生 ChromeOS 固件的音频差异
-- [✓] **C3**: 编写分平台操作步骤文档(Linux / Windows)— 见 [REPAIR_Plan_Audio.md](audio_topology/REPAIR_Plan_Audio.md) 与各 OPERATION 文档
-- **C4**: 补充已验证的 Chromebox 型号与固件版本
+| 任务 | 说明 |
+| ---- | ---- |
+| C1 | 硬件拓扑(HDMI、3.5mm、codec):C1a Linux / C1b Windows 采集已完成;C1c 原生 ChromeOS 待补 |
+| C2 | Coreboot 与原生 ChromeOS 固件音频差异(记录) |
+| C3 | 分平台文档: [REPAIR_Plan_Audio.md](audio_topology/REPAIR_Plan_Audio.md) 与各 OPERATION |
+| C4 | 已验证机型与固件版本(待补充) |
-### 二、Linux 相关
+### Linux(L1–L4 对应 HDMI 路线图阶段)
-- **L1**: 调研 Chromebox 10 代在 Linux 下的 HDMI 音频方案(ALSA / PulseAudio / PipeWire)
-- **L2**: 确认 HDMI 音频芯片型号和驱动兼容性
-- **L3**: 尝试/验证 HDMI 音频所需固件或内核参数
-- **L4**: 编写 Linux 下 HDMI 音频修复说明或脚本(如有需要)
+| 任务 | 对应路线图 | 说明 |
+| ---- | ---------- | ---- |
+| L1 | [路线图](docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md) | ALSA / PipeWire 用户态基线:`aplay`、`speaker-test`、采集脚本 |
+| L2 | [路线图](docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md) | HDMI 走 SOF + iDisp;与内核/固件兼容性结论见 [ANALYSIS_Audio.md](audio_topology/ANALYSIS_Audio.md) |
+| L3 | [路线图](docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md) | 固件实验(低期望)、HWE 6.17、0001 补丁与自编内核 |
+| L4 | [路线图](docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md) + [docs/INDEX.md](docs/INDEX.md) | 脚本、补丁目录、深度 diff、上游复现 |
-### 三、Windows 相关
+### Windows
-- **W1**: 调研 Chromebox 10 代 3.5mm 音频在 Windows 下的驱动需求
-- **W2**: 确认 3.5mm 接口对应芯片及 Windows 驱动支持情况
-- **W3**: 解决 3.5mm 无声音问题(驱动安装 / 驱动修改 / 注册表等)
-- **W4**: 解决耳机插入/拔出无提示问题(通常与 HDA 驱动 / 插孔检测相关)
+| 任务 | 说明 |
+| ---- | ---- |
+| W1–W4 | 3.5mm / CoolStar / ALC5682、插拔提示等: [docs/windows/OPERATION_Windows_Audio.md](docs/windows/OPERATION_Windows_Audio.md) |
---
-## 参考信息
+## 参考速链
-- 目标平台:Chromebox(10 代 Intel,Coreboot 刷机后)
-- 目标系统:Linux / Windows
-- **Linux / Windows 声音修复总方案**:[audio_topology/REPAIR_Plan_Audio.md](audio_topology/REPAIR_Plan_Audio.md)
-- Windows 3.5mm / CoolStar:[audio_topology/OPERATION_Windows_Audio.md](audio_topology/OPERATION_Windows_Audio.md)
-- Linux SOF / intel-signed 固件:[audio_topology/OPERATION_Force_Intel_Signed_Firmware.md](audio_topology/OPERATION_Force_Intel_Signed_Firmware.md)
-- 三平台对比分析:[audio_topology/ANALYSIS_Audio.md](audio_topology/ANALYSIS_Audio.md)
-- Ubuntu HWE 6.17 内核:源码目录 **`kernel-src/linux-hwe-6.17-6.17.0/`**(大文件不提交,见 [kernel-src/README.md](kernel-src/README.md));自定义补丁目录 [patches/ubuntu-hwe-6.17/](patches/ubuntu-hwe-6.17/)(应用时 **`PATCH=/path/to.patch`**)、脚本 [scripts/ubuntu-hwe-617-build.sh](scripts/ubuntu-hwe-617-build.sh)、依赖 [scripts/ubuntu-hwe-617-deps-packages.txt](scripts/ubuntu-hwe-617-deps-packages.txt)、摘要 [patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt](patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt)
-- **换机交接 / 进度与两处内核源码下载**:[docs/WORK_PROGRESS.md](docs/WORK_PROGRESS.md)
-- ChromeOS 5.15 与 Ubuntu HWE 6.17 的 iDisp/HDMI API 对照:[docs/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md](docs/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md)
-- Linux HDMI 重新分析与补丁重设流程:[docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md](docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md)
-- ChromeOS 5.15 与 Ubuntu 6.17 音频子树自动对照摘要:`./scripts/diff-chromeos-ubuntu-sound.sh` → [docs/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md](docs/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md)
-- ChromeOS 内核深度 diff(unshallow、`git log`、导出 `ipc3`/`pcm`/`hda-dai`):[docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md](docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md)
-- Ubuntu 24.04 + Windows 双系统:[docs/OPERATION_DualBoot_Ubuntu24_Windows.md](docs/OPERATION_DualBoot_Ubuntu24_Windows.md)
-- 自编译 HWE 6.17 内核 deb 安装步骤(`linux-base` / DKMS / Secure Boot):[docs/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md](docs/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md)
+- Ubuntu HWE 6.17 源码与补丁:[kernel-src/README.md](kernel-src/README.md)、[patches/ubuntu-hwe-6.17/](patches/ubuntu-hwe-6.17/)
+- 自编内核安装:[docs/kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md](docs/kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md)
+- Linux SOF 固件实验与回退:[audio_topology/OPERATION_Force_Intel_Signed_Firmware.md](audio_topology/OPERATION_Force_Intel_Signed_Firmware.md)
+- 双系统:[docs/meta/OPERATION_DualBoot_Ubuntu24_Windows.md](docs/meta/OPERATION_DualBoot_Ubuntu24_Windows.md)
+**脚本一览**(`ubuntu-hwe-617-build.sh`、采集、diff、trace 等): [docs/INDEX.md](docs/INDEX.md) 文末「脚本」表。
+
+**拓扑采集脚本说明**:[audio_topology/COLLECT.md](audio_topology/COLLECT.md)
diff --git a/audio_topology/ANALYSIS_Audio.md b/audio_topology/ANALYSIS_Audio.md
index 1d8ff6b57e..f571f6a4d9 100644
--- a/audio_topology/ANALYSIS_Audio.md
+++ b/audio_topology/ANALYSIS_Audio.md
@@ -163,7 +163,7 @@ Ubuntu 22.04 LTS 默认使用 5.15 内核,与 ChromeOS 一致。可借助 Live
- (如 `ubuntu-22.04.1-desktop-amd64.iso`)
- (如 `ubuntu-22.04.2-desktop-amd64.iso`)
- 索引:
- - **不必执着 Live**:也可在已安装系统上通过 **Ubuntu Mainline** 安装 **5.15.x** deb 做对比,步骤与风险提示见 [REANALYSIS 附录](../docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md#appendix-ubuntu-515)。
+ - **不必执着 Live**:也可在已安装系统上通过 **Ubuntu Mainline** 安装 **5.15.x** deb 做对比,步骤与风险提示见 [REANALYSIS 附录](../docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md#appendix-ubuntu-515)。
2. **制作 Live USB**:用 Ventoy、Rufus 或 `dd` 写入 U 盘,从 U 盘启动。
@@ -177,7 +177,7 @@ Ubuntu 22.04 LTS 默认使用 5.15 内核,与 ChromeOS 一致。可借助 Live
5. **说明**:22.04.3、22.04.4、22.04.5 等较新 ISO 可能已带 HWE(6.x)内核,为稳妥起见,优先用 old-releases 的 22.04.1 或 22.04.2 镜像;若本地只有 22.04.5,可在启动菜单中尝试选择带 `generic` 的内核,或在安装后禁用 HWE 再切回 5.15。
-6. **勿与 Mainline 5.15 deb 混淆**:在已安装的 Ubuntu 24.04 上安装 **kernel.ubuntu.com Mainline** 的 5.15(如 `v5.15.201`)**不是**「Ubuntu 22.04 自带的 5.15.0-xx 栈」,真机曾出现 **HDMI 仍无声且 3.5mm/WiFi 也异常**;对照 ChromeOS 或验证「是否 6.x 独有」时,**不要用 Mainline 代替** 22.04 早期 Live 或上游 issue,详见 [REANALYSIS 文档](../docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md)。
+6. **勿与 Mainline 5.15 deb 混淆**:在已安装的 Ubuntu 24.04 上安装 **kernel.ubuntu.com Mainline** 的 5.15(如 `v5.15.201`)**不是**「Ubuntu 22.04 自带的 5.15.0-xx 栈」,真机曾出现 **HDMI 仍无声且 3.5mm/WiFi 也异常**;对照 ChromeOS 或验证「是否 6.x 独有」时,**不要用 Mainline 代替** 22.04 早期 Live 或上游 issue,详见 [REANALYSIS 文档](../docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md)。
### 2. 向 SOF 社区反馈
@@ -199,7 +199,7 @@ Ubuntu 22.04 LTS 默认使用 5.15 内核,与 ChromeOS 一致。可借助 Live
| 硬件一致 | sof-rt5682, 同左 | sof-rt5682, 同左 | Realtek ALC5682 + Intel 显示器音频,同硬件 |
| 采集条件 | HDMI1 已插入 | HDMI1 已插入 | HDMI 已连接 |
| 问题表现 | HDMI:pcm3/4 -5 错误;3.5mm 正常 | 均正常 | HDMI 正常;3.5mm 无声、无插入提示 |
-| 下一步 | 确认 pcm 与物理端口对应,复测 HDMI;若「原来有声现在无声」见第八节 | — | [OPERATION_Windows_Audio.md](OPERATION_Windows_Audio.md);README W1–W4 |
+| 下一步 | 确认 pcm 与物理端口对应,复测 HDMI;若「原来有声现在无声」见第八节 | — | [OPERATION_Windows_Audio.md](../docs/windows/OPERATION_Windows_Audio.md);README W1–W4 |
---
diff --git a/audio_topology/README.md b/audio_topology/COLLECT.md
similarity index 84%
rename from audio_topology/README.md
rename to audio_topology/COLLECT.md
index 4f110a2064..8028ca1f6c 100644
--- a/audio_topology/README.md
+++ b/audio_topology/COLLECT.md
@@ -51,6 +51,8 @@ cd audio_topology
## 修复方案与专项文档
-- 总览:[REPAIR_Plan_Audio.md](REPAIR_Plan_Audio.md)(Linux HDMI / Windows 3.5mm)
-- 其它见该文件内「文档索引」表。
+- **Linux HDMI 路线图(未来步骤主文档)**:[../docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md](../docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md)
+- 全文档索引:[../docs/INDEX.md](../docs/INDEX.md)
+- 分平台总览:[REPAIR_Plan_Audio.md](REPAIR_Plan_Audio.md)(Linux HDMI / Windows 3.5mm)
+- 其它见 [REPAIR_Plan_Audio.md](REPAIR_Plan_Audio.md) 内「文档索引」表。
diff --git a/audio_topology/REPAIR_Plan_Audio.md b/audio_topology/REPAIR_Plan_Audio.md
index 7f64d7ac07..53819fe59c 100644
--- a/audio_topology/REPAIR_Plan_Audio.md
+++ b/audio_topology/REPAIR_Plan_Audio.md
@@ -15,6 +15,9 @@ Coreboot 刷机后,Linux 与 Windows 的音频问题**表现相反**,需**
| Linux(当前典型) | 无 | 有 | 有 |
| Windows(当前典型) | 有 | 无 | 无 |
+**Linux HDMI:分阶段路线图与未来步骤(主文档)**:[../docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md](../docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md)
+**全仓库文档索引**:[../docs/INDEX.md](../docs/INDEX.md)
+下文第一节保留具体操作顺序;与路线图冲突时以路线图为准并更新互链。
---
@@ -34,11 +37,11 @@ Coreboot 刷机后,Linux 与 Windows 的音频问题**表现相反**,需**
1. **确认物理口与 ALSA 设备**
`aplay -L`,用 `speaker-test -D plughw:卡号,设备号` 逐个试 HDMI(pcm2/3/4 与物理 HDMI1/2/3 对应关系以实测为准)。
2. **以 ChromeOS 5.15 为「有声」参照(优先)**
- 同机 **ChromeOS 上 HDMI 已验证正常**,对照意义大于通用发行版 Live。开发上:用仓库中的 **ChromiumOS 5.15 内核源码**(`chromiumos_kernel/v5.15`,克隆说明见 [WORK_PROGRESS.md](../docs/WORK_PROGRESS.md))与当前 **Ubuntu HWE 6.17** 源码(如 `kernel-src/linux-hwe-6.17-6.17.0/`,见 [kernel-src/README.md](../kernel-src/README.md))对 `sound/soc/sof/`、`sound/soc/intel/boards/` 等做 diff,定位 iDisp/HDMI 与 SOF IPC 差异;必要时再 **git bisect** 或向 SOF 上游反馈。详见 [ANALYSIS_Audio.md](ANALYSIS_Audio.md) 第六节。
+ 同机 **ChromeOS 上 HDMI 已验证正常**,对照意义大于通用发行版 Live。开发上:用仓库中的 **ChromiumOS 5.15 内核源码**(`chromiumos_kernel/v5.15`,克隆说明见 [WORK_PROGRESS.md](../docs/meta/WORK_PROGRESS.md))与当前 **Ubuntu HWE 6.17** 源码(如 `kernel-src/linux-hwe-6.17-6.17.0/`,见 [kernel-src/README.md](../kernel-src/README.md))对 `sound/soc/sof/`、`sound/soc/intel/boards/` 等做 diff,定位 iDisp/HDMI 与 SOF IPC 差异;必要时再 **git bisect** 或向 SOF 上游反馈。详见 [ANALYSIS_Audio.md](ANALYSIS_Audio.md) 第六节。
3. **固件实验(预期有限)**
用 intel-signed 覆盖 community 的 `sof-cnl.ri.zst` **在本项目已实测不能单独恢复 HDMI**;若仍要试参数/路径,见 [OPERATION_Force_Intel_Signed_Firmware.md](OPERATION_Force_Intel_Signed_Firmware.md),并注意回退清单。
4. **自行维护内核(进阶 / 新补丁设计)**
- 对照 ChromeOS 5.15 与 Ubuntu HWE 6.17:`set_idisp_hdmi_link()` 在 ChromeOS 使用 `dpcm_playback`,在 6.17 使用 **`playback_only`**——这是上游对 `struct snd_soc_dai_link` 的重命名,**不能**把 `dpcm_playback` 写回 6.17。历史上曾试 **0001/0002**(已自仓库移除;0002 真机未恢复 HDMI)。新补丁应基于 **`ipc3.c` / `pcm.c` / `hda-dai.c`** 等与 `STREAM_PCM_PARAMS` 链路的差异再写,见 [patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt](../patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt)、[ChromeOS 深度 diff 流程](../docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md)、[Linux HDMI 重新分析](../docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md)。
+ 对照 ChromeOS 5.15 与 Ubuntu HWE 6.17:`set_idisp_hdmi_link()` 在 ChromeOS 使用 `dpcm_playback`,在 6.17 使用 **`playback_only`**——这是上游对 `struct snd_soc_dai_link` 的重命名,**不能**把 `dpcm_playback` 写回 6.17。历史上曾试 **0001/0002**(已自仓库移除;0002 真机未恢复 HDMI)。新补丁应基于 **`ipc3.c` / `pcm.c` / `hda-dai.c`** 等与 `STREAM_PCM_PARAMS` 链路的差异再写,见 [patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt](../patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt)、[ChromeOS 深度 diff 流程](../docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md)、[Linux HDMI 重新分析](../docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md)。
应用补丁与编译(**必须**显式指定 `PATCH`;无预置补丁时跳过 `apply`):
@@ -85,7 +88,7 @@ export PATCH="/path/to/your/0001-new.patch" # 有补丁时
### 2.3 专项文档
-全流程步骤:[OPERATION_Windows_Audio.md](OPERATION_Windows_Audio.md)
+全流程步骤:[OPERATION_Windows_Audio.md](../docs/windows/OPERATION_Windows_Audio.md)
---
@@ -104,9 +107,15 @@ export PATCH="/path/to/your/0001-new.patch" # 有补丁时
| ------------------------------------------------------------------------------------ | -------------------------- |
| [ANALYSIS_Audio.md](ANALYSIS_Audio.md) | 三平台对比、原因分析、ChromeOS 对照与第六节排查、第八节无声排查 |
| [OPERATION_Force_Intel_Signed_Firmware.md](OPERATION_Force_Intel_Signed_Firmware.md) | Linux SOF 固件路径与回退 |
-| [OPERATION_Windows_Audio.md](OPERATION_Windows_Audio.md) | Windows CoolStar / ALC5682 |
+| [OPERATION_Windows_Audio.md](../docs/windows/OPERATION_Windows_Audio.md) | Windows CoolStar / ALC5682 |
| [README.md](../README.md) | 仓库任务列表 |
-| [OPERATION_ChromeOS_Kernel_Deep_Diff.md](../docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md) | ChromeOS 与 6.17 音频关键文件 diff / unshallow / git log |
-| [REANALYSIS_Linux_HDMI_Audio_Kaisa.md](../docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md) | Linux HDMI 重新分析与补丁重设流程 |
+| [OPERATION_ChromeOS_Kernel_Deep_Diff.md](../docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md) | ChromeOS 与 6.17 音频关键文件 diff / unshallow / git log |
+| [REANALYSIS_Linux_HDMI_Audio_Kaisa.md](../docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md) | Linux HDMI 重新分析与补丁重设流程 |
+| [Linux_HDMI_Audio_Roadmap.md](../docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md) | **Linux HDMI 路线图**(分阶段、已排除项) |
+| [../docs/INDEX.md](../docs/INDEX.md) | `docs/` 全索引 |
+| [collect_linux_audio_topology.sh](collect_linux_audio_topology.sh) | Linux 拓扑采集;含 SOF/HDMI IPC 基线 dmesg 与 `speaker-test` 提示 |
+| [../scripts/verify-ubuntu-hwe617-0001-patch.sh](../scripts/verify-ubuntu-hwe617-0001-patch.sh) | 校验 HWE 6.17 上 0001 补丁(dry-run / 已应用检测) |
+| [../scripts/linux-hdmi-followup-workflow.sh](../scripts/linux-hdmi-followup-workflow.sh) | 仍无声时:深度 diff / 上游复现文档入口 |
+| [../docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md](../docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md) | 提交 SOF/ALSA 上游所需材料与邮件模板 |
diff --git a/audio_topology/collect_linux_audio_topology.sh b/audio_topology/collect_linux_audio_topology.sh
index b2f78b3c20..e8cb67d6ca 100755
--- a/audio_topology/collect_linux_audio_topology.sh
+++ b/audio_topology/collect_linux_audio_topology.sh
@@ -58,6 +58,7 @@ echo "" >> "$OUTPUT"
section "系统信息"
run_cmd "uname -a" uname -a
run_cmd "内核版本" uname -r
+run_cmd "/proc/version" cat /proc/version
if command -v alsactl &>/dev/null; then
run_cmd "ALSA 版本" alsactl --version 2>/dev/null || echo "alsactl 无版本信息"
fi
@@ -150,6 +151,23 @@ dmesg 2>/dev/null | grep -iE 'snd|hda|audio|codec|hdmi' >> "$OUTPUT" || echo "(
echo "\`\`\`" >> "$OUTPUT"
echo "" >> "$OUTPUT"
+# --- Kaisa HDMI / SOF IPC 基线(REPAIR_Plan_Audio.md / REANALYSIS_Linux_HDMI_Audio_Kaisa.md)---
+section "SOF / HDMI / IPC 基线 (dmesg)"
+echo "# dmesg | grep -iE 'sof|STREAM_PCM|ipc failed|ipc tx|pcm[0-9]|ASoC|iDisp|hdmi' | tail -120" >> "$OUTPUT"
+echo "# 用于对照 STREAM_PCM_PARAMS / ipc tx error 等;建议 sudo 运行本脚本以读全量 dmesg" >> "$OUTPUT"
+echo "\`\`\`" >> "$OUTPUT"
+dmesg 2>/dev/null | grep -iE 'sof|STREAM_PCM|ipc failed|ipc tx|pcm[0-9]|ASoC|iDisp|hdmi' | tail -120 >> "$OUTPUT" || echo "(需要 root 或 dmesg 不可用)" >> "$OUTPUT"
+echo "\`\`\`" >> "$OUTPUT"
+echo "" >> "$OUTPUT"
+
+section "HDMI 试听命令提示(人工执行)"
+{
+ echo "# 在 aplay -L 中查找 HDMI / DisplayPort 设备后,对每个候选 plughw 试播(Ctrl+C 结束):"
+ echo "# speaker-test -D plughw:卡号,设备号 -c 2 -l 1"
+ echo "# 若 dmesg 已出现 STREAM_PCM_PARAMS / ipc tx error,用户态换 sink 通常无法单独修复。"
+} >> "$OUTPUT"
+echo "" >> "$OUTPUT"
+
# --- 可选: journalctl 内核日志 (补充 dmesg,含启动后日志) ---
section "journalctl 内核日志 (SOF/音频,可选补充)"
if command -v journalctl &>/dev/null; then
diff --git a/audio_topology/collected/README_TRACE_KAISA.md b/audio_topology/collected/README_TRACE_KAISA.md
index 17a85ca433..36f6038e7e 100644
--- a/audio_topology/collected/README_TRACE_KAISA.md
+++ b/audio_topology/collected/README_TRACE_KAISA.md
@@ -17,4 +17,4 @@ dmesg_sof_TRACE_STREAM_PCM_PARAMS_jack-Kaisa__.txt
## 操作步骤
-见仓库 **`docs/OPERATION_Kaisa_SOF_HDMI_Trace.md`**;一键辅助脚本:**`scripts/collect-kaisa-sof-trace.sh`**(需 root)。
+见仓库 **`docs/linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md`**;一键辅助脚本:**`scripts/collect-kaisa-sof-trace.sh`**(需 root)。
diff --git a/audio_topology/collected/audio_topology_linux_jack-Kaisa_20260404_174115.txt b/audio_topology/collected/audio_topology_linux_jack-Kaisa_20260404_174115.txt
new file mode 100644
index 0000000000..dde529673f
--- /dev/null
+++ b/audio_topology/collected/audio_topology_linux_jack-Kaisa_20260404_174115.txt
@@ -0,0 +1,1090 @@
+# Chromebox 10 代 - Linux 音频硬件拓扑
+# 收集时间: 2026-04-04T17:41:15+08:00
+# 主机: jack-Kaisa
+
+
+========================================
+### 系统信息
+========================================
+
+# uname -a
+```
+Linux jack-Kaisa 6.14.0-27-generic #27~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 22 17:38:49 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
+```
+
+# 内核版本
+```
+6.14.0-27-generic
+```
+
+# /proc/version
+```
+Linux version 6.14.0-27-generic (buildd@lcy02-amd64-120) (x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0, GNU ld (GNU Binutils for Ubuntu) 2.42) #27~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 22 17:38:49 UTC 2
+```
+
+# ALSA 版本
+```
+alsactl version 1.2.9
+```
+
+
+========================================
+### PCI 音频相关设备
+========================================
+
+# lspci -nn | grep -i audio (含设备 ID,便于查驱动/quirks)
+```
+00:1f.3 Multimedia audio controller [0401]: Intel Corporation Comet Lake PCH-LP cAVS [8086:02c8]
+```
+
+# lspci | grep -i audio
+```
+00:1f.3 Multimedia audio controller: Intel Corporation Comet Lake PCH-LP cAVS
+```
+
+# lspci -v | grep -A 15 -i audio
+```
+00:1f.3 Multimedia audio controller: Intel Corporation Comet Lake PCH-LP cAVS
+ DeviceName: Multimedia audio controller
+ Subsystem: Intel Corporation Comet Lake PCH-LP cAVS
+ Flags: bus master, fast devsel, latency 64, IRQ 156, IOMMU group 13
+ Memory at cece0000 (64-bit, non-prefetchable) [size=16K]
+ Memory at ced00000 (64-bit, non-prefetchable) [size=1M]
+ Capabilities:
+ Kernel driver in use: sof-audio-pci-intel-cnl
+ Kernel modules: snd_hda_intel, snd_soc_avs, snd_sof_pci_intel_cnl
+
+00:1f.4 SMBus: Intel Corporation Comet Lake PCH-LP SMBus Host Controller
+ Subsystem: Intel Corporation Comet Lake PCH-LP SMBus Host Controller
+ Flags: medium devsel, IRQ 22, IOMMU group 13
+ Memory at cecd2000 (64-bit, non-prefetchable) [size=256]
+ I/O ports at efa0 [size=32]
+ Kernel driver in use: i801_smbus
+ Kernel modules: i2c_i801
+
+00:1f.5 Serial bus controller: Intel Corporation Comet Lake SPI (flash) Controller
+ Subsystem: Intel Corporation Comet Lake SPI (flash) Controller
+ Flags: bus master, fast devsel, latency 0, IOMMU group 13
+ Memory at fe010000 (32-bit, non-prefetchable) [size=4K]
+ Kernel driver in use: intel-spi
+```
+
+
+========================================
+### ALSA 设备列表
+========================================
+
+# aplay -l (播放设备)
+```
+**** PLAYBACK 硬體裝置清單 ****
+card 0: sofrt5682 [sof-rt5682], device 0: Port1 (*) []
+ 子设备: 1/1
+ 子设备 #0: subdevice #0
+card 0: sofrt5682 [sof-rt5682], device 2: HDMI1 (*) []
+ 子设备: 1/1
+ 子设备 #0: subdevice #0
+card 0: sofrt5682 [sof-rt5682], device 3: HDMI2 (*) []
+ 子设备: 1/1
+ 子设备 #0: subdevice #0
+card 0: sofrt5682 [sof-rt5682], device 4: HDMI3 (*) []
+ 子设备: 1/1
+ 子设备 #0: subdevice #0
+```
+
+# aplay -L (ALSA 设备描述)
+```
+null
+ Discard all samples (playback) or generate zero samples (capture)
+pipewire
+ PipeWire Sound Server
+default
+ Default ALSA Output (currently PipeWire Media Server)
+hw:CARD=sofrt5682,DEV=0
+ sof-rt5682,
+ Direct hardware device without any conversions
+hw:CARD=sofrt5682,DEV=2
+ sof-rt5682,
+ Direct hardware device without any conversions
+hw:CARD=sofrt5682,DEV=3
+ sof-rt5682,
+ Direct hardware device without any conversions
+hw:CARD=sofrt5682,DEV=4
+ sof-rt5682,
+ Direct hardware device without any conversions
+plughw:CARD=sofrt5682,DEV=0
+ sof-rt5682,
+ Hardware device with all software conversions
+plughw:CARD=sofrt5682,DEV=2
+ sof-rt5682,
+ Hardware device with all software conversions
+plughw:CARD=sofrt5682,DEV=3
+ sof-rt5682,
+ Hardware device with all software conversions
+plughw:CARD=sofrt5682,DEV=4
+ sof-rt5682,
+ Hardware device with all software conversions
+sysdefault:CARD=sofrt5682
+ sof-rt5682,
+ Default Audio Device
+dmix:CARD=sofrt5682,DEV=0
+ sof-rt5682,
+ Direct sample mixing device
+dmix:CARD=sofrt5682,DEV=2
+ sof-rt5682,
+ Direct sample mixing device
+dmix:CARD=sofrt5682,DEV=3
+ sof-rt5682,
+ Direct sample mixing device
+dmix:CARD=sofrt5682,DEV=4
+ sof-rt5682,
+ Direct sample mixing device
+```
+
+# arecord -l (录音设备)
+```
+**** CAPTURE 硬體裝置清單 ****
+card 0: sofrt5682 [sof-rt5682], device 0: Port1 (*) []
+ 子设备: 1/1
+ 子设备 #0: subdevice #0
+card 0: sofrt5682 [sof-rt5682], device 1: DMIC (*) []
+ 子设备: 1/1
+ 子设备 #0: subdevice #0
+card 0: sofrt5682 [sof-rt5682], device 8: DMIC16kHz (*) []
+ 子设备: 1/1
+ 子设备 #0: subdevice #0
+```
+
+# cat /proc/asound/cards
+```
+ 0 [sofrt5682 ]: sof-rt5682 - sof-rt5682
+ Google-Kaisa-rev4
+```
+
+# cat /proc/asound/pcm (PCM 设备明细)
+```
+00-00: Port1 (*) : : playback 1 : capture 1
+00-01: DMIC (*) : : capture 1
+00-02: HDMI1 (*) : : playback 1
+00-03: HDMI2 (*) : : playback 1
+00-04: HDMI3 (*) : : playback 1
+00-08: DMIC16kHz (*) : : capture 1
+```
+
+
+========================================
+### /proc/asound 目录结构
+========================================
+
+# ls -la /proc/asound
+```
+总计 0
+dr-xr-xr-x 13 root root 0 2月 13 09:00 .
+dr-xr-xr-x 400 root root 0 2月 13 09:00 ..
+dr-xr-xr-x 20 root root 0 2月 13 09:00 card0
+-r--r--r-- 1 root root 0 4月 4 17:34 cards
+-r--r--r-- 1 root root 0 4月 4 17:41 devices
+-r--r--r-- 1 root root 0 4月 4 17:41 hwdep
+-r--r--r-- 1 root root 0 4月 4 17:41 modules
+dr-xr-xr-x 4 root root 0 4月 4 17:41 oss
+-r--r--r-- 1 root root 0 4月 4 17:41 pcm
+dr-xr-xr-x 6 root root 0 4月 4 17:41 seq
+lrwxrwxrwx 1 root root 5 4月 4 17:41 sofrt5682 -> card0
+-r--r--r-- 1 root root 0 4月 4 17:41 timers
+-r--r--r-- 1 root root 0 4月 4 17:41 version
+```
+
+# card0 目录内容:
+```
+总计 0
+dr-xr-xr-x 20 root root 0 2月 13 09:00 .
+dr-xr-xr-x 13 root root 0 2月 13 09:00 ..
+-r--r--r-- 1 root root 0 4月 4 17:41 codec#2
+-rw-r--r-- 1 root root 0 4月 4 17:41 eld#2.0
+-rw-r--r-- 1 root root 0 4月 4 17:41 eld#2.1
+-rw-r--r-- 1 root root 0 4月 4 17:41 eld#2.2
+-rw-r--r-- 1 root root 0 4月 4 17:41 eld#2.3
+-rw-r--r-- 1 root root 0 4月 4 17:41 eld#2.4
+-rw-r--r-- 1 root root 0 4月 4 17:41 eld#2.5
+-rw-r--r-- 1 root root 0 4月 4 17:41 eld#2.6
+-rw-r--r-- 1 root root 0 4月 4 17:41 eld#2.7
+-rw-r--r-- 1 root root 0 4月 4 17:41 eld#2.8
+-r--r--r-- 1 root root 0 4月 4 17:41 id
+dr-xr-xr-x 4 root root 0 2月 13 09:00 pcm0c
+dr-xr-xr-x 4 root root 0 2月 13 09:00 pcm0p
+dr-xr-xr-x 4 root root 0 2月 13 09:00 pcm1c
+dr-xr-xr-x 4 root root 0 2月 13 09:00 pcm2p
+dr-xr-xr-x 4 root root 0 2月 13 09:00 pcm3p
+dr-xr-xr-x 4 root root 0 2月 13 09:00 pcm4p
+dr-xr-xr-x 4 root root 0 2月 13 09:00 pcm8c
+```
+
+========================================
+### HDA Codec 信息
+========================================
+
+# /proc/asound/card0/codec#2
+```
+Codec: Intel Kabylake HDMI
+Address: 2
+AFG Function Id: 0x1 (unsol 0)
+Vendor Id: 0x8086280b
+Subsystem Id: 0x80860101
+Revision Id: 0x100000
+No Modem Function Group found
+Default PCM:
+ rates [0x0]:
+ bits [0x0]:
+ formats [0x0]:
+Default Amp-In caps: N/A
+Default Amp-Out caps: N/A
+State of AFG node 0x01:
+ Power states: D0 D3 CLKSTOP EPSS
+ Power: setting=D0, actual=D0, Clock-stop-OK
+GPIO: io=0, o=0, i=0, unsolicited=0, wake=0
+Node 0x02 [Audio Output] wcaps 0x6611: 8-Channels Digital
+ Converter: stream=1, channel=0
+ Digital: Enabled KAE
+ Digital category: 0x0
+ IEC Coding Type: 0x0
+ PCM:
+ rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000
+ bits [0x1a]: 16 24 32
+ formats [0x5]: PCM AC3
+ Power states: D0 D3 EPSS
+ Power: setting=D0, actual=D0
+Node 0x03 [Audio Output] wcaps 0x6611: 8-Channels Digital
+ Converter: stream=0, channel=0
+ Digital: Enabled KAE
+ Digital category: 0x0
+ IEC Coding Type: 0x0
+ PCM:
+ rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000
+ bits [0x1a]: 16 24 32
+ formats [0x5]: PCM AC3
+ Power states: D0 D3 EPSS
+ Power: setting=D3, actual=D3
+Node 0x04 [Audio Output] wcaps 0x6611: 8-Channels Digital
+ Converter: stream=0, channel=0
+ Digital: Enabled KAE
+ Digital category: 0x0
+ IEC Coding Type: 0x0
+ PCM:
+ rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000
+ bits [0x1a]: 16 24 32
+ formats [0x5]: PCM AC3
+ Power states: D0 D3 EPSS
+ Power: setting=D3, actual=D3
+Node 0x05 [Pin Complex] wcaps 0x40778d: 8-Channels Digital Amp-Out CP
+ Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
+ Amp-Out vals: [0x00 0x00]
+ Pincap 0x0b000094: OUT Detect HBR HDMI DP
+ Pin Default 0x18560010: [Jack] Digital Out at Int HDMI
+ Conn = Digital, Color = Unknown
+ DefAssociation = 0x1, Sequence = 0x0
+ Pin-ctls: 0x00:
+ Unsolicited: tag=00, enabled=0
+ Power states: D0 D3 EPSS
+ Power: setting=D0, actual=D0
+ Devices: 0
+ Connection: 0
+Node 0x06 [Pin Complex] wcaps 0x40778d: 8-Channels Digital Amp-Out CP
+ Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
+ Amp-Out vals: [0x00 0x00]
+ Pincap 0x0b000094: OUT Detect HBR HDMI DP
+ Pin Default 0x18560010: [Jack] Digital Out at Int HDMI
+ Conn = Digital, Color = Unknown
+ DefAssociation = 0x1, Sequence = 0x0
+ Pin-ctls: 0x40: OUT
+ Unsolicited: tag=00, enabled=0
+ Power states: D0 D3 EPSS
+ Power: setting=D0, actual=D0
+ Devices: 3
+ *Dev 00: PD = 1, ELDV = 0, IA = 0, Connections [ 0x02* 0x03 0x04 ]
+ Dev 01: PD = 0, ELDV = 0, IA = 0, Connections [ 0x02* 0x03 0x04 ]
+ Dev 02: PD = 0, ELDV = 0, IA = 0, Connections [ 0x02* 0x03 0x04 ]
+ Connection: 3
+ 0x02* 0x03 0x04
+Node 0x07 [Pin Complex] wcaps 0x40778d: 8-Channels Digital Amp-Out CP
+ Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
+ Amp-Out vals: [0x00 0x00]
+ Pincap 0x0b000094: OUT Detect HBR HDMI DP
+ Pin Default 0x18560010: [Jack] Digital Out at Int HDMI
+ Conn = Digital, Color = Unknown
+ DefAssociation = 0x1, Sequence = 0x0
+ Pin-ctls: 0x00:
+ Unsolicited: tag=00, enabled=0
+ Power states: D0 D3 EPSS
+ Power: setting=D0, actual=D0
+ Devices: 0
+ Connection: 0
+Node 0x08 [Vendor Defined Widget] wcaps 0xf00000: Mono
+```
+
+========================================
+### HDMI ELD 内容
+========================================
+
+# /proc/asound/card0/eld#2.0
+```
+monitor_present 0
+eld_valid 0
+codec_pin_nid 0x5
+codec_dev_id 0x0
+codec_cvt_nid 0x0
+```
+# /proc/asound/card0/eld#2.1
+```
+monitor_present 0
+eld_valid 0
+codec_pin_nid 0x5
+codec_dev_id 0x1
+codec_cvt_nid 0x0
+```
+# /proc/asound/card0/eld#2.2
+```
+monitor_present 0
+eld_valid 0
+codec_pin_nid 0x5
+codec_dev_id 0x2
+codec_cvt_nid 0x0
+```
+# /proc/asound/card0/eld#2.3
+```
+monitor_present 1
+eld_valid 1
+codec_pin_nid 0x6
+codec_dev_id 0x0
+codec_cvt_nid 0x2
+monitor_name ASUS MG279
+connection_type DisplayPort
+eld_version [0x2] CEA-861D or below
+edid_version [0x3] CEA-861-B, C or D
+manufacture_id 0x6904
+product_id 0x27a7
+port_id 0x0
+support_hdcp 0
+support_ai 0
+audio_sync_delay 0
+speakers [0x1] FL/FR
+sad_count 1
+sad0_coding_type [0x1] LPCM
+sad0_channels 2
+sad0_rates [0x4e0] 32000 44100 48000 96000
+sad0_bits [0xe0000] 16 20 24
+```
+# /proc/asound/card0/eld#2.4
+```
+monitor_present 0
+eld_valid 0
+codec_pin_nid 0x6
+codec_dev_id 0x1
+codec_cvt_nid 0x0
+```
+# /proc/asound/card0/eld#2.5
+```
+monitor_present 0
+eld_valid 0
+codec_pin_nid 0x6
+codec_dev_id 0x2
+codec_cvt_nid 0x0
+```
+# /proc/asound/card0/eld#2.6
+```
+monitor_present 0
+eld_valid 0
+codec_pin_nid 0x7
+codec_dev_id 0x0
+codec_cvt_nid 0x0
+```
+# /proc/asound/card0/eld#2.7
+```
+monitor_present 0
+eld_valid 0
+codec_pin_nid 0x7
+codec_dev_id 0x1
+codec_cvt_nid 0x0
+```
+# /proc/asound/card0/eld#2.8
+```
+monitor_present 0
+eld_valid 0
+codec_pin_nid 0x7
+codec_dev_id 0x2
+codec_cvt_nid 0x0
+```
+
+========================================
+### /sys/class/sound 设备
+========================================
+
+# ls -la /sys/class/sound
+```
+总计 0
+drwxr-xr-x 2 root root 0 4月 4 17:41 .
+drwxr-xr-x 87 root root 0 2月 13 09:00 ..
+lrwxrwxrwx 1 root root 0 2月 13 09:00 card0 -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0
+lrwxrwxrwx 1 root root 0 2月 13 09:00 controlC0 -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0/controlC0
+lrwxrwxrwx 1 root root 0 2月 13 09:00 ctl-led -> ../../devices/virtual/sound/ctl-led
+lrwxrwxrwx 1 root root 0 2月 13 09:00 hwC0D2 -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0/hwC0D2
+lrwxrwxrwx 1 root root 0 2月 13 09:00 pcmC0D0c -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0/pcmC0D0c
+lrwxrwxrwx 1 root root 0 2月 13 09:00 pcmC0D0p -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0/pcmC0D0p
+lrwxrwxrwx 1 root root 0 2月 13 09:00 pcmC0D1c -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0/pcmC0D1c
+lrwxrwxrwx 1 root root 0 2月 13 09:00 pcmC0D2p -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0/pcmC0D2p
+lrwxrwxrwx 1 root root 0 2月 13 09:00 pcmC0D3p -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0/pcmC0D3p
+lrwxrwxrwx 1 root root 0 2月 13 09:00 pcmC0D4p -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0/pcmC0D4p
+lrwxrwxrwx 1 root root 0 2月 13 09:00 pcmC0D8c -> ../../devices/pci0000:00/0000:00:1f.3/cml_rt5682_def/sound/card0/pcmC0D8c
+lrwxrwxrwx 1 root root 0 2月 13 09:00 seq -> ../../devices/virtual/sound/seq
+lrwxrwxrwx 1 root root 0 2月 13 09:00 timer -> ../../devices/virtual/sound/timer
+```
+
+# card0 设备属性:
+```
+id: sofrt5682
+number: 0
+```
+
+========================================
+### 内核日志 (dmesg) 音频相关
+========================================
+
+# dmesg | grep -iE 'snd|hda|audio|codec|hdmi'
+# 提示: 若此处显示「需要 root」,请用 sudo 重新运行本脚本以获取完整日志
+```
+(需要 root 或 dmesg 不可用)
+```
+
+
+========================================
+### SOF / HDMI / IPC 基线 (dmesg)
+========================================
+
+# dmesg | grep -iE 'sof|STREAM_PCM|ipc failed|ipc tx|pcm[0-9]|ASoC|iDisp|hdmi' | tail -120
+# 用于对照 STREAM_PCM_PARAMS / ipc tx error 等;建议 sudo 运行本脚本以读全量 dmesg
+```
+```
+
+
+========================================
+### HDMI 试听命令提示(人工执行)
+========================================
+
+# 在 aplay -L 中查找 HDMI / DisplayPort 设备后,对每个候选 plughw 试播(Ctrl+C 结束):
+# speaker-test -D plughw:卡号,设备号 -c 2 -l 1
+# 若 dmesg 已出现 STREAM_PCM_PARAMS / ipc tx error,用户态换 sink 通常无法单独修复。
+
+
+========================================
+### journalctl 内核日志 (SOF/音频,可选补充)
+========================================
+
+# journalctl -b -k --no-pager | grep -iE 'sof|snd|hda|audio|hdmi' | tail -80
+```
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x60010000 (msg/reply size: 108/20): -5
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: HW params ipc failed for stream 1
+2月 13 09:00:37 jack-Kaisa kernel: sof-audio-pci-intel-cnl 0000:00:1f.3: ASoC: error at snd_soc_pcm_component_hw_params on 0000:00:1f.3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at __soc_pcm_hw_params on HDMI3: -5
+2月 13 09:00:37 jack-Kaisa kernel: HDMI3: ASoC: error at dpcm_fe_dai_hw_params on HDMI3: -5
+```
+
+========================================
+### ACPI NHLT 表
+========================================
+
+# ls /sys/firmware/acpi/tables/ | grep -i nhlt
+```
+(未找到 NHLT 表,Coreboot 下常见)
+```
+
+========================================
+### sof-logger (可选)
+========================================
+
+(sof-logger 未安装,可从 thesofproject/sof-bin 或发行版 firmware-sof 相关包安装)
+
+========================================
+### 音频服务 (PulseAudio / PipeWire)
+========================================
+
+# 提示: sudo 下会以原用户身份调用 pactl/pw-cli,需设置 XDG_RUNTIME_DIR 以连接用户会话
+# pw-cli list-objects Device
+```
+ id 42, type PipeWire:Interface:Device/3
+ object.serial = "42"
+ factory.id = "14"
+ client.id = "35"
+ device.api = "alsa"
+ device.description = "Comet Lake PCH-LP cAVS"
+ device.name = "alsa_card.pci-0000_00_1f.3-platform-cml_rt5682_def"
+ device.nick = "sof-rt5682"
+ media.class = "Audio/Device"
+```
+
+# wpctl status (WirePlumber)
+```
+PipeWire 'pipewire-0' [1.0.5, jack@jack-Kaisa, cookie:294410970]
+ └─ Clients:
+ 32. pipewire [1.0.5, jack@jack-Kaisa, pid:1903]
+ 34. WirePlumber [1.0.5, jack@jack-Kaisa, pid:1902]
+ 35. WirePlumber [export] [1.0.5, jack@jack-Kaisa, pid:1902]
+ 50. gnome-shell [1.0.5, jack@jack-Kaisa, pid:2078]
+ 51. GNOME Shell Volume Control [1.0.5, jack@jack-Kaisa, pid:2078]
+ 52. GNOME Volume Control Media Keys [1.0.5, jack@jack-Kaisa, pid:2441]
+ 53. xdg-desktop-portal [1.0.5, jack@jack-Kaisa, pid:2829]
+ 54. Mutter [1.0.5, jack@jack-Kaisa, pid:2078]
+ 55. Firefox [1.0.5, jack@jack-Kaisa, pid:10124]
+ 57. cursor [1.0.5, jack@jack-Kaisa, pid:13578]
+ 58. wpctl [1.0.5, jack@jack-Kaisa, pid:19310]
+ 59. Firefox [1.0.5, jack@jack-Kaisa, pid:10124]
+ 61. speech-dispatcher-dummy [1.0.5, jack@jack-Kaisa, pid:5714]
+
+Audio
+ ├─ Devices:
+ │ 42. Comet Lake PCH-LP cAVS [alsa]
+ │
+ ├─ Sinks:
+ │ * 47. Comet Lake PCH-LP cAVS Stereo [vol: 0.40]
+ │
+ ├─ Sink endpoints:
+ │
+ ├─ Sources:
+ │ 48. Comet Lake PCH-LP cAVS Stereo [vol: 1.00]
+ │
+ ├─ Source endpoints:
+ │
+ └─ Streams:
+ 62. speech-dispatcher-dummy
+ 65. output_FR > Stereo:playback_FR [init]
+ 66. output_FL > Stereo:playback_FL [init]
+
+Video
+ ├─ Devices:
+ │
+ ├─ Sinks:
+ │
+ ├─ Sink endpoints:
+ │
+ ├─ Sources:
+ │
+ ├─ Source endpoints:
+ │
+ └─ Streams:
+
+Settings
+ └─ Default Configured Node Names:
+```
+
+
+========================================
+### 音频相关内核模块
+========================================
+
+# lsmod | grep -iE 'snd|hda|sound'
+```
+snd_seq_dummy 12288 0
+snd_hrtimer 12288 1
+snd_ctl_led 24576 0
+snd_soc_sof_rt5682 24576 1
+snd_soc_rt5682s 102400 1 snd_soc_sof_rt5682
+snd_soc_intel_sof_realtek_common 28672 1 snd_soc_sof_rt5682
+snd_soc_intel_sof_board_helpers 28672 1 snd_soc_sof_rt5682
+snd_soc_intel_hda_dsp_common 16384 1 snd_soc_intel_sof_board_helpers
+snd_soc_intel_sof_maxim_common 24576 1 snd_soc_sof_rt5682
+snd_soc_rt5645 184320 1 snd_soc_sof_rt5682
+snd_sof_probes 20480 0
+snd_soc_dmic 12288 1
+snd_sof_pci_intel_cnl 20480 0
+snd_sof_intel_hda_generic 36864 1 snd_sof_pci_intel_cnl
+soundwire_intel 77824 1 snd_sof_intel_hda_generic
+soundwire_cadence 45056 1 soundwire_intel
+snd_sof_intel_hda_common 188416 2 snd_sof_intel_hda_generic,snd_sof_pci_intel_cnl
+snd_soc_hdac_hda 24576 1 snd_sof_intel_hda_common
+snd_sof_intel_hda_mlink 45056 3 soundwire_intel,snd_sof_intel_hda_common,snd_sof_intel_hda_generic
+snd_sof_intel_hda 24576 2 snd_sof_intel_hda_common,snd_sof_intel_hda_generic
+snd_hda_codec_hdmi 98304 1
+snd_sof_pci 24576 2 snd_sof_intel_hda_generic,snd_sof_pci_intel_cnl
+snd_sof_xtensa_dsp 12288 1 snd_sof_intel_hda_generic
+snd_sof 393216 9 snd_soc_sof_rt5682,snd_sof_pci,snd_sof_intel_hda_common,snd_soc_intel_sof_realtek_common,snd_sof_intel_hda_generic,snd_soc_intel_sof_maxim_common,snd_sof_probes,snd_sof_intel_hda,snd_sof_pci_intel_cnl
+snd_sof_utils 16384 1 snd_sof
+snd_soc_acpi_intel_match 131072 3 snd_soc_intel_sof_board_helpers,snd_sof_intel_hda_generic,snd_sof_pci_intel_cnl
+snd_soc_acpi_intel_sdca_quirks 12288 1 snd_soc_acpi_intel_match
+soundwire_generic_allocation 24576 1 soundwire_intel
+snd_soc_acpi 16384 2 snd_soc_acpi_intel_match,snd_sof_intel_hda_generic
+soundwire_bus 126976 3 soundwire_intel,soundwire_generic_allocation,soundwire_cadence
+snd_soc_sdca 12288 2 snd_soc_acpi_intel_sdca_quirks,soundwire_bus
+snd_soc_avs 200704 0
+snd_soc_hda_codec 24576 1 snd_soc_avs
+snd_hda_ext_core 32768 6 snd_soc_avs,snd_soc_hda_codec,snd_sof_intel_hda_common,snd_soc_hdac_hda,snd_sof_intel_hda_mlink,snd_sof_intel_hda
+snd_soc_rt5682_i2c 16384 1
+snd_hda_intel 61440 0
+snd_soc_rt5682 98304 2 snd_soc_sof_rt5682,snd_soc_rt5682_i2c
+snd_intel_dspcfg 45056 5 snd_soc_avs,snd_hda_intel,snd_sof,snd_sof_intel_hda_common,snd_sof_intel_hda_generic
+snd_soc_rl6231 16384 2 snd_soc_rt5682,snd_soc_rt5645
+snd_intel_sdw_acpi 16384 2 snd_intel_dspcfg,snd_sof_intel_hda_generic
+snd_soc_core 425984 16 snd_soc_avs,snd_soc_hda_codec,snd_soc_sof_rt5682,snd_soc_rt5682,soundwire_intel,snd_sof,snd_soc_intel_sof_board_helpers,snd_sof_intel_hda_common,snd_soc_intel_sof_realtek_common,snd_soc_hdac_hda,snd_soc_intel_sof_maxim_common,snd_soc_rt5645,snd_sof_probes,snd_soc_dmic,snd_soc_rt5682s,snd_soc_rt5682_i2c
+snd_hda_codec 204800 7 snd_soc_avs,snd_hda_codec_hdmi,snd_soc_hda_codec,snd_hda_intel,snd_soc_intel_hda_dsp_common,snd_soc_hdac_hda,snd_sof_intel_hda
+snd_compress 36864 3 snd_soc_avs,snd_soc_core,snd_sof_probes
+snd_hda_core 147456 10 snd_soc_avs,snd_hda_codec_hdmi,snd_soc_hda_codec,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_soc_intel_hda_dsp_common,snd_sof_intel_hda_common,snd_soc_hdac_hda,snd_sof_intel_hda
+ac97_bus 12288 1 snd_soc_core
+snd_hwdep 20480 1 snd_hda_codec
+snd_pcm_dmaengine 16384 1 snd_soc_core
+snd_pcm 192512 19 snd_soc_avs,snd_hda_codec_hdmi,snd_hda_intel,snd_soc_sof_rt5682,snd_soc_rt5682,snd_hda_codec,soundwire_intel,snd_sof,snd_sof_intel_hda_common,snd_compress,snd_soc_intel_sof_realtek_common,snd_sof_intel_hda_generic,snd_soc_core,snd_sof_utils,snd_soc_intel_sof_maxim_common,snd_soc_rt5645,snd_hda_core,snd_soc_rt5682s,snd_pcm_dmaengine
+snd_seq_midi 24576 0
+snd_seq_midi_event 16384 1 snd_seq_midi
+snd_rawmidi 57344 1 snd_seq_midi
+snd_seq 122880 9 snd_seq_midi,snd_seq_midi_event,snd_seq_dummy
+snd_seq_device 16384 3 snd_seq,snd_seq_midi,snd_rawmidi
+snd_timer 53248 3 snd_seq,snd_hrtimer,snd_pcm
+snd 143360 18 snd_ctl_led,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_soc_sof_rt5682,snd_hda_codec,snd_sof,snd_timer,snd_compress,snd_soc_core,snd_pcm,snd_rawmidi
+soundcore 16384 2 snd_ctl_led,snd
+```
+
+
+========================================
+### ALSA 混音器状态
+========================================
+
+# amixer -c 0 contents (或 -c default)
+```
+numid=10,iface=CARD,name='HDMI/DP,pcm=2 Jack'
+ ; type=BOOLEAN,access=r-------,values=1
+ : values=on
+numid=16,iface=CARD,name='HDMI/DP,pcm=3 Jack'
+ ; type=BOOLEAN,access=r-------,values=1
+ : values=off
+numid=22,iface=CARD,name='HDMI/DP,pcm=4 Jack'
+ ; type=BOOLEAN,access=r-------,values=1
+ : values=off
+numid=6,iface=CARD,name='Headphone Jack'
+ ; type=BOOLEAN,access=r-------,values=1
+ : values=on
+numid=7,iface=CARD,name='Headset Mic Jack'
+ ; type=BOOLEAN,access=r-------,values=1
+ : values=off
+numid=8,iface=MIXER,name='Headphone Jack Switch'
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=on
+numid=58,iface=MIXER,name='ADCDAT Mux'
+ ; type=ENUMERATED,access=rw------,values=1,items=2
+ ; Item #0 'ADCDAT1'
+ ; Item #1 'ADCDAT2'
+ : values=0
+numid=11,iface=MIXER,name='IEC958 Playback Con Mask'
+ ; type=IEC958,access=r-------,values=1
+ : values=[AES0=0x0f AES1=0xff AES2=0x00 AES3=0x00]
+numid=17,iface=MIXER,name='IEC958 Playback Con Mask',index=1
+ ; type=IEC958,access=r-------,values=1
+ : values=[AES0=0x0f AES1=0xff AES2=0x00 AES3=0x00]
+numid=23,iface=MIXER,name='IEC958 Playback Con Mask',index=2
+ ; type=IEC958,access=r-------,values=1
+ : values=[AES0=0x0f AES1=0xff AES2=0x00 AES3=0x00]
+numid=12,iface=MIXER,name='IEC958 Playback Pro Mask'
+ ; type=IEC958,access=r-------,values=1
+ : values=[AES0=0x0f AES1=0x00 AES2=0x00 AES3=0x00]
+numid=18,iface=MIXER,name='IEC958 Playback Pro Mask',index=1
+ ; type=IEC958,access=r-------,values=1
+ : values=[AES0=0x0f AES1=0x00 AES2=0x00 AES3=0x00]
+numid=24,iface=MIXER,name='IEC958 Playback Pro Mask',index=2
+ ; type=IEC958,access=r-------,values=1
+ : values=[AES0=0x0f AES1=0x00 AES2=0x00 AES3=0x00]
+numid=13,iface=MIXER,name='IEC958 Playback Default'
+ ; type=IEC958,access=rw------,values=1
+ : values=[AES0=0x04 AES1=0x00 AES2=0x00 AES3=0x00]
+numid=19,iface=MIXER,name='IEC958 Playback Default',index=1
+ ; type=IEC958,access=rw------,values=1
+ : values=[AES0=0x04 AES1=0x00 AES2=0x00 AES3=0x00]
+numid=25,iface=MIXER,name='IEC958 Playback Default',index=2
+ ; type=IEC958,access=rw------,values=1
+ : values=[AES0=0x04 AES1=0x00 AES2=0x00 AES3=0x00]
+numid=14,iface=MIXER,name='IEC958 Playback Switch'
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=off
+numid=20,iface=MIXER,name='IEC958 Playback Switch',index=1
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=on
+numid=26,iface=MIXER,name='IEC958 Playback Switch',index=2
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=on
+numid=2,iface=MIXER,name='CBJ Boost Volume'
+ ; type=INTEGER,access=rw---R--,values=1,min=0,max=8,step=0
+ : values=0
+ | dBrange-
+ rangemin=0,,rangemax=0
+ | dBscale-min=0.00dB,step=0.00dB,mute=0
+ rangemin=1,,rangemax=1
+ | dBscale-min=20.00dB,step=0.00dB,mute=0
+ rangemin=2,,rangemax=2
+ | dBscale-min=24.00dB,step=0.00dB,mute=0
+ rangemin=3,,rangemax=5
+ | dBscale-min=30.00dB,step=5.00dB,mute=0
+ rangemin=6,,rangemax=6
+ | dBscale-min=44.00dB,step=0.00dB,mute=0
+ rangemin=7,,rangemax=7
+ | dBscale-min=50.00dB,step=0.00dB,mute=0
+ rangemin=8,,rangemax=8
+ | dBscale-min=52.00dB,step=0.00dB,mute=0
+
+numid=59,iface=MIXER,name='DAC L Mux'
+ ; type=ENUMERATED,access=rw------,values=1,items=2
+ ; Item #0 'IF1'
+ ; Item #1 'SOUND'
+ : values=0
+numid=65,iface=MIXER,name='DAC L1 Source'
+ ; type=ENUMERATED,access=rw------,values=1,items=2
+ ; Item #0 'Stereo1 DAC Mixer'
+ ; Item #1 'DAC1'
+ : values=1
+numid=60,iface=MIXER,name='DAC R Mux'
+ ; type=ENUMERATED,access=rw------,values=1,items=2
+ ; Item #0 'IF1'
+ ; Item #1 'SOUND'
+ : values=0
+numid=66,iface=MIXER,name='DAC R1 Source'
+ ; type=ENUMERATED,access=rw------,values=1,items=2
+ ; Item #0 'Stereo1 DAC Mixer'
+ ; Item #1 'DAC1'
+ : values=1
+numid=62,iface=MIXER,name='DAC1 MIXL DAC1 Switch'
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=on
+numid=61,iface=MIXER,name='DAC1 MIXL Stereo ADC Switch'
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=off
+numid=64,iface=MIXER,name='DAC1 MIXR DAC1 Switch'
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=on
+numid=63,iface=MIXER,name='DAC1 MIXR Stereo ADC Switch'
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=off
+numid=1,iface=MIXER,name='DAC1 Playback Volume'
+ ; type=INTEGER,access=rw---R--,values=2,min=0,max=87,step=0
+ : values=87,87
+ | dBscale-min=-65.25dB,step=0.75dB,mute=0
+numid=34,iface=MIXER,name='Dmic0 Capture Switch'
+ ; type=BOOLEAN,access=rw------,values=2
+ : values=off,on
+numid=33,iface=MIXER,name='Dmic0 Capture Volume'
+ ; type=INTEGER,access=rw---R--,values=2,min=0,max=70,step=0
+ : values=0,50
+ | dBscale-min=-50.00dB,step=1.00dB,mute=1
+numid=39,iface=MIXER,name='Dmic1 2nd Capture Volume'
+ ; type=INTEGER,access=rw---R--,values=2,min=0,max=70,step=0
+ : values=50,50
+ | dBscale-min=-50.00dB,step=1.00dB,mute=1
+numid=35,iface=MIXER,name='EQIIR3.0 eqiir_coef_3'
+ ; type=BYTES,access=-----RW-,values=1024
+ ; ASoC TLV Byte control, skipping bytes dump
+numid=40,iface=MIXER,name='EQIIR8.0 eqiir_coef_8'
+ ; type=BYTES,access=-----RW-,values=1024
+ ; ASoC TLV Byte control, skipping bytes dump
+numid=73,iface=MIXER,name='HPO Signal Demux'
+ ; type=ENUMERATED,access=rw------,values=1,items=2
+ ; Item #0 'Legacy'
+ ; Item #1 'OneBit'
+ : values=1
+numid=71,iface=MIXER,name='HPOL Playback Switch'
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=off
+numid=72,iface=MIXER,name='HPOR Playback Switch'
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=off
+numid=9,iface=MIXER,name='Headset Mic Switch'
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=off
+numid=53,iface=MIXER,name='IF1 01 ADC Swap Mux'
+ ; type=ENUMERATED,access=rw------,values=1,items=4
+ ; Item #0 'L/R'
+ ; Item #1 'R/L'
+ ; Item #2 'L/L'
+ ; Item #3 'R/R'
+ : values=0
+numid=54,iface=MIXER,name='IF1 23 ADC Swap Mux'
+ ; type=ENUMERATED,access=rw------,values=1,items=4
+ ; Item #0 'L/R'
+ ; Item #1 'R/L'
+ ; Item #2 'L/L'
+ ; Item #3 'R/R'
+ : values=0
+numid=55,iface=MIXER,name='IF1 45 ADC Swap Mux'
+ ; type=ENUMERATED,access=rw------,values=1,items=4
+ ; Item #0 'L/R'
+ ; Item #1 'R/L'
+ ; Item #2 'L/L'
+ ; Item #3 'R/R'
+ : values=0
+numid=56,iface=MIXER,name='IF1 67 ADC Swap Mux'
+ ; type=ENUMERATED,access=rw------,values=1,items=4
+ ; Item #0 'L/R'
+ ; Item #1 'R/L'
+ ; Item #2 'L/L'
+ ; Item #3 'R/R'
+ : values=0
+numid=48,iface=MIXER,name='IF1_ADC Mux'
+ ; type=ENUMERATED,access=rw------,values=1,items=4
+ ; Item #0 'Slot 0'
+ ; Item #1 'Slot 2'
+ ; Item #2 'Slot 4'
+ ; Item #3 'Slot 6'
+ : values=0
+numid=57,iface=MIXER,name='IF2 ADC Swap Mux'
+ ; type=ENUMERATED,access=rw------,values=1,items=4
+ ; Item #0 'L/R'
+ ; Item #1 'R/L'
+ ; Item #2 'L/L'
+ ; Item #3 'R/R'
+ : values=0
+numid=31,iface=MIXER,name='PGA1.0 1 Master Playback Volume'
+ ; type=INTEGER,access=rw---R--,values=2,min=0,max=32,step=0
+ : values=32,32
+ | dBscale-min=-64.00dB,step=2.00dB,mute=1
+numid=32,iface=MIXER,name='PGA2.0 2 Master Capture Volume'
+ ; type=INTEGER,access=rw---R--,values=2,min=0,max=80,step=0
+ : values=50,50
+ | dBscale-min=-50.00dB,step=1.00dB,mute=1
+numid=36,iface=MIXER,name='PGA4.0 4 Master Playback Volume'
+ ; type=INTEGER,access=rw---R--,values=2,min=0,max=32,step=0
+ : values=32,32
+ | dBscale-min=-64.00dB,step=2.00dB,mute=1
+numid=37,iface=MIXER,name='PGA5.0 5 Master Playback Volume'
+ ; type=INTEGER,access=rw---R--,values=2,min=0,max=32,step=0
+ : values=32,32
+ | dBscale-min=-64.00dB,step=2.00dB,mute=1
+numid=38,iface=MIXER,name='PGA6.0 6 Master Playback Volume'
+ ; type=INTEGER,access=rw---R--,values=2,min=0,max=32,step=0
+ : values=32,32
+ | dBscale-min=-64.00dB,step=2.00dB,mute=1
+numid=41,iface=MIXER,name='RECMIX1L CBJ Switch'
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=off
+numid=5,iface=MIXER,name='STO1 ADC Boost Gain Volume'
+ ; type=INTEGER,access=rw---R--,values=2,min=0,max=3,step=0
+ : values=0,0
+ | dBscale-min=0.00dB,step=12.00dB,mute=0
+numid=3,iface=MIXER,name='STO1 ADC Capture Switch'
+ ; type=BOOLEAN,access=rw------,values=2
+ : values=off,off
+numid=4,iface=MIXER,name='STO1 ADC Capture Volume'
+ ; type=INTEGER,access=rw---R--,values=2,min=0,max=63,step=0
+ : values=23,23
+ | dBscale-min=-17.25dB,step=0.75dB,mute=0
+numid=46,iface=MIXER,name='Stereo1 ADC L Mux'
+ ; type=ENUMERATED,access=rw------,values=1,items=2
+ ; Item #0 'ADC1 L'
+ ; Item #1 'ADC1 R'
+ : values=0
+numid=42,iface=MIXER,name='Stereo1 ADC L1 Mux'
+ ; type=ENUMERATED,access=rw------,values=1,items=2
+ ; Item #0 'DAC MIX'
+ ; Item #1 'ADC'
+ : values=0
+numid=44,iface=MIXER,name='Stereo1 ADC L2 Mux'
+ ; type=ENUMERATED,access=rw------,values=1,items=2
+ ; Item #0 'DAC MIX'
+ ; Item #1 'DMIC'
+ : values=0
+numid=49,iface=MIXER,name='Stereo1 ADC MIXL ADC1 Switch'
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=off
+numid=50,iface=MIXER,name='Stereo1 ADC MIXL ADC2 Switch'
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=off
+numid=51,iface=MIXER,name='Stereo1 ADC MIXR ADC1 Switch'
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=off
+numid=52,iface=MIXER,name='Stereo1 ADC MIXR ADC2 Switch'
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=off
+numid=47,iface=MIXER,name='Stereo1 ADC R Mux'
+ ; type=ENUMERATED,access=rw------,values=1,items=2
+ ; Item #0 'ADC1 L'
+ ; Item #1 'ADC1 R'
+ : values=1
+numid=43,iface=MIXER,name='Stereo1 ADC R1 Mux'
+ ; type=ENUMERATED,access=rw------,values=1,items=2
+ ; Item #0 'DAC MIX'
+ ; Item #1 'ADC'
+ : values=0
+numid=45,iface=MIXER,name='Stereo1 ADC R2 Mux'
+ ; type=ENUMERATED,access=rw------,values=1,items=2
+ ; Item #0 'DAC MIX'
+ ; Item #1 'DMIC'
+ : values=0
+numid=67,iface=MIXER,name='Stereo1 DAC MIXL DAC L1 Switch'
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=off
+numid=68,iface=MIXER,name='Stereo1 DAC MIXL DAC R1 Switch'
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=off
+numid=69,iface=MIXER,name='Stereo1 DAC MIXR DAC L1 Switch'
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=off
+numid=70,iface=MIXER,name='Stereo1 DAC MIXR DAC R1 Switch'
+ ; type=BOOLEAN,access=rw------,values=1
+ : values=off
+numid=15,iface=PCM,name='ELD',device=2
+ ; type=BYTES,access=r--v----,values=36
+ : values=0x10,0x00,0x08,0x00,0x6a,0x14,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x69,0xa7,0x27,0x41,0x53,0x55,0x53,0x20,0x4d,0x47,0x32,0x37,0x39,0x09,0x17,0x07,0x00,0x00,0x00
+numid=28,iface=PCM,name='Playback Channel Map',device=2
+ ; type=INTEGER,access=rw-v-R--,values=8,min=0,max=36,step=0
+ : values=0,0,0,0,0,0,0,0
+ | container
+ | chmap-variable=FL,FR
+numid=21,iface=PCM,name='ELD',device=3
+ ; type=BYTES,access=r--v----,values=0
+ : values=
+numid=29,iface=PCM,name='Playback Channel Map',device=3
+ ; type=INTEGER,access=rw-v-R--,values=8,min=0,max=36,step=0
+ : values=0,0,0,0,0,0,0,0
+ | container
+ | chmap-variable=FL,FR
+numid=27,iface=PCM,name='ELD',device=4
+ ; type=BYTES,access=r--v----,values=0
+ : values=
+numid=30,iface=PCM,name='Playback Channel Map',device=4
+ ; type=INTEGER,access=rw-v-R--,values=8,min=0,max=36,step=0
+ : values=0,0,0,0,0,0,0,0
+ | container
+ | chmap-variable=FL,FR
+```
+
+
+========================================
+### SOF 固件 (Intel Sound Open Firmware)
+========================================
+
+# ls -la /lib/firmware/intel/ (sof 相关)
+```
+drwxr-xr-x 5 root root 4096 2月 13 09:05 avs
+lrwxrwxrwx 1 root root 26 7月 16 2025 dsp_fw_bxtn.bin.zst -> avs/apl/dsp_basefw.bin.zst
+lrwxrwxrwx 1 root root 26 7月 16 2025 dsp_fw_cnl.bin.zst -> avs/cnl/dsp_basefw.bin.zst
+lrwxrwxrwx 1 root root 26 7月 16 2025 dsp_fw_glk.bin.zst -> avs/apl/dsp_basefw.bin.zst
+lrwxrwxrwx 1 root root 26 7月 16 2025 dsp_fw_kbl.bin.zst -> avs/skl/dsp_basefw.bin.zst
+lrwxrwxrwx 1 root root 26 7月 16 2025 dsp_fw_release.bin.zst -> avs/skl/dsp_basefw.bin.zst
+drwxr-xr-x 4 root root 4096 2月 13 09:05 sof
+lrwxrwxrwx 1 root root 13 7月 11 2025 sof-ace-tplg -> sof-ipc4-tplg
+drwxr-xr-x 14 root root 4096 2月 13 09:05 sof-ipc4
+drwxr-xr-x 3 root root 4096 2月 13 09:05 sof-ipc4-lib
+drwxr-xr-x 2 root root 12288 2月 13 09:05 sof-ipc4-tplg
+drwxr-xr-x 2 root root 28672 2月 13 09:05 sof-tplg
+```
+# SOF 拓扑: /lib/firmware/intel/sof
+```
+```
+# SOF 拓扑: /lib/firmware/intel/sof-tplg
+```
+/lib/firmware/intel/sof-tplg/sof-icl-dmic-4ch.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-adl-max98360a-rt5682-4ch.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-adl-es8336-ssp0.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-apl-es8336-dmic4ch-ssp2.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-imx8-nocodec-sai.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-tgl-es8336-dmic4ch-ssp2.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-cml-demux-rt5682.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-apl-da7219.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-icl-es8336-dmic4ch-ssp1.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-icl-es8336-ssp1.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-imx8-eq-iir-wm8960.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-adl-rt1316-l12-rt714-l0.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-tgl-rt711-l0-rt1316-l1-mono-rt714-l3.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-tgl-max98373-rt5682.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-apl-pcm512x-master-44100.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-adl-rt1015-nau8825.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-cml-rt711-rt1308-mono-rt715.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-adl-rt711-l0-rt1308-l12-rt715-l3.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-cml-es8336-dmic2ch-ssp0.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-adl-max98357a-rt5682-2way.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-tgl-es8336-dmic4ch-ssp0.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-apl-es8336-ssp5.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-cht-nocodec.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-adl-rt1019-rt5682.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-cml-da7219-max98357a.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-cml-demux-rt5682-max98357a.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-byt-cx2072x-ssp0.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-tgl-es8336-ssp2.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-byt-es8316.tplg.zst
+/lib/firmware/intel/sof-tplg/sof-tgl-nocodec.tplg.zst
+```
+
+========================================
+### 机器识别 (主板/机型)
+========================================
+
+# DMI 主板信息:
+```
+board_name: Kaisa
+product_name: Kaisa
+sys_vendor: Google
+```
diff --git a/docs/INDEX.md b/docs/INDEX.md
new file mode 100644
index 0000000000..21a8f0b66e
--- /dev/null
+++ b/docs/INDEX.md
@@ -0,0 +1,66 @@
+# 文档索引
+
+本仓库 **仅根目录 [README.md](../README.md) 为 README**;本文件为 `docs/` 下按主题分类的**详细索引**(非 README)。
+
+**优先阅读(Linux HDMI 无声)**:[linux-hdmi/Linux_HDMI_Audio_Roadmap.md](linux-hdmi/Linux_HDMI_Audio_Roadmap.md)
+
+---
+
+## Linux HDMI(核心)
+
+| 文档 | 说明 |
+| ---- | ---- |
+| [linux-hdmi/Linux_HDMI_Audio_Roadmap.md](linux-hdmi/Linux_HDMI_Audio_Roadmap.md) | **主路线图**:分阶段行动、已排除项、成功标准 |
+| [linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md](linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md) | 现象、已排除方向、Mainline 5.15 误区、推荐路径 |
+| [linux-hdmi/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md](linux-hdmi/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md) | ChromeOS 与 Ubuntu 6.17 的 iDisp/HDMI API 对照 |
+| [linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md](linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md) | 提交 SOF/ALSA 上游所需材料与邮件模板 |
+| [linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md](linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md) | 深度 trace:`sof_debug`、带 IPC 载荷的 dmesg |
+| [meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md](meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md) | `sound/soc` 自动对照摘要(由脚本生成) |
+
+## 内核构建、补丁与安装
+
+| 文档 | 说明 |
+| ---- | ---- |
+| [kernel-src/README.md](../kernel-src/README.md) | 拉取 HWE 6.17 源码、`apt source`、与 `debian/rules` 注意 |
+| [kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md](kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md) | 安装自编 deb、`linux-image-unsigned`、模块包、Secure Boot |
+| [kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md](kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md) | ChromiumOS 5.15 树 unshallow、`git log`、导出关键文件 diff |
+| [../patches/ubuntu-hwe-6.17/README.md](../patches/ubuntu-hwe-6.17/README.md) | 预置 0001 补丁、如何 `PATCH=...` 应用 |
+| [../patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt](../patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt) | 补丁设计备忘与 smoke 对象文件 |
+| [../patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md](../patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md) | `STREAM_PCM_PARAMS` 链路的 Chrome 与 6.17 对照 |
+
+## 固件、拓扑与采集
+
+| 文档 | 说明 |
+| ---- | ---- |
+| [linux-hdmi/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md](linux-hdmi/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md) | 固件与拓扑快照清单 |
+| [../audio_topology/OPERATION_Force_Intel_Signed_Firmware.md](../audio_topology/OPERATION_Force_Intel_Signed_Firmware.md) | intel-signed 固件路径与回退 |
+| [../audio_topology/COLLECT.md](../audio_topology/COLLECT.md) | 拓扑采集脚本用法(Linux / Windows / ChromeOS) |
+| [../audio_topology/collected/README_TRACE_KAISA.md](../audio_topology/collected/README_TRACE_KAISA.md) | trace 采集输出说明 |
+
+## 双系统、进度与总方案
+
+| 文档 | 说明 |
+| ---- | ---- |
+| [meta/WORK_PROGRESS.md](meta/WORK_PROGRESS.md) | 换机交接、源码克隆、当前结论、**Linux HDMI 阶段**互链 |
+| [meta/OPERATION_DualBoot_Ubuntu24_Windows.md](meta/OPERATION_DualBoot_Ubuntu24_Windows.md) | Ubuntu 24.04 与 Windows 双系统 |
+| [../audio_topology/REPAIR_Plan_Audio.md](../audio_topology/REPAIR_Plan_Audio.md) | Linux / Windows 分平台修复思路与文档索引 |
+| [../audio_topology/ANALYSIS_Audio.md](../audio_topology/ANALYSIS_Audio.md) | 三平台对比与技术分析 |
+
+## Windows 专项
+
+| 文档 | 说明 |
+| ---- | ---- |
+| [windows/OPERATION_Windows_Audio.md](windows/OPERATION_Windows_Audio.md) | CoolStar / ALC5682 全流程 |
+| [windows/HARDWARE_ID_DRIVER_MAP_Windows.md](windows/HARDWARE_ID_DRIVER_MAP_Windows.md) | 硬件 ID 与驱动映射(若有) |
+
+## 脚本(仓库根 `scripts/`)
+
+| 脚本 | 说明 |
+| ---- | ---- |
+| [../scripts/ubuntu-hwe-617-build.sh](../scripts/ubuntu-hwe-617-build.sh) | `apply` / `deps` / `build` / `install` |
+| [../scripts/verify-ubuntu-hwe617-0001-patch.sh](../scripts/verify-ubuntu-hwe617-0001-patch.sh) | 0001 补丁 dry-run |
+| [../scripts/linux-hdmi-followup-workflow.sh](../scripts/linux-hdmi-followup-workflow.sh) | 深度 diff / 上游文档入口 |
+| [../scripts/diff-chromeos-ubuntu-sound.sh](../scripts/diff-chromeos-ubuntu-sound.sh) | ChromeOS 与 6.17 `sound/soc` 统计 |
+| [../scripts/preflight-chromeos-ubuntu-diff.sh](../scripts/preflight-chromeos-ubuntu-diff.sh) | 预检双树并运行上述 diff + export |
+| [../scripts/export-chromeos-ubuntu-sound-file-diffs.sh](../scripts/export-chromeos-ubuntu-sound-file-diffs.sh) | 导出 ipc3/pcm/hda-dai unified diff |
+| [../scripts/collect-kaisa-sof-trace.sh](../scripts/collect-kaisa-sof-trace.sh) | SOF trace 采集 |
diff --git a/docs/Linux_HDMI_Audio_Roadmap.md b/docs/Linux_HDMI_Audio_Roadmap.md
new file mode 100644
index 0000000000..7805d34e8c
--- /dev/null
+++ b/docs/Linux_HDMI_Audio_Roadmap.md
@@ -0,0 +1,3 @@
+# 文档已迁移
+
+Linux HDMI 路线图现位于:[linux-hdmi/Linux_HDMI_Audio_Roadmap.md](linux-hdmi/Linux_HDMI_Audio_Roadmap.md)。
diff --git a/docs/WORK_PROGRESS.md b/docs/WORK_PROGRESS.md
index cf810d7866..e83ba2b3c2 100644
--- a/docs/WORK_PROGRESS.md
+++ b/docs/WORK_PROGRESS.md
@@ -1,115 +1,3 @@
-# 工作进度与源码获取说明(换机交接)
+# 文档已迁移
-面向机型:**Google Kaisa(Chromebox 10 代)**;核心问题:**Linux HDMI 无声(`STREAM_PCM_PARAMS` IPC 约 -5)**、**Windows 3.5mm 无声**;对照:**ChromeOS 上 HDMI / 3.5mm 正常**。
-
----
-
-## 一、当前结论与状态
-
-| 方向 | 状态 |
-|------|------|
-| 固件(intel-signed vs community) | 已实验:**单独换固件不能恢复 HDMI**;可能影响插拔检测,需按 OPERATION 文档回退 |
-| 拓扑 | 与 ChromeOS **等效**(采集结论见 `audio_topology/ANALYSIS_Audio.md`) |
-| Ubuntu HWE 6.17 补丁 | **0001** 在 `patches/ubuntu-hwe-6.17/`(FREE/trigger 路径;**不解决** `STREAM_PCM_PARAMS`)。**STREAM_PCM_PARAMS** 对照见 `patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md`;真机 IPC 载荷观测见 **`docs/OPERATION_Kaisa_SOF_HDMI_Trace.md`**、`audio_topology/collected/README_TRACE_KAISA.md`。上游复现包清单见 **`docs/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md`**。另见 `DIFF_SUMMARY.txt`、`docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md`、`docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md` |
-| Mainline 5.15(kernel.ubuntu.com,如 v5.15.201) | 真机:**HDMI 仍无声**;**3.5mm、WiFi 也异常**(相对 6.17)。**不等于** ChromeOS 5.15;**不建议**作修复主线,应 **GRUB 回 6.17** 并装全 HWE 模块包 | 见 `docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md` |
-| 全量内核编译 `fakeroot debian/rules binary-generic` | **已在具备足够磁盘的环境完成**(`kernel-src/` 下产出 `linux-image-unsigned-*`、`linux-modules-*` 等 deb);常见遇阻:**磁盘空间不足**(建议 **≥35~50GB**);勿在同一源码树混用裸 `make` 与 `debian/rules`(需 `make ARCH=x86 mrproper` 清根目录后再打包) |
-| Windows 侧 | 以 **CoolStar / Chrultrabook 成套驱动** 与设备管理器排错为主;见 `audio_topology/OPERATION_Windows_Audio.md` |
-
----
-
-## 二、源码一:ChromiumOS / ChromeOS 内核(对照「HDMI 正常」)
-
-**用途**:对照 **SOF / Intel boards / ACPI match** 等与 HDMI 相关的驱动差异(分支示例:`release-R144-16503.B-chromeos-5.15`)。
-
-**官方仓库(HTTPS)**:
-
-- `https://chromium.googlesource.com/chromiumos/third_party/kernel`
-
-**克隆示例(浅克隆 + 指定分支)**:
-
-```bash
-mkdir -p /path/to/chromiumos_kernel && cd /path/to/chromiumos_kernel
-git clone --depth 1 -b release-R144-16503.B-chromeos-5.15 \
- https://chromium.googlesource.com/chromiumos/third_party/kernel.git v5.15
-```
-
-**可选:只检出音频相关目录(减小体积)**(在 `v5.15` 内执行):
-
-```bash
-cd v5.15
-git sparse-checkout init --cone
-git sparse-checkout set sound/soc/intel sound/soc/sof include/sound
-```
-
-**本仓库内路径(若已存在)**:`chromiumos_kernel/v5.15/`(以你机器实际为准)。
-
----
-
-## 三、源码二:Ubuntu HWE 6.17 内核(与当前运行内核一致)
-
-**用途**:与 ChromeOS 5.15 做 diff / 打补丁 / 编译验证(与当前 Ubuntu 包版本一致)。
-
-**注意**:二进制包名可能是 `linux-image-*`,但**源码包名**为 `linux-hwe-6.17`,**不是** `linux`(`apt source linux=6.17...` 会失败)。
-
-**启用源码仓库**(Noble 示例):
-
-```bash
-sudo sed -i 's/^Types: deb$/Types: deb deb-src/' /etc/apt/sources.list.d/ubuntu.sources
-sudo apt update
-```
-
-**查本机内核对应的源码包与版本**:
-
-```bash
-dpkg -s "linux-image-$(uname -r)" | grep -E '^Source:|^Version:'
-apt-cache showsrc linux-hwe-6.17 | grep -E '^Package:|^Version:' | head
-```
-
-**下载源码(把 `Version:` 换成 `apt-cache showsrc` 里与当前内核一致的那一行)**:
-
-```bash
-mkdir -p /path/to/chromebox_10th_audio_driver/kernel-src && cd /path/to/chromebox_10th_audio_driver/kernel-src
-apt source linux-hwe-6.17=6.17.0-19.19~24.04.2
-```
-
-解压得到目录类似:`linux-hwe-6.17-6.17.0/`,以及 `.dsc` / `.orig.tar.gz` / `.diff.gz`(大文件已被 `.gitignore` 忽略,不提交仓库;见 `kernel-src/README.md`)。
-
-**编译 generic 包(需足够磁盘与依赖)**:
-
-```bash
-sudo apt build-dep linux-hwe-6.17
-cd /path/to/chromebox_10th_audio_driver/kernel-src/linux-hwe-6.17-6.17.0
-export CONCURRENCY_LEVEL="$(nproc)"
-fakeroot debian/rules clean
-fakeroot debian/rules binary-generic
-```
-
-**仓库内辅助脚本**:`scripts/ubuntu-hwe-617-build.sh`、`scripts/ubuntu-hwe-617-deps-packages.txt`;**README** 中有入口。
-
----
-
-## 四、换机后建议最短路径
-
-1. 克隆本仓库 `chromebox_10th_audio_driver`。
-2. 按需在本仓库 **`kernel-src/`** 下重新拉取 **Ubuntu 源码**(用新机器上的 `uname -r` / `dpkg -s` / `apt-cache showsrc` 核对版本号;**24.04** 上可直接 `apt build-dep linux-hwe-6.17`)。
-3. 按需重新克隆 **ChromiumOS kernel** 分支(或从旧机拷贝 `chromiumos_kernel/` 目录)。
-4. 阅读:`audio_topology/REPAIR_Plan_Audio.md`、`audio_topology/ANALYSIS_Audio.md`。
-
----
-
-## 五、文档索引
-
-| 文档 | 说明 |
-|------|------|
-| `audio_topology/REPAIR_Plan_Audio.md` | Linux / Windows 修复总览 |
-| `audio_topology/ANALYSIS_Audio.md` | 三平台对比与 dmesg 要点 |
-| `audio_topology/OPERATION_Force_Intel_Signed_Firmware.md` | Linux SOF 固件与回退 |
-| `audio_topology/OPERATION_Windows_Audio.md` | Windows CoolStar / ALC5682 |
-| `README.md` | 任务列表与参考链接 |
-| `docs/OPERATION_Kaisa_SOF_HDMI_Trace.md` | Kaisa:`dynamic_debug` + `sof_debug=0x800`、采集 dmesg |
-| `docs/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md` | 固件/tplg 与基线核对 |
-| `docs/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md` | 上游 issue/邮件复现包与模板 |
-
----
-
-*本文档随工作机迁移更新;不修改 `.cursor/plans/` 下的计划文件。*
+换机交接与进度说明现位于:[meta/WORK_PROGRESS.md](meta/WORK_PROGRESS.md)。
diff --git a/docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md b/docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md
similarity index 92%
rename from docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md
rename to docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md
index a28e0998be..888552babd 100644
--- a/docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md
+++ b/docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md
@@ -2,7 +2,7 @@
面向:在仓库 [`chromiumos_kernel/v5.15/`](../chromiumos_kernel/v5.15) 对照 **ChromeOS** 与 **`kernel-src/linux-hwe-6.17-6.17.0/`**(Noble 源码树),为 **Kaisa HDMI / `STREAM_PCM_PARAMS`** 相关的新内核补丁做设计输入。
-克隆说明与分支名见 [`docs/WORK_PROGRESS.md`](WORK_PROGRESS.md) 第二节。
+克隆说明与分支名见 [`../meta/WORK_PROGRESS.md`](../meta/WORK_PROGRESS.md) 第二节。
---
@@ -107,6 +107,6 @@ OUT=/tmp/kaisa-sound-diff \
## 6. 相关文档与脚本
-- 差异规模统计:[`docs/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md`](CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md),[`scripts/diff-chromeos-ubuntu-sound.sh`](../scripts/diff-chromeos-ubuntu-sound.sh)
+- 差异规模统计:[`../meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md`](../meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md),[`scripts/diff-chromeos-ubuntu-sound.sh`](../scripts/diff-chromeos-ubuntu-sound.sh)
- 补丁目录说明:[`patches/ubuntu-hwe-6.17/README.md`](../patches/ubuntu-hwe-6.17/README.md)
- 摘要:[`patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt`](../patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt)
diff --git a/docs/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md b/docs/kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md
similarity index 99%
rename from docs/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md
rename to docs/kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md
index 57a6880fdc..946215cfe3 100644
--- a/docs/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md
+++ b/docs/kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md
@@ -379,7 +379,7 @@ uname -r
应显示 `6.17.0-19-generic`(或你实际安装的 flavor 名称)。
-HDMI 音频验证可结合项目内 [CHROMEOS_VS_UBUNTU_HDMI_NOTES.md](CHROMEOS_VS_UBUNTU_HDMI_NOTES.md) 与 [WORK_PROGRESS.md](WORK_PROGRESS.md) 中的排错思路。
+HDMI 音频验证可结合项目内 [CHROMEOS_VS_UBUNTU_HDMI_NOTES.md](../linux-hdmi/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md) 与 [WORK_PROGRESS.md](../meta/WORK_PROGRESS.md) 中的排错思路。
---
diff --git a/docs/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md b/docs/linux-hdmi/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md
similarity index 77%
rename from docs/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md
rename to docs/linux-hdmi/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md
index 706595e499..0f43590d30 100644
--- a/docs/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md
+++ b/docs/linux-hdmi/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md
@@ -22,7 +22,7 @@
### Ubuntu HWE 6.17(上游已改名)
- 使用 **`link->playback_only = 1;`**(对应 `include/sound/soc.h` 中的 DPCM 语义)。
-- **勿**在 6.17 上把 `playback_only` 改回 `dpcm_playback`(字段已移除,无法编译)。历史说明见 [`DIFF_SUMMARY.txt`](../patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt)。
+- **勿**在 6.17 上把 `playback_only` 改回 `dpcm_playback`(字段已移除,无法编译)。历史说明见 [`DIFF_SUMMARY.txt`](../../patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt)。
---
@@ -30,7 +30,7 @@
曾尝试在 `set_idisp_hdmi_link` 中增加 **`SND_SOC_DPCM_TRIGGER_POST`**(旧称 0002),**Kaisa 真机 HDMI 仍无声**;该补丁已从仓库删除。
-新补丁应在细读 **ChromeOS 5.15 与 6.17** 在 **`sound/soc/sof/ipc3.c`、`pcm.c`、`sound/soc/sof/intel/hda-dai.c`** 等上的差异后再设计,流程见 [`docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md`](OPERATION_ChromeOS_Kernel_Deep_Diff.md)、[`docs/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md`](CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md)、[`patches/ubuntu-hwe-6.17/README.md`](../patches/ubuntu-hwe-6.17/README.md)。
+新补丁应在细读 **ChromeOS 5.15 与 6.17** 在 **`sound/soc/sof/ipc3.c`、`pcm.c`、`sound/soc/sof/intel/hda-dai.c`** 等上的差异后再设计,流程见 [`../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`](../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md)、[`../meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md`](../meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md)、[`patches/ubuntu-hwe-6.17/README.md`](../../patches/ubuntu-hwe-6.17/README.md)。
---
@@ -52,6 +52,6 @@ diff -u \
## 五、与项目其它文档的关系
- 三平台现象与 dmesg 要点:`audio_topology/ANALYSIS_Audio.md`
-- Ubuntu 打包与磁盘、勿混用 `make`/`debian/rules`:`docs/WORK_PROGRESS.md`
+- Ubuntu 打包与磁盘、勿混用 `make`/`debian/rules`:`../meta/WORK_PROGRESS.md`
- HWE 6.17 构建脚本:`scripts/ubuntu-hwe-617-build.sh`(应用补丁需 **`PATCH=...`**)
-- ChromeOS 深度 diff 与导出三文件 diff:`docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md`
+- ChromeOS 深度 diff 与导出三文件 diff:`../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`
diff --git a/docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md b/docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md
new file mode 100644
index 0000000000..6823006439
--- /dev/null
+++ b/docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md
@@ -0,0 +1,105 @@
+# Linux HDMI 无声:路线图与未来步骤
+
+本文是 **Google Kaisa(Chromebox 10 代)+ Coreboot** 下 Linux **HDMI 无声音**问题的 **主路线图**。技术细节与论证见各专项文档;本文只固定 **顺序、产出物与维护方式**。
+
+**全文档索引**:[INDEX.md](../INDEX.md)
+**项目总览与问题表**:[../../README.md](../../README.md)
+
+---
+
+## 一、问题与范围
+
+- **硬件**:Google Kaisa;Coreboot;HDMI 走 **SOF + iDisp / DisplayPort 音频** 链路。
+- **典型现象**:Linux 下 **HDMI 无输出或无法稳定打开 PCM**;**3.5mm 通常正常**。同机 **ChromeOS / Windows HDMI 正常** 时,问题集中在 **Linux 内核 / SOF / 用户态路由**,而非线缆或显示器本身。
+- **dmesg 常见线索**:`STREAM_PCM_PARAMS` IPC 失败、约 **-5(EIO)**,常与 **pcm2/3/4(HDMI1/2/3)** 某条相关(物理口与编号需实测对照)。
+- **非本仓库机型**:其它机器 HDMI 无声原因可能完全不同(独显、默认 sink、PipeWire 等),**勿直接套用**本仓库内核补丁;可借用 [阶段 1](#阶段-1用户态基线) 的排查套路,根因结论见各文档。
+
+---
+
+## 二、已排除或低期望方向
+
+下列方向在仓库内**已有结论或真机反馈**;重复投入前请先读链接,避免走弯路。
+
+| 方向 | 结论摘要 | 详见 |
+| ---- | -------- | ---- |
+| 仅替换拓扑(tplg) | 与 ChromeOS 等效,**单独换 tplg 不能恢复 HDMI** | [ANALYSIS_Audio.md](../../audio_topology/ANALYSIS_Audio.md) |
+| 仅换 intel-signed / community SOF 固件 | **不能单独恢复 HDMI**;可能影响插拔检测 | [OPERATION_Force_Intel_Signed_Firmware.md](../../audio_topology/OPERATION_Force_Intel_Signed_Firmware.md)、[WORK_PROGRESS.md](../meta/WORK_PROGRESS.md) |
+| 旧 **0002**(iDisp `TRIGGER_POST`) | 真机无效;已从仓库删除 | [REANALYSIS_Linux_HDMI_Audio_Kaisa.md](REANALYSIS_Linux_HDMI_Audio_Kaisa.md)、[DIFF_SUMMARY.txt](../../patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt) |
+| Ubuntu **Mainline 5.15** deb(如 kernel.ubuntu.com) | 真机 **HDMI 仍无声** 且 **3.5mm / WiFi 异常**;**不等于** ChromeOS 5.15 | [REANALYSIS_Linux_HDMI_Audio_Kaisa.md](REANALYSIS_Linux_HDMI_Audio_Kaisa.md) |
+| NHLT 缺失 | **不是**根因(ChromeOS 也无 NHLT 仍正常) | [ANALYSIS_Audio.md](../../audio_topology/ANALYSIS_Audio.md) 第六节 |
+
+---
+
+## 三、分阶段路线图
+
+```mermaid
+flowchart LR
+ phase1[phase1_baseline_user]
+ phase2[phase2_kernel_0001]
+ phase3[phase3_deep_diff_bisect]
+ phase4[phase4_upstream_issue]
+ phase1 --> phase2 --> phase3 --> phase4
+```
+
+### 阶段 1:用户态基线
+
+**目的**:确认设备枚举、默认输出、以及 dmesg 是否已出现 IPC 错误(避免「选错 sink」假阳性)。
+
+1. `aplay -L` / `aplay -l`,对 **每个 HDMI 类** `plughw:卡号,设备号` 执行 `speaker-test`(见 [REPAIR_Plan_Audio.md](../../audio_topology/REPAIR_Plan_Audio.md) 1.2 节)。
+2. 运行 [collect_linux_audio_topology.sh](../../audio_topology/collect_linux_audio_topology.sh)(建议 `sudo`),输出到 `audio_topology/collected/`;其中含 **SOF / HDMI / IPC 基线** dmesg 过滤。
+3. 图形环境下确认默认播放设备未锁死在打不开的 HDMI 上。
+
+**产出**:带时间戳的采集文件,便于前后对比。
+
+### 阶段 2:HWE 6.17 与 0001 补丁
+
+**目的**:在发行版栈上验证仓库内 **0001**(`ipc3-pcm.c`:FREE / trigger 使用 `sof_ipc_tx_message` + 回复),并正确安装自编内核与模块包。
+
+1. 源码与版本:见 [kernel-src/README.md](../../kernel-src/README.md);在 **Ubuntu Noble** 上与运行内核一致的 `apt source linux-hwe-6.17=...`。
+2. 补丁校验: [scripts/verify-ubuntu-hwe617-0001-patch.sh](../../scripts/verify-ubuntu-hwe617-0001-patch.sh)(`patch --dry-run`;若树中已含补丁内容会提示跳过)。
+3. 构建与安装:`PATCH=...` [scripts/ubuntu-hwe-617-build.sh](../../scripts/ubuntu-hwe-617-build.sh) `apply` → `deps` → `build`;安装见 [OPERATION_Install_CustomKernel_Ubuntu_HWE617.md](../kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md)(**linux-image-unsigned**、`linux-modules` + **modules-extra**、必要时 **iwlwifi** 等)。
+4. **0001 与 `STREAM_PCM_PARAMS`**:0001 对齐 ChromeOS 的 FREE/trigger 路径;**不改变** `hw_params` / `STREAM_PCM_PARAMS` 发送逻辑。若 HDMI 仍失败且 dmesg 仍报 **PARAMS**,见 [STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md](../../patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md)、[DIFF_SUMMARY.txt](../../patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt)。
+
+**产出**:可启动的自编内核;复测后新的 `collected/` 与 dmesg 片段。
+
+### 阶段 3:深度对照与可选 trace
+
+**目的**:在 6.x 上定位 **iDisp / SOF IPC** 与 ChromeOS 5.15 的差异,为**新补丁**或 **bisect** 提供依据。
+
+1. 克隆 ChromiumOS 5.15 内核树: [WORK_PROGRESS.md](../meta/WORK_PROGRESS.md) 第二节。
+2. 流程与导出:`git` unshallow、按文件 diff: [OPERATION_ChromeOS_Kernel_Deep_Diff.md](../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md);脚本 [diff-chromeos-ubuntu-sound.sh](../../scripts/diff-chromeos-ubuntu-sound.sh)、[export-chromeos-ubuntu-sound-file-diffs.sh](../../scripts/export-chromeos-ubuntu-sound-file-diffs.sh)。
+3. 仍无声时一键列文档与条件运行对照: [linux-hdmi-followup-workflow.sh](../../scripts/linux-hdmi-followup-workflow.sh)。
+4. **可选**:按 [OPERATION_Kaisa_SOF_HDMI_Trace.md](OPERATION_Kaisa_SOF_HDMI_Trace.md)、[README_TRACE_KAISA.md](../../audio_topology/collected/README_TRACE_KAISA.md) 抓取带 IPC 载荷的日志。
+
+**产出**:`reference/` 下 unified diff(若已配置双树)、或明确的「缺哪棵树」记录。
+
+### 阶段 4:上游协同
+
+**目的**:将 **最小复现包** 交给 SOF / ALSA 社区,避免闭门造车。
+
+- 清单与邮件模板: [UPSTREAM_SOF_Kaisa_HDMI_REPRO.md](UPSTREAM_SOF_Kaisa_HDMI_REPRO.md)。
+
+---
+
+## 四、成功标准(建议)
+
+- **客观**:对目标 HDMI 口播放时,**dmesg 中无**与本次播放相关的 **`STREAM_PCM_PARAMS` / `ipc tx error`**(或已确认为无害/已修复)。
+- **主观**:显示器扬声器或耳机有稳定输出。
+- **回归**:3.5mm、WiFi 等与本次改动无关的子系统无意外损坏(自编内核时注意装全模块包)。
+
+---
+
+## 五、维护与「当前阶段」
+
+- **路线图正文**为本文件;**换机与源码 URL、实验结论**以 [WORK_PROGRESS.md](../meta/WORK_PROGRESS.md) 为准,两者应同步(WORK_PROGRESS 内「Linux HDMI 当前阶段」见该文件顶部)。
+- **任务编号 L1–L4** 与阶段对应关系见根 [README.md](../../README.md) 任务列表。
+
+---
+
+## 六、相关文档速链
+
+| 用途 | 链接 |
+| ---- | ---- |
+| Linux 分步操作与索引 | [REPAIR_Plan_Audio.md](../../audio_topology/REPAIR_Plan_Audio.md) |
+| 长文分析(Mainline 误区、自定义内核注意) | [REANALYSIS_Linux_HDMI_Audio_Kaisa.md](REANALYSIS_Linux_HDMI_Audio_Kaisa.md) |
+| API 对照(`playback_only` 等) | [CHROMEOS_VS_UBUNTU_HDMI_NOTES.md](CHROMEOS_VS_UBUNTU_HDMI_NOTES.md) |
diff --git a/docs/OPERATION_Kaisa_SOF_HDMI_Trace.md b/docs/linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md
similarity index 96%
rename from docs/OPERATION_Kaisa_SOF_HDMI_Trace.md
rename to docs/linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md
index abdd994115..732b523ea3 100644
--- a/docs/OPERATION_Kaisa_SOF_HDMI_Trace.md
+++ b/docs/linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md
@@ -73,7 +73,7 @@ KR=$(uname -r)
sudo dmesg -T > "/tmp/dmesg_sof_TRACE_STREAM_PCM_PARAMS_jack-Kaisa_${KR}_${TS}.txt"
```
-5. 将文件复制到本仓库 **`audio_topology/collected/`**(可 scp),并在 `docs/WORK_PROGRESS.md` 或 `docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md` 中加一行文件名索引。
+5. 将文件复制到本仓库 **`audio_topology/collected/`**(可 scp),并在 `../meta/WORK_PROGRESS.md` 或 `REANALYSIS_Linux_HDMI_Audio_Kaisa.md` 中加一行文件名索引。
## 5. 日志中应关注的内容
diff --git a/docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md b/docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md
similarity index 89%
rename from docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md
rename to docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md
index ce8b47e1b9..749db66445 100644
--- a/docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md
+++ b/docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md
@@ -6,9 +6,9 @@
- 三平台对比与 dmesg:`audio_topology/ANALYSIS_Audio.md`
- 总修复顺序与文档索引:`audio_topology/REPAIR_Plan_Audio.md`
-- ChromeOS 5.15 与 6.17 API 对照:`docs/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md`
-- ChromeOS 树深度 diff / 新补丁设计入口:`docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md`
-- 自编内核安装(含 signed 冲突、modules-extra / iwlwifi):`docs/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md`
+- ChromeOS 5.15 与 6.17 API 对照:`CHROMEOS_VS_UBUNTU_HDMI_NOTES.md`(本目录)
+- ChromeOS 树深度 diff / 新补丁设计入口:`../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`
+- 自编内核安装(含 signed 冲突、modules-extra / iwlwifi):`../kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md`
---
@@ -26,7 +26,7 @@
| 方向 | 结论 | 依据(仓库内) |
|------|------|----------------|
| **拓扑 tplg** | 与 ChromeOS **等效**(解压后规模一致、端点一致) | `ANALYSIS_Audio.md` 第四节、第五节 |
-| **仅换 SOF 固件(intel-signed ↔ community)** | **不能单独恢复 HDMI**;还可能影响 3.5mm 插拔检测 | `WORK_PROGRESS.md`、`ANALYSIS_Audio.md` 第五节、`OPERATION_Force_Intel_Signed_Firmware.md` |
+| **仅换 SOF 固件(intel-signed ↔ community)** | **不能单独恢复 HDMI**;还可能影响 3.5mm 插拔检测 | `../meta/WORK_PROGRESS.md`、`../../audio_topology/ANALYSIS_Audio.md` 第五节、`../../audio_topology/OPERATION_Force_Intel_Signed_Firmware.md` |
| **NHLT 缺失** | **不是根因**(ChromeOS 也无 NHLT 仍正常) | `ANALYSIS_Audio.md` 第六节 |
| **旧 0002 补丁(`set_idisp_hdmi_link` 里 `SND_SOC_DPCM_TRIGGER_POST`)** | **真机验证仍无 HDMI 声**;补丁**已从仓库删除**,不再维护 | 见 `CHROMEOS_VS_UBUNTU_HDMI_NOTES.md`、`patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt` |
| **Ubuntu Mainline 5.15(例:`v5.15.201` deb 装在 Noble 上)** | **HDMI 仍无声**;且相对 6.17 **3.5mm 也无声**、**WiFi 也无**(整体音频/无线栈退化) | 真机反馈(jack-Kaisa);见下文 **「Mainline 5.15 ≠ ChromeOS 5.15」** |
@@ -42,7 +42,7 @@
在继续改内核前,建议先确认实验条件可靠(否则会出现「补丁无效」误判):
1. **确已启动自编镜像**:`dpkg -l | grep linux-image | grep 6.17.0-19` 应为 **`linux-image-unsigned-...`**,而非仍占位的官方 **`linux-image-6.17.0-19-generic`**(二者互斥,易只装上 modules)。见安装文档第 2.1 节。
-2. **模块包装全**:至少 **`linux-modules` + `linux-modules-extra`**,Intel 无线常见还需 **`linux-modules-iwlwifi-*`**;否则会出现 **WiFi 消失** 等与 HDMI 无关的干扰。见 `OPERATION_Install_CustomKernel_Ubuntu_HWE617.md`。
+2. **模块包装全**:至少 **`linux-modules` + `linux-modules-extra`**,Intel 无线常见还需 **`linux-modules-iwlwifi-*`**;否则会出现 **WiFi 消失** 等与 HDMI 无关的干扰。见 `../kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md`。
3. **用户态与物理口**:`aplay -L` 列出所有 HDMI 类设备后,对 **每个候选 `plughw:卡,设备`** 做 `speaker-test`;系统设置里默认输出勿锁死在错误 sink。
---
@@ -57,7 +57,7 @@
- `aplay -L`(保留 HDMI 相关行)
- `sudo dmesg | grep -iE 'sof|STREAM_PCM|ipc failed|pcm[0-9]|ASoC|iDisp|hdmi'`(尾部 80~120 行即可)
- 可选:`alsa-info` 导出一份文本
-- 可选(`STREAM_PCM_PARAMS` 深度):按 **`docs/OPERATION_Kaisa_SOF_HDMI_Trace.md`** 开启 **`sof_debug=0x800`** 与 **dynamic_debug**,将带 IPC 载荷的 dmesg 放入 `audio_topology/collected/`(见同目录 **`README_TRACE_KAISA.md`**)。
+- 可选(`STREAM_PCM_PARAMS` 深度):按 **`OPERATION_Kaisa_SOF_HDMI_Trace.md`** 开启 **`sof_debug=0x800`** 与 **dynamic_debug**,将带 IPC 载荷的 dmesg 放入 `audio_topology/collected/`(见同目录 **`README_TRACE_KAISA.md`**)。
输出放入 `audio_topology/collected/`,文件名带日期与内核版本,便于 diff。
@@ -111,7 +111,7 @@ flowchart LR
```
- **HDMI 问题性质**:更可能是 **Linux(尤其 6.x 发行版栈)里 SOF/Intel/iDisp 路径与 Kaisa + Coreboot 的组合问题**;拓扑与「只换一份 SOF 固件」已反复证明**不够**。
-- **旧 0001/0002**:已自仓库移除;**新补丁**按 [`OPERATION_ChromeOS_Kernel_Deep_Diff.md`](OPERATION_ChromeOS_Kernel_Deep_Diff.md) 流程重做。
+- **旧 0001/0002**:已自仓库移除;**新补丁**按 [`../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`](../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md) 流程重做。
- **Mainline 5.15 deb**:在 Kaisa 上 **阴性且引入 3.5mm/WiFi 回归**;**不推荐**继续折腾 Mainline 5.15。**若已安装**:用 GRUB **回到 6.17**,日常以 **完整 HWE 模块包** 为准。
- **仍值得做的对照**(可选、工作量更大):**Ubuntu 22.04 早期 Live 的 5.15.0-xx-generic**(非 Mainline),或直接把材料交给 **SOF/ALSA 上游**;**bisect** 建议在 **linux.git 或 Ubuntu 同源** 上进行,而非混用 Noble + Mainline 老内核。
- **自编 6.17**:务必 **unsigned(若用)+ modules + extra(+ iwlwifi)** 装全,并保留可启动旧内核。
@@ -120,7 +120,7 @@ flowchart LR
## 六、文档维护建议
-若你完成 **5.15 Live** 或 **上游 issue** 链接,可把结果摘要回写到 `audio_topology/ANALYSIS_Audio.md`(新增一小节)与 `docs/WORK_PROGRESS.md` 状态表,避免后人重复踩旧实验补丁/仅装两 deb/unsigned 冲突等坑。
+若你完成 **5.15 Live** 或 **上游 issue** 链接,可把结果摘要回写到 `../../audio_topology/ANALYSIS_Audio.md`(新增一小节)与 `../meta/WORK_PROGRESS.md` 状态表,避免后人重复踩旧实验补丁/仅装两 deb/unsigned 冲突等坑。
---
@@ -191,7 +191,7 @@ uname -r
**说明**:
- Mainline **通常没有** Ubuntu HWE 那种 `linux-modules-extra` / `linux-modules-iwlwifi` 分包;多数驱动在 **`linux-modules-…` 一体包**里。
-- **`linux-image-unsigned`**:开启 **Secure Boot** 时可能无法启动,需关闭或参考 `docs/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md`。
+- **`linux-image-unsigned`**:开启 **Secure Boot** 时可能无法启动,需关闭或参考 `../kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md`。
- 务必留好旧内核,以便 GRUB 切回 6.x。
### C. 其它带 5.15 的 Live(备选)
@@ -219,10 +219,10 @@ uname -r
ChromeOS 内核通常是 **v5.15 + 大量提交**;不要指望「一个补丁文件」解决问题,应 **缩小目录 + 看提交说明**。
-1. **拿到树**(见 `docs/WORK_PROGRESS.md` 第二节),例如本仓库 `chromiumos_kernel/v5.15/`,分支如 `release-R144-16503.B-chromeos-5.15`。
+1. **拿到树**(见 `../meta/WORK_PROGRESS.md` 第二节),例如本仓库 `chromiumos_kernel/v5.15/`,分支如 `release-R144-16503.B-chromeos-5.15`。
-2. **操作清单与三文件 diff 导出**:[`docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md`](OPERATION_ChromeOS_Kernel_Deep_Diff.md)(`git fetch --unshallow`、`git log`、`diff` / `export-chromeos-ubuntu-sound-file-diffs.sh`)。
-3. **自动对照摘要**(本机可跑):[`docs/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md`](CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md)。随时重跑:
+2. **操作清单与三文件 diff 导出**:[`../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`](../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md)(`git fetch --unshallow`、`git log`、`diff` / `export-chromeos-ubuntu-sound-file-diffs.sh`)。
+3. **自动对照摘要**(本机可跑):[`../meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md`](../meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md)。随时重跑:
```bash
./scripts/diff-chromeos-ubuntu-sound.sh
diff --git a/docs/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md b/docs/linux-hdmi/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md
similarity index 81%
rename from docs/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md
rename to docs/linux-hdmi/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md
index fcbd194bcd..2123e51295 100644
--- a/docs/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md
+++ b/docs/linux-hdmi/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md
@@ -22,9 +22,9 @@ sha256sum /lib/firmware/intel/sof-tplg/sof-cml-rt5682.tplg.zst 2>/dev/null
| 拓扑文件 | `sof-cml-rt5682.tplg`(Chrome 解压约 35KB);Linux 常为 `.tplg.zst` | 解压后规模与端点应与 ChromeOS 采集一致 |
| 固件 | CML 平台常见 `sof-cml.ri`;Chrome 倾向 **intel-signed**,Ubuntu 常选 **community** | 已实验证明 **仅换 signed/community 不能单独恢复 HDMI**;仍应记录本机实际路径 |
| dmesg | 无「topology load failed」或明显 ABI 不匹配 | 若有加载错误,优先修复路径/文件再谈 IPC -5 |
-| 与 IPC 观测结合 | `docs/OPERATION_Kaisa_SOF_HDMI_Trace.md` | 载荷中 **comp_id** 须与 tplg 中对应 PCM 节点一致;若一致仍 -5,偏向 **固件策略或 DSP bug** |
+| 与 IPC 观测结合 | `OPERATION_Kaisa_SOF_HDMI_Trace.md` | 载荷中 **comp_id** 须与 tplg 中对应 PCM 节点一致;若一致仍 -5,偏向 **固件策略或 DSP bug** |
## 结论引用(已有)
-- 拓扑 **等效**、仅换固件 **非主因**:见 `ANALYSIS_Audio.md` 第四节、第五节及 `docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md`。
+- 拓扑 **等效**、仅换固件 **非主因**:见 `../../audio_topology/ANALYSIS_Audio.md` 第四节、第五节及 `REANALYSIS_Linux_HDMI_Audio_Kaisa.md`。
- 本清单用于 **回归与上游报障时的环境快照**,不替代内核/驱动根因分析。
diff --git a/docs/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md b/docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md
similarity index 86%
rename from docs/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md
rename to docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md
index 4e05425abe..b760062dba 100644
--- a/docs/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md
+++ b/docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md
@@ -5,7 +5,7 @@
## 1. 硬件与引导
- 机型:**Google Kaisa**(Chromebox 10 代),Coreboot。
-- 对照:**同机 ChromeOS HDMI 正常**;**Windows HDMI 正常**(见仓库 `audio_topology/` 与 `docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md`)。
+- 对照:**同机 ChromeOS HDMI 正常**;**Windows HDMI 正常**(见仓库 `audio_topology/` 与 `REANALYSIS_Linux_HDMI_Audio_Kaisa.md`)。
## 2. 软件版本(请填真机实测)
@@ -20,11 +20,11 @@
仓库已有示例:
`audio_topology/collected/dmesg_sof_STREAM_PCM_PARAMS_HDMI3_jack-Kaisa_6.17.0-19-generic_20260404.txt`
- **`alsa-info` 导出**(或 `aplay -L`、`/proc/asound` 相关片段)。
-- **可选(强烈建议)**:按 **`docs/OPERATION_Kaisa_SOF_HDMI_Trace.md`** 采集带 **IPC 载荷十六进制** 的 dmesg,放入 `audio_topology/collected/` 并附文件名。
+- **可选(强烈建议)**:按 **`OPERATION_Kaisa_SOF_HDMI_Trace.md`** 采集带 **IPC 载荷十六进制** 的 dmesg,放入 `audio_topology/collected/` 并附文件名。
## 4. 固件与拓扑快照
-按 **`docs/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md`** 附:`dmesg` 中固件/tplg 路径、`sha256sum` 结果。
+按 **`SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md`** 附:`dmesg` 中固件/tplg 路径、`sha256sum` 结果。
## 5. 已尝试且不足以单独修复的方向(避免重复提问)
diff --git a/docs/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md b/docs/meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md
similarity index 91%
rename from docs/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md
rename to docs/meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md
index 97e9a698c2..ba9c832ce9 100644
--- a/docs/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md
+++ b/docs/meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md
@@ -2,7 +2,7 @@
本文档由仓库内脚本/命令**自动生成摘要**(非手工逐行审查结论)。用于回答:**ChromeOS 树与 6.17 在 SOF/Intel 音频上差多大、该先看哪些文件**。
-**操作清单**(`git fetch --unshallow`、`git log`、导出 `ipc3`/`pcm`/`hda-dai` 全文 diff):[`OPERATION_ChromeOS_Kernel_Deep_Diff.md`](OPERATION_ChromeOS_Kernel_Deep_Diff.md)。
+**操作清单**(`git fetch --unshallow`、`git log`、导出 `ipc3`/`pcm`/`hda-dai` 全文 diff):[`../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`](../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md)。
**路径约定**(本仓库):
@@ -22,7 +22,7 @@ git fetch --unshallow origin
# 或重新克隆时不加 --depth 1
```
-若提示 **`--unshallow on a complete repository does not make sense`**,表示已是完整仓库,跳过本步即可(详见 [`OPERATION_ChromeOS_Kernel_Deep_Diff.md`](OPERATION_ChromeOS_Kernel_Deep_Diff.md))。
+若提示 **`--unshallow on a complete repository does not make sense`**,表示已是完整仓库,跳过本步即可(详见 [`../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`](../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md))。
然后再执行:
@@ -87,7 +87,7 @@ UB=/path/to/linux-hwe-6.17-6.17.0 \
---
-## 5. 与 `docs/REANALYSIS_Linux_HDMI_Audio_Kaisa.md` 的关系
+## 5. 与 `docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md` 的关系
- 本文档给出 **「从哪里下刀 diff」** 的**量化清单**。
- **ChromeOS 定制补丁的语义**(哪些提交该 port)仍需 **`git log`(非浅克隆)** 或 **人工读 diff** 后结论。
diff --git a/docs/OPERATION_DualBoot_Ubuntu24_Windows.md b/docs/meta/OPERATION_DualBoot_Ubuntu24_Windows.md
similarity index 95%
rename from docs/OPERATION_DualBoot_Ubuntu24_Windows.md
rename to docs/meta/OPERATION_DualBoot_Ubuntu24_Windows.md
index e257d9c161..196c36d930 100644
--- a/docs/OPERATION_DualBoot_Ubuntu24_Windows.md
+++ b/docs/meta/OPERATION_DualBoot_Ubuntu24_Windows.md
@@ -30,7 +30,7 @@
- (可选)`/home`(ext4)按需
- (可选)swap:8–32GB(看内存与休眠需求)
-> 若你计划在 Ubuntu 上编译 `linux-hwe-6.17` deb:建议 Ubuntu 分区额外留出 **≥35–50GB 空闲**(见本仓库 `docs/WORK_PROGRESS.md` 的经验)。
+> 若你计划在 Ubuntu 上编译 `linux-hwe-6.17` deb:建议 Ubuntu 分区额外留出 **≥35–50GB 空闲**(见本仓库 `docs/meta/WORK_PROGRESS.md` 的经验)。
---
@@ -46,8 +46,8 @@
**Windows 侧(本项目相关)**:
- 先不要急着装“通用 Realtek 声卡包”。本机 3.5mm 往往依赖 **CoolStar SOF + ALC5682 I2S** 栈。
- 先按本仓库 Windows 指南处理:
- - `audio_topology/OPERATION_Windows_Audio.md`
- - `audio_topology/HARDWARE_ID_DRIVER_MAP_Windows.md`
+ - `docs/windows/OPERATION_Windows_Audio.md`
+ - `docs/windows/HARDWARE_ID_DRIVER_MAP_Windows.md`
### 2) 再安装 Ubuntu 24.04
@@ -148,15 +148,15 @@ timedatectl set-local-rtc 0 --adjust-system-clock
- **Realtek ALC5682 I2S Audio**:硬件 ID 常见 `ACPI\\10EC5682\\...`
按本仓库文档走:
-- `audio_topology/OPERATION_Windows_Audio.md`
-- `audio_topology/HARDWARE_ID_DRIVER_MAP_Windows.md`
+- `docs/windows/OPERATION_Windows_Audio.md`
+- `docs/windows/HARDWARE_ID_DRIVER_MAP_Windows.md`
### 2) Linux 内核(HWE 6.17 编译/安装)
若你要在 Ubuntu 24.04 上编译本仓库的 HWE 6.17 内核包:
- 源码放置:`kernel-src/linux-hwe-6.17-6.17.0/`
- 脚本入口:`scripts/ubuntu-hwe-617-build.sh`
-- 经验提醒:不要在同一源码树混用裸 `make` 与 `debian/rules`;如做过 smoke-test,打包前可 `make ARCH=x86 mrproper` 清洁树(详见 `docs/WORK_PROGRESS.md`)。
+- 经验提醒:不要在同一源码树混用裸 `make` 与 `debian/rules`;如做过 smoke-test,打包前可 `make ARCH=x86 mrproper` 清洁树(详见 `docs/meta/WORK_PROGRESS.md`)。
---
diff --git a/docs/meta/WORK_PROGRESS.md b/docs/meta/WORK_PROGRESS.md
new file mode 100644
index 0000000000..7fac798675
--- /dev/null
+++ b/docs/meta/WORK_PROGRESS.md
@@ -0,0 +1,139 @@
+# 工作进度与源码获取说明(换机交接)
+
+面向机型:**Google Kaisa(Chromebox 10 代)**;核心问题:**Linux HDMI 无声(`STREAM_PCM_PARAMS` IPC 约 -5)**、**Windows 3.5mm 无声**;对照:**ChromeOS 上 HDMI / 3.5mm 正常**。
+
+---
+
+## 文档导航与 Linux HDMI 阶段
+
+| 资源 | 路径 |
+| ---- | ---- |
+| 全文档索引(按主题) | [INDEX.md](../INDEX.md) |
+| **Linux HDMI 路线图**(分阶段行动、已排除项、成功标准) | [../linux-hdmi/Linux_HDMI_Audio_Roadmap.md](../linux-hdmi/Linux_HDMI_Audio_Roadmap.md) |
+| 项目根 README(任务与 L1–L4 映射) | [../../README.md](../../README.md) |
+
+**协作时**:在本文或路线图「五、维护」中注明当前卡在哪一阶段(例如:阶段 2 已装自编内核、阶段 3 待克隆 `chromiumos_kernel/v5.15`)。
+
+---
+
+## 一、当前结论与状态
+
+| 方向 | 状态 |
+|------|------|
+| 固件(intel-signed vs community) | 已实验:**单独换固件不能恢复 HDMI**;可能影响插拔检测,需按 OPERATION 文档回退 |
+| 拓扑 | 与 ChromeOS **等效**(采集结论见 `audio_topology/ANALYSIS_Audio.md`) |
+| Ubuntu HWE 6.17 补丁 | **0001** 在 `patches/ubuntu-hwe-6.17/`(FREE/trigger 路径;**不解决** `STREAM_PCM_PARAMS`)。**STREAM_PCM_PARAMS** 对照见 `patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md`;真机 IPC 载荷观测见 **`docs/linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md`**、`audio_topology/collected/README_TRACE_KAISA.md`。上游复现包清单见 **`docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md`**。另见 `DIFF_SUMMARY.txt`、`docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`、`docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md` |
+| Mainline 5.15(kernel.ubuntu.com,如 v5.15.201) | 真机:**HDMI 仍无声**;**3.5mm、WiFi 也异常**(相对 6.17)。**不等于** ChromeOS 5.15;**不建议**作修复主线,应 **GRUB 回 6.17** 并装全 HWE 模块包 | 见 `docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md` |
+| 全量内核编译 `fakeroot debian/rules binary-generic` | **已在具备足够磁盘的环境完成**(`kernel-src/` 下产出 `linux-image-unsigned-*`、`linux-modules-*` 等 deb);常见遇阻:**磁盘空间不足**(建议 **≥35~50GB**);勿在同一源码树混用裸 `make` 与 `debian/rules`(需 `make ARCH=x86 mrproper` 清根目录后再打包) |
+| Windows 侧 | 以 **CoolStar / Chrultrabook 成套驱动** 与设备管理器排错为主;见 `docs/windows/OPERATION_Windows_Audio.md` |
+
+---
+
+## 二、源码一:ChromiumOS / ChromeOS 内核(对照「HDMI 正常」)
+
+**用途**:对照 **SOF / Intel boards / ACPI match** 等与 HDMI 相关的驱动差异(分支示例:`release-R144-16503.B-chromeos-5.15`)。
+
+**官方仓库(HTTPS)**:
+
+- `https://chromium.googlesource.com/chromiumos/third_party/kernel`
+
+**克隆示例(浅克隆 + 指定分支)**:
+
+```bash
+mkdir -p /path/to/chromiumos_kernel && cd /path/to/chromiumos_kernel
+git clone --depth 1 -b release-R144-16503.B-chromeos-5.15 \
+ https://chromium.googlesource.com/chromiumos/third_party/kernel.git v5.15
+```
+
+**可选:只检出音频相关目录(减小体积)**(在 `v5.15` 内执行):
+
+```bash
+cd v5.15
+git sparse-checkout init --cone
+git sparse-checkout set sound/soc/intel sound/soc/sof include/sound
+```
+
+**本仓库内路径(若已存在)**:`chromiumos_kernel/v5.15/`(以你机器实际为准)。
+
+---
+
+## 三、源码二:Ubuntu HWE 6.17 内核(与当前运行内核一致)
+
+**用途**:与 ChromeOS 5.15 做 diff / 打补丁 / 编译验证(与当前 Ubuntu 包版本一致)。
+
+**注意**:二进制包名可能是 `linux-image-*`,但**源码包名**为 `linux-hwe-6.17`,**不是** `linux`(`apt source linux=6.17...` 会失败)。
+
+**启用源码仓库**(Noble 示例):
+
+```bash
+sudo sed -i 's/^Types: deb$/Types: deb deb-src/' /etc/apt/sources.list.d/ubuntu.sources
+sudo apt update
+```
+
+**查本机内核对应的源码包与版本**:
+
+```bash
+dpkg -s "linux-image-$(uname -r)" | grep -E '^Source:|^Version:'
+apt-cache showsrc linux-hwe-6.17 | grep -E '^Package:|^Version:' | head
+```
+
+**下载源码(把 `Version:` 换成 `apt-cache showsrc` 里与当前内核一致的那一行)**:
+
+```bash
+mkdir -p /path/to/chromebox_10th_audio_driver/kernel-src && cd /path/to/chromebox_10th_audio_driver/kernel-src
+apt source linux-hwe-6.17=6.17.0-19.19~24.04.2
+```
+
+解压得到目录类似:`linux-hwe-6.17-6.17.0/`,以及 `.dsc` / `.orig.tar.gz` / `.diff.gz`(大文件已被 `.gitignore` 忽略,不提交仓库;见 `kernel-src/README.md`)。
+
+**编译 generic 包(需足够磁盘与依赖)**:
+
+```bash
+sudo apt build-dep linux-hwe-6.17
+cd /path/to/chromebox_10th_audio_driver/kernel-src/linux-hwe-6.17-6.17.0
+export CONCURRENCY_LEVEL="$(nproc)"
+fakeroot debian/rules clean
+fakeroot debian/rules binary-generic
+```
+
+**仓库内辅助脚本**:`scripts/ubuntu-hwe-617-build.sh`、`scripts/ubuntu-hwe-617-deps-packages.txt`;**README** 中有入口。
+
+---
+
+## 四、换机后建议最短路径
+
+1. 克隆本仓库 `chromebox_10th_audio_driver`。
+2. 按需在本仓库 **`kernel-src/`** 下重新拉取 **Ubuntu 源码**(用新机器上的 `uname -r` / `dpkg -s` / `apt-cache showsrc` 核对版本号;**24.04** 上可直接 `apt build-dep linux-hwe-6.17`)。
+3. 按需重新克隆 **ChromiumOS kernel** 分支(或从旧机拷贝 `chromiumos_kernel/` 目录)。
+4. 阅读:`docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md`、`docs/INDEX.md`、`audio_topology/REPAIR_Plan_Audio.md`、`audio_topology/ANALYSIS_Audio.md`。
+
+---
+
+## 五、文档索引
+
+| 文档 | 说明 |
+|------|------|
+| `docs/INDEX.md` | 全文档索引 |
+| `docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md` | Linux HDMI 分阶段路线图 |
+| `audio_topology/REPAIR_Plan_Audio.md` | Linux / Windows 修复总览 |
+| `audio_topology/ANALYSIS_Audio.md` | 三平台对比与 dmesg 要点 |
+| `audio_topology/OPERATION_Force_Intel_Signed_Firmware.md` | Linux SOF 固件与回退 |
+| `docs/windows/OPERATION_Windows_Audio.md` | Windows CoolStar / ALC5682 |
+| `README.md`(仓库根) | 任务列表与参考链接 |
+| `docs/linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md` | Kaisa:`dynamic_debug` + `sof_debug=0x800`、采集 dmesg |
+| `docs/linux-hdmi/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md` | 固件/tplg 与基线核对 |
+| `docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md` | 上游 issue/邮件复现包与模板 |
+
+---
+
+---
+
+## 六、ChromeOS 对照计划执行状态(本仓库快照)
+
+- **预检脚本**(两棵树齐全后自动跑 diff + export):[`scripts/preflight-chromeos-ubuntu-diff.sh`](../../scripts/preflight-chromeos-ubuntu-diff.sh)。
+- **常见阻塞**:未克隆 `chromiumos_kernel/v5.15/`;或仅有部分 `kernel-src/linux-hwe-6.17-6.17.0/`(缺 `debian/` 则无法 `binary-generic`,需在本机 `apt source linux-hwe-6.17=…` 拉完整源码包)。
+- **新补丁(0002)**:`STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md` 已说明 `ipc3-pcm` hw_params 与 Chrome 语义一致,**不宜**无依据新增大块补丁;优先 **trace / 上游复现** 后再写最小 hunk。
+
+---
+
+*本文档随工作机迁移更新;不修改 `.cursor/plans/` 下的计划文件。*
diff --git a/audio_topology/HARDWARE_ID_DRIVER_MAP_Windows.md b/docs/windows/HARDWARE_ID_DRIVER_MAP_Windows.md
similarity index 98%
rename from audio_topology/HARDWARE_ID_DRIVER_MAP_Windows.md
rename to docs/windows/HARDWARE_ID_DRIVER_MAP_Windows.md
index abfff9fea0..2993ab50b1 100644
--- a/audio_topology/HARDWARE_ID_DRIVER_MAP_Windows.md
+++ b/docs/windows/HARDWARE_ID_DRIVER_MAP_Windows.md
@@ -103,5 +103,5 @@ pnputil /enum-drivers | findstr /i "coolstar realtek intel sof"
## 六、参考
- 操作步骤(安装顺序、Error 处理):[OPERATION_Windows_Audio.md](OPERATION_Windows_Audio.md)
-- 三平台对比:[ANALYSIS_Audio.md](ANALYSIS_Audio.md)
+- 三平台对比:[ANALYSIS_Audio.md](../../audio_topology/ANALYSIS_Audio.md)
- Chrultrabook 安装后音频:
diff --git a/audio_topology/OPERATION_Windows_Audio.md b/docs/windows/OPERATION_Windows_Audio.md
similarity index 95%
rename from audio_topology/OPERATION_Windows_Audio.md
rename to docs/windows/OPERATION_Windows_Audio.md
index da4a272281..fd6c96431f 100644
--- a/audio_topology/OPERATION_Windows_Audio.md
+++ b/docs/windows/OPERATION_Windows_Audio.md
@@ -2,7 +2,7 @@
针对 **Coreboot 刷机后**:HDMI(英特尔显示器音频)正常,**3.5mm / Realtek ALC5682 I2S 无声、无插拔提示** 的情况。与 Linux 问题相反,修法依赖 **CoolStar / Chrultrabook 驱动栈**,不是桌面机通用 Realtek 安装包。
-分析背景见 [ANALYSIS_Audio.md](ANALYSIS_Audio.md);采集样例见 `collected/audio_topology_windows_*.txt`。
+分析背景见 [ANALYSIS_Audio.md](../../audio_topology/ANALYSIS_Audio.md);采集样例见 `audio_topology/collected/audio_topology_windows_*.txt`。
**Hardware ID → 驱动包类型映射**(按设备管理器里的 `CSAUDIO\...` / `ACPI\10EC5682\...` / `HDAUDIO\...VEN_8086&DEV_280B...` 等对号入座):见 [HARDWARE_ID_DRIVER_MAP_Windows.md](HARDWARE_ID_DRIVER_MAP_Windows.md)。
@@ -90,4 +90,4 @@
-
-
-
-- 对比分析:[ANALYSIS_Audio.md](ANALYSIS_Audio.md)
+- 对比分析:[ANALYSIS_Audio.md](../../audio_topology/ANALYSIS_Audio.md)
diff --git a/kernel-src/README.md b/kernel-src/README.md
index b624368d5e..c382b3b76a 100644
--- a/kernel-src/README.md
+++ b/kernel-src/README.md
@@ -12,7 +12,7 @@ mv ~/kernel-src/linux-hwe-6.17-6.17.0 kernel-src/
`linux-hwe-6.17-6.17.0/`
-在 **Ubuntu 24.04 (Noble)** 上推荐在本目录下拉源码(与 `docs/WORK_PROGRESS.md` 一致):
+在 **Ubuntu 24.04 (Noble)** 上推荐在本目录下拉源码(与 `docs/meta/WORK_PROGRESS.md` 一致):
```bash
cd /path/to/chromebox_10th_audio_driver/kernel-src
@@ -36,8 +36,8 @@ export SRC="$PWD/linux-hwe-6.17-6.17.0"
../scripts/ubuntu-hwe-617-build.sh build
```
-补丁设计与 ChromeOS 深度 diff 流程见 `../docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md`、`../patches/ubuntu-hwe-6.17/README.md`。
+补丁设计与 ChromeOS 深度 diff 流程见 `../docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`、`../patches/ubuntu-hwe-6.17/README.md`。
-编译成功后,deb 通常在本目录(`kernel-src/`)。**在目标机上安装与重启**的完整说明见:[docs/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md](../docs/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md)(含 `linux-base` 依赖、`linux-image-unsigned` 与 Secure Boot、可选 headers/DKMS)。
+编译成功后,deb 通常在本目录(`kernel-src/`)。**在目标机上安装与重启**的完整说明见:[docs/kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md](../docs/kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md)(含 `linux-base` 依赖、`linux-image-unsigned` 与 Secure Boot、可选 headers/DKMS)。
根目录 `.gitignore` 已忽略 `linux-hwe-6.17-*` 与 `*.orig.tar.*` 等,换机后请在本目录重新 `apt source`。
diff --git a/patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt b/patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt
index 21e13660c6..9b06d4ca80 100644
--- a/patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt
+++ b/patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt
@@ -16,13 +16,14 @@ API 备忘(阅读 ChromeOS 树时仍有用)
新补丁设计策略
==============
-1. 拉长 ChromeOS 内核历史:chromiumos_kernel/v5.15 若曾为浅克隆,需 git fetch --unshallow(见 docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md)。
+1. 拉长 ChromeOS 内核历史:chromiumos_kernel/v5.15 若曾为浅克隆,需 git fetch --unshallow(见 docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md)。
2. 优先对照与 STREAM_PCM_PARAMS / hw_params 相关的文件(相对 6.17 源码树):
- sound/soc/sof/ipc3.c
- sound/soc/sof/pcm.c
- sound/soc/sof/intel/hda-dai.c
-3. 全目录差异规模与优先文件列表:docs/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md;一键统计:scripts/diff-chromeos-ubuntu-sound.sh
+3. 全目录差异规模与优先文件列表:docs/meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md;一键统计:scripts/diff-chromeos-ubuntu-sound.sh
4. 导出三文件 unified diff:scripts/export-chromeos-ubuntu-sound-file-diffs.sh(输出默认在 reference/,已 gitignore)
+5. 两棵树预检并一键跑 3+4:scripts/preflight-chromeos-ubuntu-diff.sh
Smoke-test(对象文件级,待新补丁目标文件确定后把路径换成实际改动文件)
====================================================================
@@ -52,4 +53,4 @@ STREAM_PCM_PARAMS 专项(Chrome 5.15 vs 6.17)
- 详细对照与可移植假设:同目录 STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md
- 摘要:ipc3-pcm.c 的 hw_params 载荷填充与 5.15 语义一致;hda-pcm.c 有 dspless/format_val 分支差异;
hda-dai.c 整文件架构差异大,不宜无依据移植。
-- 本阶段未新增 0002:见 docs/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md。
+- 本阶段未新增 0002:见 docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md。
diff --git a/patches/ubuntu-hwe-6.17/README.md b/patches/ubuntu-hwe-6.17/README.md
index e0d4ebab5a..9d63e1d26e 100644
--- a/patches/ubuntu-hwe-6.17/README.md
+++ b/patches/ubuntu-hwe-6.17/README.md
@@ -15,4 +15,4 @@
4. 编译见 [`kernel-src/README.md`](../../kernel-src/README.md) 与 [`scripts/ubuntu-hwe-617-build.sh`](../../scripts/ubuntu-hwe-617-build.sh)。
-设计补丁前请先完成 ChromeOS 5.15 与 6.17 的对照流程,见 [`docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md`](../../docs/OPERATION_ChromeOS_Kernel_Deep_Diff.md) 与 [`DIFF_SUMMARY.txt`](DIFF_SUMMARY.txt)。**`STREAM_PCM_PARAMS` / HDMI** 专项结论见 [`STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md`](STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md)。
+设计补丁前请先完成 ChromeOS 5.15 与 6.17 的对照流程,见 [`docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`](../../docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md) 与 [`DIFF_SUMMARY.txt`](DIFF_SUMMARY.txt)。**`STREAM_PCM_PARAMS` / HDMI** 专项结论见 [`STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md`](STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md)。
diff --git a/patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md b/patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md
index a185a113ae..e34a1e6c5a 100644
--- a/patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md
+++ b/patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md
@@ -42,4 +42,4 @@
## 4. 与仓库补丁的关系
- **0001**(`ipc3-pcm.c` FREE/trigger 等):**不改变** `STREAM_PCM_PARAMS` 发送路径;与本文第 1 节一致。
-- **0002**:本阶段 **未新增** 内核补丁;理由见 `docs/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md`(无单一明确 hunk,优先观测与上游复现)。
+- **0002**:本阶段 **未新增** 内核补丁;理由见 `docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md`(无单一明确 hunk,优先观测与上游复现)。
diff --git a/scripts/collect-kaisa-sof-trace.sh b/scripts/collect-kaisa-sof-trace.sh
index 3646a3b335..ef30454168 100755
--- a/scripts/collect-kaisa-sof-trace.sh
+++ b/scripts/collect-kaisa-sof-trace.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# Kaisa:辅助开启 SOF IPC 观测并采集 dmesg(需在真机以 root 运行)
-# 详见 docs/OPERATION_Kaisa_SOF_HDMI_Trace.md
+# 详见 docs/linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md
set -euo pipefail
diff --git a/scripts/linux-hdmi-followup-workflow.sh b/scripts/linux-hdmi-followup-workflow.sh
new file mode 100755
index 0000000000..86a11a9605
--- /dev/null
+++ b/scripts/linux-hdmi-followup-workflow.sh
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+# 0001 或用户态基线之后仍无声时:深度 diff / 上游复现 的入口(对应计划 todo「if-still-broken」)。
+set -euo pipefail
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
+CH="${CH:-$REPO_ROOT/chromiumos_kernel/v5.15}"
+
+echo "=== 文档(按顺序)==="
+echo " $REPO_ROOT/docs/kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md"
+echo " $REPO_ROOT/patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md"
+echo " $REPO_ROOT/patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt"
+echo " $REPO_ROOT/docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md"
+echo ""
+echo "=== 导出 ChromeOS vs 6.17 关键文件 diff(需两棵完整树)==="
+if [[ -d "$CH/sound/soc" ]]; then
+ "$REPO_ROOT/scripts/export-chromeos-ubuntu-sound-file-diffs.sh" || true
+else
+ echo "跳过: 未找到 ChromiumOS 5.15 树 CH=$CH"
+ echo "克隆说明见: $REPO_ROOT/docs/meta/WORK_PROGRESS.md"
+fi
+echo ""
+UB="$REPO_ROOT/kernel-src/linux-hwe-6.17-6.17.0"
+echo "=== 音频子树差异统计(需 CH + $UB/sound/soc)==="
+if [[ ! -d "$UB/sound/soc" ]]; then
+ echo "跳过: Ubuntu 树无 sound/soc(请准备 kernel-src)"
+elif [[ ! -d "$CH/sound/soc" ]]; then
+ echo "跳过: 无 ChromiumOS 树 $CH/sound/soc(见 WORK_PROGRESS.md)"
+else
+ CH="$CH" UB="$UB" "$REPO_ROOT/scripts/diff-chromeos-ubuntu-sound.sh"
+fi
diff --git a/scripts/preflight-chromeos-ubuntu-diff.sh b/scripts/preflight-chromeos-ubuntu-diff.sh
new file mode 100755
index 0000000000..7bf470c24e
--- /dev/null
+++ b/scripts/preflight-chromeos-ubuntu-diff.sh
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+# 预检 ChromiumOS 5.15 与 Ubuntu HWE 6.17 两棵树是否存在,存在则运行 diff + export。
+set -euo pipefail
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
+CH="${CH:-$REPO_ROOT/chromiumos_kernel/v5.15}"
+UB="${UB:-$REPO_ROOT/kernel-src/linux-hwe-6.17-6.17.0}"
+ok=1
+if [[ ! -d "$CH/sound/soc" ]]; then
+ echo "缺少 ChromiumOS 树: $CH/sound/soc — 见 docs/meta/WORK_PROGRESS.md 第二节"
+ ok=0
+fi
+if [[ ! -d "$UB/sound/soc" ]]; then
+ echo "缺少 Ubuntu 源码树: $UB/sound/soc — 见 kernel-src/README.md"
+ ok=0
+fi
+if [[ "$ok" -ne 1 ]]; then
+ echo "预检失败。补全后重跑: $0"
+ exit 1
+fi
+CH="$CH" UB="$UB" "$REPO_ROOT/scripts/diff-chromeos-ubuntu-sound.sh"
+CH="$CH" UB="$UB" "$REPO_ROOT/scripts/export-chromeos-ubuntu-sound-file-diffs.sh"
+echo "OK."
diff --git a/scripts/verify-ubuntu-hwe617-0001-patch.sh b/scripts/verify-ubuntu-hwe617-0001-patch.sh
new file mode 100755
index 0000000000..d987bfa329
--- /dev/null
+++ b/scripts/verify-ubuntu-hwe617-0001-patch.sh
@@ -0,0 +1,40 @@
+#!/usr/bin/env bash
+# Dry-run 验证 patches/ubuntu-hwe-6.17/0001 能否打在 HWE 6.17 源码树上(无需完整 debian/)。
+# 完整 deb 构建仍须按 kernel-src/README.md apt source 后使用 ubuntu-hwe-617-build.sh。
+set -euo pipefail
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
+SRC="${SRC:-$REPO_ROOT/kernel-src/linux-hwe-6.17-6.17.0}"
+PATCH="${PATCH:-$REPO_ROOT/patches/ubuntu-hwe-6.17/0001-ASoC-SOF-ipc3-pcm-await-DSP-reply-for-FREE-and-trigger.patch}"
+
+if [[ ! -f "$SRC/sound/soc/sof/ipc3-pcm.c" ]]; then
+ echo "ERROR: 未找到 $SRC/sound/soc/sof/ipc3-pcm.c(请设置 SRC= 或按 kernel-src/README.md 准备源码树)" >&2
+ exit 1
+fi
+if [[ ! -f "$PATCH" ]]; then
+ echo "ERROR: 补丁不存在: $PATCH" >&2
+ exit 1
+fi
+
+echo "SRC=$SRC"
+echo "PATCH=$PATCH"
+if [[ -f "$SRC/debian/rules" ]]; then
+ echo "OK: 检测到 debian/rules,可进行 fakeroot debian/rules binary-generic"
+else
+ echo "注意: 当前树无 debian/(常见于仅检出部分内核目录);补丁校验仍可进行,完整包需 apt source linux-hwe-6.17"
+fi
+
+cd "$SRC"
+set +e
+out="$(patch -p1 --dry-run --forward < "$PATCH" 2>&1)"
+st=$?
+set -e
+if [[ "$st" -eq 0 ]]; then
+ echo "OK: patch --dry-run 通过(干净树可执行 ubuntu-hwe-617-build.sh apply)"
+elif echo "$out" | grep -qiE 'previously applied|Reversed \(or previously applied\) patch detected'; then
+ echo "OK: 当前 ipc3-pcm.c 已包含该补丁内容(无需重复 apply)"
+else
+ echo "$out" >&2
+ echo "ERROR: dry-run 失败,请核对内核版本是否与补丁目标一致" >&2
+ exit 1
+fi