Default Ubuntu source tree (not in git): ../../kernel-src/linux-hwe-6.17-6.17.0/ 当前仓库补丁:0001-ASoC-SOF-ipc3-pcm-await-DSP-reply-for-FREE-and-trigger.patch 修改 sound/soc/sof/ipc3-pcm.c:PCM FREE 与 trigger 使用 sof_ipc_tx_message() + struct sof_ipc_reply(对齐 ChromiumOS 5.15;原 Ubuntu 使用 no_reply)。 应用:PATCH=$PWD/patches/ubuntu-hwe-6.17/0001-....patch ../scripts/ubuntu-hwe-617-build.sh apply 补丁应在细读 ChromeOS 5.15 与 6.17 差异后再写(本 0001 为对照 ipc3-pcm 后的最小移植)。 API 备忘(阅读 ChromeOS 树时仍有用) ==================================== - ChromeOS 5.15 的 struct snd_soc_dai_link 使用 dpcm_playback / dpcm_capture。 - Ubuntu HWE 6.17(上游)已改名为 playback_only / capture_only(见 include/sound/soc.h)。 - ChromeOS set_idisp_hdmi_link 里用 dpcm_playback=1;6.17 对应语义为 playback_only=1。 不要把 0001 那类「写回 dpcm_playback」应用到 6.17。 新补丁设计策略 ============== 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/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(对象文件级,待新补丁目标文件确定后把路径换成实际改动文件) ==================================================================== cd kernel-src/linux-hwe-6.17-6.17.0 make x86_64_defconfig && make prepare SKIP_STACK_VALIDATION=1 # 候选(与 HDMI/SOF IPC 链相关,按需选用): # make sound/soc/sof/ipc3.o # make sound/soc/sof/pcm.o # make sound/soc/sof/intel/hda-dai.o 全量 Ubuntu 包:fakeroot debian/rules binary-generic(需 apt build-dep、大盘与时间)。 Kaisa 真机验证(安装 deb 并重启后) ------------------------------------ 1. uname -r 2. aplay -L | head -80 3. speaker-test -D plughw:卡号,设备号 -c 2 -l 1 4. sudo dmesg | grep -iE 'sof|STREAM_PCM|ipc failed|pcm[0-9]' | tail -60 5. 输出保存到 audio_topology/collected/ 补丁验收流程(简图) -------------------- unshallow -> git log (sound paths) -> diff ipc3/pcm/hda-dai -> 最小假设 -> 新补丁 -> make *.o -> binary-generic 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/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md。