66 lines
4.0 KiB
Plaintext
66 lines
4.0 KiB
Plaintext
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)。
|
||
0002-ASoC-SOF-ipc3-pcm-dump-STREAM_PCM_PARAMS-fields.patch
|
||
修改 sound/soc/sof/ipc3-pcm.c:在 STREAM_PCM_PARAMS 发送前,当 sof_debug 含
|
||
SOF_DBG_DUMP_IPC_MESSAGE_PAYLOAD(bit 11,十进制 2048)时 spcm_dbg 打印字段摘要(诊断,不改载荷)。
|
||
应用:先 0001 再 0002,各执行一次
|
||
PATCH=$PWD/patches/ubuntu-hwe-6.17/0001-....patch ../scripts/ubuntu-hwe-617-build.sh apply
|
||
PATCH=$PWD/patches/ubuntu-hwe-6.17/0002-....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 prepare 报缺少 dwarf.h:sudo apt install libdw-dev(已列入 scripts/ubuntu-hwe-617-deps-packages.txt
|
||
# 与 scripts/ubuntu-hwe-617-build.sh 的 deps 命令)
|
||
# 可选:cp /boot/config-$(uname -r) .config && make olddefconfig
|
||
make x86_64_defconfig && make prepare SKIP_STACK_VALIDATION=1
|
||
make sound/soc/sof/ipc3-pcm.o
|
||
# 其它候选(与 HDMI/SOF IPC 链相关,按需选用):
|
||
# make sound/soc/sof/ipc3.o sound/soc/sof/pcm.o sound/soc/sof/intel/hda-dai.o
|
||
# 单独 make sound/soc/sof/snd-sof.ko 在无完整 vmlinux/modpost 链时通常会失败;要可加载 .ko 请走 make modules 或 debian/rules。
|
||
|
||
全量 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 为诊断补丁(STREAM_PCM_PARAMS 字段 spcm_dbg),见同目录 0002-*.patch 与 README.md;行为性修复仍见 docs/linux-hdmi/UPSTREAM_SOF_Kaisa_HDMI_REPRO.md。
|