Files
chromebox_10th_audio_driver/docs/linux-hdmi/SOURCE_DIFF_CHROMEOS515_UBUNTU617.md
2026-04-05 13:24:31 +08:00

8.1 KiB
Raw Blame History

ChromiumOS 5.15 与 Ubuntu HWE 6.17 源码对比分析HDMI / SOF / 板级)

体例../meta/DOCUMENTATION_STYLE.md单文件 API 对照set_idisp_hdmi_linkCHROMEOS_VS_UBUNTU_HDMI_NOTES.mdSTREAM_PCM_PARAMS 三文件链STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md

本文汇总两树上与 Kaisa / sof-rt5682 / iDisp 相关的 diff -u 可读结论,并指向 reference/ 与专项笔记。

对照树(相对仓库根)

路径
ChromiumOS 5.15 chromiumos_kernel/v5.15/
Ubuntu HWE 6.17 kernel-src/linux-hwe-6.17-6.17.0/

重新生成 diff(路径以本机为准):

./scripts/export-boards-chrome-ubuntu-diff.sh
./scripts/export-chromeos-ubuntu-sound-file-diffs.sh
# 输出默认patches/ubuntu-hwe-6.17/reference/(可能被 .gitignore

1. 参考文件体量(行数)

reference/diff-u_*.txtwc -l数量级(随双树版本略有浮动):

文件 约行数 主题
diff-u_sound_soc_intel_boards_sof_board_helpers.c.txt ~360 板级 helperDAI link、ctx、dpcm_*playback_only/capture_only、新增 HDA 外置 codec 链
diff-u_sound_soc_intel_boards_sof_rt5682.c.txt ~720 sof_rt5682quirk 位域迁到公共头、DMI 表、Rex 行、codec_init/hw_params
diff-u_sound_soc_sof_ipc3-pcm.c.txt ~170 IPC3 PCMasoc_substream_to_rtdsnd_soc_substream_to_rtd、日志与载荷可观测性
diff-u_sound_soc_sof_ipc3.c.txt ~290 IPC3 核心(与 PCM/流控相邻)
diff-u_sound_soc_sof_pcm.c.txt ~690 SOF 通用 pcm.c
diff-u_sound_soc_sof_intel_hda-dai.c.txt ~1365 HDA DAI / Link DMA5.15 与 6.17 架构级差异,非逐行可移植

2. sof_board_helpers.c:行为与 API 迁移

  • 5.15Chromestruct snd_soc_dai_link 仍大量使用 dpcm_playback / dpcm_capture
  • 6.17:上游已统一为 playback_only / capture_only(语义对应,见 include/sound/soc.h)。

对 HDMI 的含义set_idisp_hdmi_link 在 5.15 为 dpcm_playback = 1,在 6.17 为 playback_only = 1把旧标志名机械写回 6.17 补丁。

2.2 6.17 新增能力(与 Kaisa 无直接冲突)

  • SOF_LINK_HDAset_hda_codec_link()Analog/DigitalHDA 外置 codec 相关 widget/routehda_init 等),在 calculate_num_links / sof_intel_board_set_dai_link 中增加分支。
  • 与 iDisp HDMIset_idisp_hdmi_link()CPU=iDispN Pin、codec=ehdaudio0D2/intel-hdmi-hifiN 结构在两边仍可对齐阅读;差异主要在 周边DPCM 标志名、EXPORT、模块 NS

2.3 辅助符号重构

  • 5.15:导出 get_codec_dai_by_name()
  • 6.17:改为 sof_intel_board_get_ctx(),在 ctx 中解析 board_quirkhdmi_num(默认 3SSP 端口BT offloadHDMI-In mask 等,与 KERNEL_SRC_LINUX_HWE617_HDMI_3.5MM_PATHS.md 一致。

2.4 类型与头文件

  • Codec/AMP 类型由 enum sof_ssp_codec + sof_ssp_get_codec_name 等,迁为 enum snd_soc_acpi_intel_codec + snd_soc_acpi_intel_get_codec_nameACPI 匹配层统一)。

3. sof_rt5682.cquirk 模型与 Google Rex

3.1 Quirk 位域

  • 5.15:本文件内自定义 SOF_RT5682_SSP_CODECSOF_RT5682_NUM_HDMIDEVSOF_BT_OFFLOAD_SSP 等宏。
  • 6.17:上述位移入 sof_board_helpers.h 等公共定义:SOF_SSP_PORT_CODECSOF_NUM_IDISP_HDMISOF_SSP_PORT_BT_OFFLOADSOF_BT_OFFLOAD_PRESENT 等,避免 machine 驱动各自重复。

3.2 DMI 表差异

  • 部分 5.15 独有 条目(如 Google_Hatch、部分 Ice Lake)在 6.17 上游 可能被合并、移动或删除;以 diff-u_sound_soc_intel_boards_sof_rt5682.c.txt 为准。
  • Google_Rex
    • 5.15 常显式带 SOF_RT5682_NUM_HDMIDEV(3)(或等价位域)。
    • 6.17 Rex 行往往 不写 SOF_NUM_IDISP_HDMI,依赖 sof_intel_board_get_ctx() 默认 hdmi_num = 3(与 KERNEL_SRC_LINUX_HWE617_HDMI_3.5MM_PATHS.md 小结一致)。

3.3 codec_init / hw_params

  • MCLK / legacy:由直接测 sof_rt5682_quirk & SOF_RT5682_MCLK_BYTCHT_EN,改为 ctx->rt5682.is_legacy_cpuctx 字段(更清晰,利于多板共用)。

4. ipc3-pcm.cIPC 载荷与仓库补丁

  • APIasoc_substream_to_rtdsnd_soc_substream_to_rtd(上游重命名)。
  • STREAM_PCM_PARAMS 填充struct sof_ipc_pcm_params 各字段语义 在两边 一致(详见 STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md §1
  • 6.17 上游 已增加 spcm_dbg、可选 SOF_DBG_DUMP_IPC_MESSAGE_PAYLOAD 下的字段摘要(与仓库 0002 诊断思路同向)。
  • FREE / trigger5.15 使用 sof_ipc_tx_message 等待回复 的路径与 Ubuntu 原版 no_reply 差异,由仓库 0001 对齐;不改变 hw_params / STREAM_PCM_PARAMS 构造逻辑(见 DIFF_SUMMARY.txt)。

5. hda-dai.c:为何不宜整文件移植

  • 5.15:以 hda_pipe_paramshda_check_fes 等为中心的传统 link/stream 路径。
  • 6.17:引入 hda_dai_config()tplg_ops->dai_configLink DMAhda_dai_widget_dma_opsget_hlink / get_hext_stream / snd_hdac_ext_bus_link_set_stream_id 等),并配合 IPC4 头文件DSpless 等分支。

结论~千行量级 unified diff 表明 整文件 backport 不可行;排查 HDMI 应 针对具体函数(如 hda_link_dma_hw_params)与 trace,见 STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md §3、§6。


6. 与专项文档的映射

主题 文档
STREAM_PCM_PARAMS / hda-pcm format_val / 下一刀优先级 STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md
补丁说明、0001/0002/0003、smoke 对象文件 DIFF_SUMMARY.txtpatches/ubuntu-hwe-6.17/README.md
sound/soc 自动对照摘要 meta/CHROMEOS_vs_UBUNTU617_SOUND_AUTODIFF.md
ChromeOS 5.15 单树路径笔记 CHROMEOS_KAISA_AUDIO_KERNEL_PATHS.md
HWE 6.17 单树路径笔记 KERNEL_SRC_LINUX_HWE617_HDMI_3.5MM_PATHS.md
路线图与修复阶段 Linux_HDMI_Audio_Roadmap.md
可执行修复计划(阶段 AD、决策分支 FIX_PLAN_HDMI_FROM_SOURCE_ANALYSIS.md

7. 小结

层次 Chrome 5.15 vs Ubuntu 6.17
板级 HDMI/SSP 逻辑同构iDispNSSP-Codec),差异主要是 ASoC 标志名quirk 宏归属6.17 额外 HDA 外置 codec 链
IPC3 STREAM_PCM_PARAMS 载荷构造一致;差异在 日志与诊断;行为修复见 0001FREE/trigger非 hw_params 盲改
HDA Link DMA 架构重写;仅宜 点状 对照与实验,见 STREAM_PCM_PARAMS 笔记 §6

以上与「先用户态基线 → 0001 自编内核 → hda-dai/trace/上游」的仓库路线图一致;逐步执行见 FIX_PLAN_HDMI_FROM_SOURCE_ANALYSIS.md