更新源码
This commit is contained in:
57
docs/linux-hdmi/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md
Normal file
57
docs/linux-hdmi/CHROMEOS_VS_UBUNTU_HDMI_NOTES.md
Normal file
@@ -0,0 +1,57 @@
|
||||
# ChromeOS 5.15 与 Ubuntu HWE 6.17:HDMI / iDisp 链路对照(Kaisa)
|
||||
|
||||
本仓库在 `chromiumos_kernel/v5.15/` 下可对照 **ChromeOS 内核**(`release-R144-16503.B-chromeos-5.15`),与 **`kernel-src/linux-hwe-6.17-6.17.0/`**(Noble 源码包)中同一文件:
|
||||
|
||||
`sound/soc/intel/boards/sof_board_helpers.c` → `set_idisp_hdmi_link()`
|
||||
|
||||
---
|
||||
|
||||
## 一、共同点(两端逻辑一致的部分)
|
||||
|
||||
- 链接名 `iDisp%d`、CPU `iDisp%d Pin`、codec `ehdaudio0D2` + `intel-hdmi-hifi%d`(当 `idisp_codec` 为真时)与 `sof_board_helpers` 里其它平台字段一致。
|
||||
- `link->no_pcm = 1;`,HDMI 为 **BE 链路**。
|
||||
|
||||
---
|
||||
|
||||
## 二、关键差异(API 演进,不是简单“抄一行”)
|
||||
|
||||
### ChromeOS 5.15(旧 `struct snd_soc_dai_link`)
|
||||
|
||||
- 使用 **`link->dpcm_playback = 1;`**(当时 DPCM 字段名)。
|
||||
|
||||
### 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)。
|
||||
|
||||
---
|
||||
|
||||
## 三、后续补丁方向(原 0001/0002 已移除)
|
||||
|
||||
曾尝试在 `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`** 等上的差异后再设计,流程见 [`../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)。
|
||||
|
||||
---
|
||||
|
||||
## 四、建议的本地 diff 命令(只读对照)
|
||||
|
||||
在仓库根目录:
|
||||
|
||||
```bash
|
||||
diff -u \
|
||||
chromiumos_kernel/v5.15/sound/soc/intel/boards/sof_board_helpers.c \
|
||||
kernel-src/linux-hwe-6.17-6.17.0/sound/soc/intel/boards/sof_board_helpers.c \
|
||||
| less
|
||||
```
|
||||
|
||||
若只关心 iDisp 段,可先在两文件中分别定位 `set_idisp_hdmi_link` 再手动对比。
|
||||
|
||||
---
|
||||
|
||||
## 五、与项目其它文档的关系
|
||||
|
||||
- 三平台现象与 dmesg 要点:`audio_topology/ANALYSIS_Audio.md`
|
||||
- Ubuntu 打包与磁盘、勿混用 `make`/`debian/rules`:`../meta/WORK_PROGRESS.md`
|
||||
- HWE 6.17 构建脚本:`scripts/ubuntu-hwe-617-build.sh`(应用补丁需 **`PATCH=...`**)
|
||||
- ChromeOS 深度 diff 与导出三文件 diff:`../kernel-build/OPERATION_ChromeOS_Kernel_Deep_Diff.md`
|
||||
105
docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md
Normal file
105
docs/linux-hdmi/Linux_HDMI_Audio_Roadmap.md
Normal file
@@ -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) |
|
||||
92
docs/linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md
Normal file
92
docs/linux-hdmi/OPERATION_Kaisa_SOF_HDMI_Trace.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Kaisa:SOF HDMI `STREAM_PCM_PARAMS` 观测(dynamic_debug + IPC 载荷)
|
||||
|
||||
在 **jack-Kaisa 真机**(非本仓库 PVE/容器)上执行。目的:在 `STREAM_PCM_PARAMS` 失败前后看到 **发往 DSP 的 IPC 载荷**(`comp_id`、`buffer`、`stream_tag`、格式等),与拓扑/固件预期对照。
|
||||
|
||||
## 1. 前置条件
|
||||
|
||||
- 内核已加载 SOF(`lsmod | grep snd_sof`)。
|
||||
- `sof_debug` 为 **模块参数**(`sound/soc/sof/core.c`),权限 **0444**:**不能在运行时通过 sysfs 改写**,须在 **`/etc/modprobe.d`** 中设置并在 **下次加载模块前** 生效(推荐 **重启**,或完整卸载 `snd_sof*` 相关模块后按依赖顺序再加载——易踩坑,**优先重启**)。
|
||||
- **IPC 载荷十六进制** 依赖 `SOF_DBG_DUMP_IPC_MESSAGE_PAYLOAD`(`sof-priv.h` 中 **BIT(11)**,即 **0x800** 或十进制 **2048**)。载荷通过 `dev_dbg` / `print_hex_dump_debug` 输出,需同时打开 **dynamic_debug**(见下)。
|
||||
|
||||
## 2. 固定 `sof_debug`(载荷 dump)
|
||||
|
||||
创建或编辑(需 root):
|
||||
|
||||
`/etc/modprobe.d/sof-ipc-payload.conf`
|
||||
|
||||
```
|
||||
# BIT(11): SOF_DBG_DUMP_IPC_MESSAGE_PAYLOAD — 在 IPC 头发送后 dump 载荷(见 sound/soc/sof/sof-priv.h)
|
||||
options snd_sof sof_debug=0x800
|
||||
```
|
||||
|
||||
若需叠加其它标志,用按位或,例如同时打印 IPC 成功路径(可能较吵):
|
||||
|
||||
```
|
||||
# options snd_sof sof_debug=0x800
|
||||
```
|
||||
|
||||
保存后 **重启**,确认:
|
||||
|
||||
```bash
|
||||
cat /sys/module/snd_sof/parameters/sof_debug
|
||||
# 期望:2048 或 0x800
|
||||
```
|
||||
|
||||
## 3. dynamic_debug(使 `dev_dbg` 进入 dmesg)
|
||||
|
||||
挂载 debugfs(通常已挂载):
|
||||
|
||||
```bash
|
||||
sudo mount -t debugfs none /sys/kernel/debug 2>/dev/null || true
|
||||
```
|
||||
|
||||
对 6.17 源码树中常见路径开启打印(路径以 **当前内核构建** 为准,下列与 Ubuntu HWE 6.17 树一致):
|
||||
|
||||
```bash
|
||||
sudo bash -c 'for f in \
|
||||
sound/soc/sof/ipc3.c \
|
||||
sound/soc/sof/ipc3-pcm.c \
|
||||
sound/soc/sof/intel/hda-pcm.c \
|
||||
sound/soc/sof/intel/hda-dai.c; do
|
||||
echo "file $f +p" >> /sys/kernel/debug/dynamic_debug/control
|
||||
done'
|
||||
```
|
||||
|
||||
若某行报错「Unknown」,用下面命令查看本内核实际注册的 `file` 名后替换:
|
||||
|
||||
```bash
|
||||
grep -E "ipc3-pcm|hda-pcm|hda-dai" /sys/kernel/debug/dynamic_debug/control | head -20
|
||||
```
|
||||
|
||||
## 4. 采集流程(失败前后各一段)
|
||||
|
||||
1. 清屏旧日志(可选):`sudo dmesg -C`
|
||||
2. 记录物理口:`aplay -L | grep -iE 'hdmi|hdmi3|pcm'`
|
||||
3. 对目标设备播放(示例,卡号/设备号按本机改):
|
||||
`speaker-test -D plughw:0,4 -c 2 -l 1`
|
||||
或使用 PipeWire/设置界面切到对应 HDMI sink,以触发 `hw_params`。
|
||||
4. 立刻保存:
|
||||
|
||||
```bash
|
||||
TS=$(date +%Y%m%d_%H%M%S)
|
||||
KR=$(uname -r)
|
||||
sudo dmesg -T > "/tmp/dmesg_sof_TRACE_STREAM_PCM_PARAMS_jack-Kaisa_${KR}_${TS}.txt"
|
||||
```
|
||||
|
||||
5. 将文件复制到本仓库 **`audio_topology/collected/`**(可 scp),并在 `../meta/WORK_PROGRESS.md` 或 `REANALYSIS_Linux_HDMI_Audio_Kaisa.md` 中加一行文件名索引。
|
||||
|
||||
## 5. 日志中应关注的内容
|
||||
|
||||
- `STREAM_PCM_PARAMS` / `ipc tx error` / `stream_tag`
|
||||
- `Message payload:` / `print_hex_dump` 块中的 **`comp_id`**、buffer 物理地址与长度、**`stream_tag`**、rate/channels/format
|
||||
- 与 `audio_topology/ANALYSIS_Audio.md` 中 **pcm2/3/4 ↔ HDMI1/2/3** 的对应关系是否一致
|
||||
|
||||
## 6. 相关脚本
|
||||
|
||||
- `scripts/collect-kaisa-sof-trace.sh`:在本机检查 root、挂载 debugfs、写入 dynamic_debug、提示 `modprobe.d` 与采集命令。
|
||||
|
||||
## 7. 参考(源码)
|
||||
|
||||
- `sound/soc/sof/sof-priv.h`:`SOF_DBG_DUMP_IPC_MESSAGE_PAYLOAD`(BIT 11)
|
||||
- `sound/soc/sof/ipc3.c`:`sof_ipc_tx_message` 内对载荷的 `sof_ipc3_dump_payload`
|
||||
- `sound/soc/sof/ipc3-pcm.c`:`sof_ipc3_pcm_hw_params` 填充 `struct sof_ipc_pcm_params`
|
||||
270
docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md
Normal file
270
docs/linux-hdmi/REANALYSIS_Linux_HDMI_Audio_Kaisa.md
Normal file
@@ -0,0 +1,270 @@
|
||||
# Kaisa(Chromebox 10 代)Linux HDMI 音频:重新分析与修复路径
|
||||
|
||||
本文在已有采集与对照结论基础上,**合并真机后续结果**(含:自编 HWE 6.17、历史 HDMI 补丁实验、安装方式与 WiFi 回归等),重新整理「问题是什么、什么已基本排除、下一步该怎么试」。
|
||||
|
||||
**仍请以以下为权威细节**:
|
||||
|
||||
- 三平台对比与 dmesg:`audio_topology/ANALYSIS_Audio.md`
|
||||
- 总修复顺序与文档索引:`audio_topology/REPAIR_Plan_Audio.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`
|
||||
|
||||
---
|
||||
|
||||
## 一、现象(Linux 侧)
|
||||
|
||||
- 机器:**Google Kaisa**,Coreboot 环境;声卡为 **SOF + `sof-rt5682`** 一类拓扑,HDMI 走 **iDisp / DisplayPort 音频** 链路。
|
||||
- **3.5mm**:Linux 上通常 **正常**。
|
||||
- **HDMI**:Linux 上 **无输出或无法稳定打开 PCM**;历史 dmesg 典型为 **`STREAM_PCM_PARAMS` IPC 失败、约 -5(EIO)**,常与 **pcm2/3/4(HDMI1/2/3)** 中某几条相关(物理口与 pcm 编号需实测对照)。
|
||||
- **对照**:同机 **ChromeOS(5.15 内核)HDMI 正常**;**Windows HDMI 正常**。说明硬件与显示器链路整体可用,**问题集中在 Linux 内核/SOF/用户态路由**,而非「线坏了」一类。
|
||||
|
||||
---
|
||||
|
||||
## 二、已基本排除或证明「单独不够」的方向
|
||||
|
||||
| 方向 | 结论 | 依据(仓库内) |
|
||||
|------|------|----------------|
|
||||
| **拓扑 tplg** | 与 ChromeOS **等效**(解压后规模一致、端点一致) | `ANALYSIS_Audio.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」** |
|
||||
|
||||
**重要区分**:**ChromeOS 上正常的「5.15」** 是 **Google 定制内核 + CRAS + 其配置/补丁**;**Ubuntu Mainline 的 5.15** 是 **Vanilla 主线 + 与 Noble 用户态/固件/模块集合的组合**,**二者不能等同**。因此在 Mainline 5.15 上「HDMI 仍坏 + 其它输出也坏」**并不能推翻**「发行版 6.x 相对某条 Ubuntu/Chrome 5.15 路径在 HDMI 上存在差异」这类判断,只能说明 **单靠换 Mainline 5.15 deb 不是可行修复手段**。
|
||||
|
||||
**推论(修订)**:HDMI 仍优先从 **6.x 下 SOF / Intel / DPCM / iDisp** 与 **Kaisa + Coreboot** 的交互继续查(含上游报 bug、bisect **Ubuntu 或上游 linux.git**);**不要**把「装了 Mainline 5.15」误认为「复现了 ChromeOS 5.15 行为」。
|
||||
|
||||
---
|
||||
|
||||
## 三、自定义内核相关:避免「假阴性」
|
||||
|
||||
在继续改内核前,建议先确认实验条件可靠(否则会出现「补丁无效」误判):
|
||||
|
||||
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 无关的干扰。见 `../kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md`。
|
||||
3. **用户态与物理口**:`aplay -L` 列出所有 HDMI 类设备后,对 **每个候选 `plughw:卡,设备`** 做 `speaker-test`;系统设置里默认输出勿锁死在错误 sink。
|
||||
|
||||
---
|
||||
|
||||
## 四、推荐修复路径(按性价比重排)
|
||||
|
||||
下列顺序在 **不推翻已有结论** 的前提下,把精力集中到最可能见效的方向。
|
||||
|
||||
### 1. 基线采集(每次改内核/固件前后各做一次)
|
||||
|
||||
- `uname -a`、`/proc/version`
|
||||
- `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` 深度):按 **`OPERATION_Kaisa_SOF_HDMI_Trace.md`** 开启 **`sof_debug=0x800`** 与 **dynamic_debug**,将带 IPC 载荷的 dmesg 放入 `audio_topology/collected/`(见同目录 **`README_TRACE_KAISA.md`**)。
|
||||
|
||||
输出放入 `audio_topology/collected/`,文件名带日期与内核版本,便于 diff。
|
||||
|
||||
### 2. 用 **5.15 环境** 做对照时,必须分清「哪一种 5.15」
|
||||
|
||||
**已证阴性(真机)**:在 **Ubuntu 24.04** 上安装 **kernel.ubuntu.com Mainline** 的 **`v5.15.201` deb** 后,**HDMI 仍无声**,且 **3.5mm、WiFi 也异常**。结论:**不要把 Mainline 5.15 当作日常或「验证 ChromeOS 行为」的手段**;装完若无法使用,请 **GRUB 切回 6.17**(并确保 `linux-modules` + `extra` + `iwlwifi` 装全,见安装文档)。
|
||||
|
||||
若仍想做 **「与 6.x 对比的 5.15」**,只剩 **更接近 Ubuntu 完整栈** 的方式才有对照意义(**仍不保证** HDMI 会好,但不会出现「整台机音频+无线全挂」这种明显栈不完整的情况):
|
||||
|
||||
- **Ubuntu 22.04.1 / 22.04.2 Live ISO**(`old-releases`),启动后 **`uname -r` 确认为 `5.15.0-…-generic`**,再测 HDMI / 3.5mm(见 `ANALYSIS_Audio.md` 第六节)。
|
||||
- **与 ChromeOS 对齐**:只能以 **ChromiumOS 内核树 / 真机 ChromeOS** 为参照,而不是 Mainline tarball 内核。
|
||||
|
||||
**若 Ubuntu 5.15 Live 下 HDMI 仍失败**:说明问题**不一定**是「6.x 独有」,可能是 **Coreboot 下通用 Linux + 某类 SOF 拓扑** 与 **CRAS/Chrome 栈** 的差异,更适合走 **上游 issue + dmesg/alsa-info**,而不是继续换 Mainline 版本号。
|
||||
|
||||
### 3. 内核级深度对照(开发者路径)
|
||||
|
||||
在确认要攻 6.x 的前提下:
|
||||
|
||||
- **对照树**:`chromiumos_kernel/v5.15/...` 与 `kernel-src/linux-hwe-6.17-6.17.0/...`
|
||||
- **优先目录**:`sound/soc/sof/`、`sound/soc/intel/boards/`、`sound/soc/intel/common/`、与 **HDMI HDA/iDisp** 相关的 machine 选择与 **DPCM** 配置。
|
||||
- **方法**:从 `STREAM_PCM_PARAMS` / `hw_params` 调用栈出发,在 6.17 上加 `dynamic_debug` 或局部 `pr_debug`,对照 5.15 上同类路径;必要时 **git bisect** 主线内核。
|
||||
|
||||
### 4. 上游协同(与 3 并行)
|
||||
|
||||
向 **SOF / ALSA** 社区提交最小复现包:
|
||||
|
||||
- 机型:**Google Kaisa**、Coreboot、Ubuntu 版本、**内核精确版本**
|
||||
- **完整 dmesg**、**alsa-info**
|
||||
- 说明:**ChromeOS 5.15 同硬件 HDMI 正常**、Linux 6.x `STREAM_PCM_PARAMS -5`
|
||||
- 入口:[thesofproject/sof](https://github.com/thesofproject/sof)、alsa-devel
|
||||
|
||||
### 5. 仍可调参但预期有限的项
|
||||
|
||||
- **SOF / 模块参数**(`snd_sof`/`snd_sof_intel_hda` 等 debug、probe 顺序):多用于佐证,不一定能「一键修好」。
|
||||
- **PipeWire / PulseAudio 配置**:在 IPC -5 已出现在 dmesg 时,**通常不是根因**,但应用层默认 sink 选错会造成「以为完全没声」。
|
||||
|
||||
---
|
||||
|
||||
## 五、结论摘要(给决策用)
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
unshallow[git_unshallow]
|
||||
log[git_log_sound]
|
||||
diff3[diff_ipc3_pcm_hda_dai]
|
||||
hypothesis[minimal_hypothesis]
|
||||
newpatch[new_patch]
|
||||
smoke[make_objects]
|
||||
deb[binary_generic]
|
||||
unshallow --> log --> diff3 --> hypothesis --> newpatch --> smoke --> deb
|
||||
```
|
||||
|
||||
- **HDMI 问题性质**:更可能是 **Linux(尤其 6.x 发行版栈)里 SOF/Intel/iDisp 路径与 Kaisa + Coreboot 的组合问题**;拓扑与「只换一份 SOF 固件」已反复证明**不够**。
|
||||
- **旧 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)** 装全,并保留可启动旧内核。
|
||||
|
||||
---
|
||||
|
||||
## 六、文档维护建议
|
||||
|
||||
若你完成 **5.15 Live** 或 **上游 issue** 链接,可把结果摘要回写到 `../../audio_topology/ANALYSIS_Audio.md`(新增一小节)与 `../meta/WORK_PROGRESS.md` 状态表,避免后人重复踩旧实验补丁/仅装两 deb/unsigned 冲突等坑。
|
||||
|
||||
---
|
||||
|
||||
<a id="appendix-ubuntu-515"></a>
|
||||
|
||||
## 附录:找不到「带 5.15 的 Ubuntu」时怎么办
|
||||
|
||||
很多人只在 **`https://releases.ubuntu.com/22.04/`** 下 ISO,那里永远是**当前 point release**(例如 22.04.5),**往往已是 HWE 6.x**,Live 起来 `uname -r` 不是 5.15,这是正常现象,不是「Ubuntu 没有 5.15」。
|
||||
|
||||
### A. 旧版 Ubuntu 22.04 ISO(推荐做 Live 验证)
|
||||
|
||||
到 **old-releases** 找 **22.04.1 / 22.04.2** 的 desktop amd64(发布时主线内核多为 **5.15**;仍请以启动后 `uname -r` 为准):
|
||||
|
||||
- 22.04.1 目录:<https://old-releases.ubuntu.com/releases/22.04.1/>
|
||||
- 22.04.2 目录:<https://old-releases.ubuntu.com/releases/22.04.2/>
|
||||
- 上一级索引:<https://old-releases.ubuntu.com/releases/22.04/>
|
||||
|
||||
文件名通常为 **`ubuntu-22.04.1-desktop-amd64.iso`** 或 **`ubuntu-22.04.2-desktop-amd64.iso`**。下载后写入 U 盘,**Try Ubuntu**,进系统先执行:
|
||||
|
||||
```bash
|
||||
uname -r
|
||||
```
|
||||
|
||||
**只有**显示 `5.15.0-…-generic` 才说明本次 Live 符合「5.15 验证」前提;若是 `5.19` / `6.x`,换更旧的 point release ISO 或改用下文 B/C。
|
||||
|
||||
### B. 在已安装的 Ubuntu 上装 **Mainline 5.15**(不必找老 ISO)
|
||||
|
||||
> **真机结论(Kaisa / Noble)**:Mainline **`v5.15.201`** 已验证 **HDMI 仍无声**,且 **3.5mm、WiFi 也异常**(相对 6.17 HWE 全量模块栈明显退化)。**不建议**在主力机上长期停留于 Mainline 5.15;下列步骤仅作「如何安装」记录,**决策上请优先 GRUB 回退 6.17**。
|
||||
|
||||
Ubuntu 提供的 **Mainline** 构建(Vanilla 主线内核 deb,**不是**完整 Ubuntu 补丁集,**也不等于** ChromeOS 5.15;与 **Ubuntu 22.04 自带的 5.15.0-xx-generic** 也不是同一套配置/模块切分):
|
||||
|
||||
- 目录索引:<https://kernel.ubuntu.com/~kernel-ppa/mainline/>
|
||||
- 在页面中进入 **`v5.15.x/`**(选**最新**的 5.15 末版即可,例如 **`v5.15.201/`**,以你打开页面时为准)。
|
||||
- 浏览器里列出的 deb 一般在 **`…/v5.15.201/amd64/`**(若目录结构不同,以该版本页实际链接为准)。
|
||||
|
||||
**`v5.15.201` 目录内典型 4 个 deb(与你看到的文件列表一致)**:
|
||||
|
||||
| 文件 | 作用 |
|
||||
|------|------|
|
||||
| `linux-headers-5.15.201-0515201_5.15.201-0515201.*_all.deb` | 头文件(**all**) |
|
||||
| `linux-headers-5.15.201-0515201-generic_5.15.201-0515201.*_amd64.deb` | 头文件(generic) |
|
||||
| `linux-image-unsigned-5.15.201-0515201-generic_5.15.201-0515201.*_amd64.deb` | **内核镜像(未签名)** |
|
||||
| `linux-modules-5.15.201-0515201-generic_5.15.201-0515201.*_amd64.deb` | **内核模块** |
|
||||
|
||||
**最少**:`linux-image-unsigned-*-generic_*_amd64.deb` + `linux-modules-*-generic_*_amd64.deb`。**建议 4 个全下**,再一次性安装,避免头文件依赖提示、并方便 DKMS。
|
||||
|
||||
在 **保留当前可启动内核**(GRUB 里能进 6.17 等)的前提下:
|
||||
|
||||
```bash
|
||||
cd ~/下载/mainline-5.15.201 # deb 所在目录,自行改名
|
||||
sudo dpkg -i \
|
||||
linux-headers-5.15.201-0515201_*.deb \
|
||||
linux-headers-5.15.201-0515201-generic_*.deb \
|
||||
linux-image-unsigned-5.15.201-0515201-generic_*.deb \
|
||||
linux-modules-5.15.201-0515201-generic_*.deb
|
||||
sudo apt-get install -f
|
||||
sudo update-grub
|
||||
sudo reboot
|
||||
```
|
||||
|
||||
重启 → **Advanced options for Ubuntu** → 选 **`5.15.201-0515201-generic`**(以 GRUB 显示为准),然后:
|
||||
|
||||
```bash
|
||||
uname -r
|
||||
# 期望含 5.15.201-0515201-generic
|
||||
```
|
||||
|
||||
**说明**:
|
||||
|
||||
- Mainline **通常没有** Ubuntu HWE 那种 `linux-modules-extra` / `linux-modules-iwlwifi` 分包;多数驱动在 **`linux-modules-…` 一体包**里。
|
||||
- **`linux-image-unsigned`**:开启 **Secure Boot** 时可能无法启动,需关闭或参考 `../kernel-build/OPERATION_Install_CustomKernel_Ubuntu_HWE617.md`。
|
||||
- 务必留好旧内核,以便 GRUB 切回 6.x。
|
||||
|
||||
### C. 其它带 5.15 的 Live(备选)
|
||||
|
||||
例如 **Linux Mint 21.x**(基于 22.04,早期版本默认 **5.15** 内核)的 Cinnamon ISO;启动后同样先 **`uname -r` 确认** 再测 HDMI。
|
||||
|
||||
### D. 验证成功的判据
|
||||
|
||||
- **目标**:在 **确认 5.15** 的前提下,`speaker-test` 或系统声音能在 **HDMI sink** 上出声,且 dmesg 中 **不再出现**(或明显减少)`STREAM_PCM_PARAMS` / `ipc failed` 一类错误。
|
||||
- 把 **`uname -a`、`aplay -L`、dmesg 片段** 存进 `audio_topology/collected/` 便于与 6.17 对比。
|
||||
|
||||
---
|
||||
|
||||
## 七、当前在 **6.17.0-20-generic** 上的建议 + 如何查 **ChromeOS 定制补丁**
|
||||
|
||||
### 7.1 对「jack-Kaisa @ 6.17.0-20」的优先级建议
|
||||
|
||||
- **这是合理的主力内核**:官方 **signed** HWE,模块栈与 Noble 用户态匹配,比自编 unsigned / Mainline 5.15 **更适合日常与排障**。
|
||||
- **先固定一条基线**:在本内核上再采一份 `dmesg`(SOF/HDMI 段)、`aplay -L`、`alsa-info`,命名带 `6.17.0-20`,放进 `audio_topology/collected/`,与旧版 6.17.0-14/19 对比是否 **IPC 行号/PCM 编号** 有变化。
|
||||
- **并行两条线**(不必等 ChromeOS diff 做完才报上游):
|
||||
1. **上游**:用 **6.17.0-20** + Kaisa + Coreboot +「ChromeOS 同机 HDMI 正常」打 **SOF/ALSA** issue 或邮件列表(材料见第四节)。
|
||||
2. **内核 diff**:在本地对 **ChromiumOS 5.15 树** 做 **有范围的 git 历史 / 文件 diff**(见 7.2),找 **与 SOF / Intel / HDMI / CML / rt5682** 相关的提交,再判断能否 **移植到 6.17** 或交给上游。
|
||||
|
||||
### 7.2 查看 ChromeOS **内核**里与音频相关的定制(推荐流程)
|
||||
|
||||
ChromeOS 内核通常是 **v5.15 + 大量提交**;不要指望「一个补丁文件」解决问题,应 **缩小目录 + 看提交说明**。
|
||||
|
||||
1. **拿到树**(见 `../meta/WORK_PROGRESS.md` 第二节),例如本仓库 `chromiumos_kernel/v5.15/`,分支如 `release-R144-16503.B-chromeos-5.15`。
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
4. **只看音频相关路径上的提交**(需 **非浅克隆** 的 ChromeOS 树,见 OPERATION / AUTODIFF 文档):
|
||||
|
||||
```bash
|
||||
cd chromiumos_kernel/v5.15
|
||||
git log --oneline -50 -- sound/soc/sof sound/soc/intel include/sound
|
||||
git log --oneline -30 -- drivers/soundwire
|
||||
```
|
||||
|
||||
若提交太多,可加关键字过滤(效果因提交说明写法而异):
|
||||
|
||||
```bash
|
||||
git log --oneline --grep=sof -- sound/soc/
|
||||
git log --oneline --grep=hdmi -i -- sound/
|
||||
```
|
||||
|
||||
5. **与 Ubuntu 6.17 做「同文件 diff」**(你们已对 `sof_board_helpers.c` 做过;应扩展到 **整段 SOF Intel 链路**)。示例(把路径换成你本机仓库根下的实际位置):
|
||||
|
||||
```bash
|
||||
diff -u \
|
||||
chromiumos_kernel/v5.15/sound/soc/sof/intel/some_file.c \
|
||||
kernel-src/linux-hwe-6.17-6.17.0/sound/soc/sof/intel/some_file.c
|
||||
```
|
||||
|
||||
常用对照目录(两棵树各扫一遍):
|
||||
|
||||
- `sound/soc/sof/`(含 `intel/`、`ipc/`)
|
||||
- `sound/soc/intel/boards/`(machine、`sof_rt5682`、helpers)
|
||||
- `sound/soc/intel/common/`(如有)
|
||||
- 与 **HDA/display** 绑定的 `sound/soc/intel/hda/` 或相关 HDMI 绑定代码
|
||||
|
||||
6. **若有上游 5.15 tag**:可尝试找 ChromeOS 分支与 **linux v5.15.x** 的基线,再列「仅 ChromeOS 多出来的提交」(不同团队合并策略不同,**不一定**有干净 merge-base;若 `git merge-base` 不合理,就以 **按路径 `git log`** 为主)。
|
||||
|
||||
7. **别忽略用户态**:ChromeOS 上播放经 **CRAS**,可能有 **重试 / 设备选择 / 延迟打开** 等与 PipeWire 不同;**内核 diff 找不到差异时**,仍可能出现「同内核逻辑在 CRAS 下正常、在 PW 下触发竞态」。这更支持 **上游 + 双栈对比日志**,而不是无限改 tplg。
|
||||
|
||||
### 7.3 预期与边界
|
||||
|
||||
- **看到 Chrome 的补丁 ≠ 能直接 cherry-pick 到 6.17**:API(如 `playback_only` / `trigger[]`)已变,需 **移植或重写**。
|
||||
- **最有价值**:找到 **与 `STREAM_PCM_PARAMS` / `hw_params` / iDisp BE** 直接相关的提交或函数级差异,再在 6.17 上 **最小复现 + dynamic_debug** 验证。
|
||||
|
||||
若你在 `git log` 里筛出少量可疑 commit hash,可贴出 **hash + 标题**,便于判断下一步是 **port** 还是 **交给上游**。
|
||||
30
docs/linux-hdmi/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md
Normal file
30
docs/linux-hdmi/SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# Kaisa:SOF 固件与拓扑一致性核对(排除 comp_id / 拓扑不匹配)
|
||||
|
||||
目的:在出现 `STREAM_PCM_PARAMS` **-EIO (-5)** 时,确认 **本机加载的固件与 tplg** 与项目基线一致,避免「内核与拓扑/固件版本错配」类问题。
|
||||
|
||||
基线分析见 **`audio_topology/ANALYSIS_Audio.md`**(第四节、第五节)。
|
||||
|
||||
## 在 Kaisa 上采集
|
||||
|
||||
```bash
|
||||
uname -r
|
||||
ls -la /lib/firmware/intel/sof/sof-cml.ri* /lib/firmware/intel/sof/community/sof-cml.ri* 2>/dev/null
|
||||
ls -la /lib/firmware/intel/sof-tplg/sof-cml-rt5682.tplg* 2>/dev/null
|
||||
sudo dmesg | grep -iE 'sof|Firmware|tplg|topology' | tail -80
|
||||
sha256sum /lib/firmware/intel/sof/community/sof-cml.ri.zst 2>/dev/null
|
||||
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 观测结合 | `OPERATION_Kaisa_SOF_HDMI_Trace.md` | 载荷中 **comp_id** 须与 tplg 中对应 PCM 节点一致;若一致仍 -5,偏向 **固件策略或 DSP bug** |
|
||||
|
||||
## 结论引用(已有)
|
||||
|
||||
- 拓扑 **等效**、仅换固件 **非主因**:见 `../../audio_topology/ANALYSIS_Audio.md` 第四节、第五节及 `REANALYSIS_Linux_HDMI_Audio_Kaisa.md`。
|
||||
- 本清单用于 **回归与上游报障时的环境快照**,不替代内核/驱动根因分析。
|
||||
54
docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md
Normal file
54
docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# 上游复现包:Google Kaisa + Linux `STREAM_PCM_PARAMS -5`(HDMI)
|
||||
|
||||
在 **`patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md`** 对照结论下,当前 **无单一、已证实的内核 hunk** 可安全作为 **0002** 提交;优先把下列材料交给 **thesofproject/sof** 或 **alsa-devel**。
|
||||
|
||||
## 1. 硬件与引导
|
||||
|
||||
- 机型:**Google Kaisa**(Chromebox 10 代),Coreboot。
|
||||
- 对照:**同机 ChromeOS HDMI 正常**;**Windows HDMI 正常**(见仓库 `audio_topology/` 与 `REANALYSIS_Linux_HDMI_Audio_Kaisa.md`)。
|
||||
|
||||
## 2. 软件版本(请填真机实测)
|
||||
|
||||
- 发行版:Ubuntu 24.04(或实际版本)
|
||||
- 内核:`uname -r`(例:`6.17.0-19-generic`)
|
||||
- 自编内核:若使用 `linux-image-unsigned-*`,附 `dpkg -l | grep linux-image` 片段
|
||||
|
||||
## 3. 必附日志
|
||||
|
||||
- **完整 `dmesg`**(自开机后或自 `dmesg -C` 后复现一次):至少包含
|
||||
`STREAM_PCM_PARAMS` / `ipc tx error` / `pcm4 (HDMI3)` / `stream_tag` 等行。
|
||||
仓库已有示例:
|
||||
`audio_topology/collected/dmesg_sof_STREAM_PCM_PARAMS_HDMI3_jack-Kaisa_6.17.0-19-generic_20260404.txt`
|
||||
- **`alsa-info` 导出**(或 `aplay -L`、`/proc/asound` 相关片段)。
|
||||
- **可选(强烈建议)**:按 **`OPERATION_Kaisa_SOF_HDMI_Trace.md`** 采集带 **IPC 载荷十六进制** 的 dmesg,放入 `audio_topology/collected/` 并附文件名。
|
||||
|
||||
## 4. 固件与拓扑快照
|
||||
|
||||
按 **`SOF_FIRMWARE_TOPO_Kaisa_CHECKLIST.md`** 附:`dmesg` 中固件/tplg 路径、`sha256sum` 结果。
|
||||
|
||||
## 5. 已尝试且不足以单独修复的方向(避免重复提问)
|
||||
|
||||
- 仅替换 intel-signed / community SOF 固件:**HDMI 仍失败**(见 `ANALYSIS_Audio.md`)。
|
||||
- 与 Chrome 拓扑 **等效**(解压规模一致):见同一文档。
|
||||
- **`ipc3-pcm.c` 0001 类补丁**(FREE/trigger 回复路径):**不改变** `STREAM_PCM_PARAMS` 发送逻辑(见 `patches/ubuntu-hwe-6.17/DIFF_SUMMARY.txt` 与 `STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md`)。
|
||||
|
||||
## 6. 邮件/ Issue 正文模板(可复制)
|
||||
|
||||
```
|
||||
Subject: [SOF/IPC3] Google Kaisa: STREAM_PCM_PARAMS returns -EIO on HDMI (pcm4/iDisp)
|
||||
|
||||
Hardware: Google Kaisa (Chromebox), Coreboot. Same machine: ChromeOS HDMI OK.
|
||||
|
||||
Kernel: <uname -r> (Ubuntu ...)
|
||||
|
||||
Problem: On HDMI playback, SOF IPC3 fails at STREAM_PCM_PARAMS:
|
||||
sof_ipc3_pcm_hw_params: pcm4 (HDMI3), ... ipc tx error for 0x60010000
|
||||
|
||||
Attached: dmesg, alsa-info, firmware/tplg paths and sha256.
|
||||
|
||||
Already ruled out: topology equivalence vs ChromeOS; swapping intel-signed vs community FW alone;
|
||||
ipc3 FREE/trigger reply-path patches do not affect PARAMS.
|
||||
|
||||
Request: guidance whether firmware-side rejection vs kernel platform_params (stream_tag/comp_id)
|
||||
— IPC payload capture with sof_debug=0x800 available on request.
|
||||
```
|
||||
Reference in New Issue
Block a user