53 lines
1.8 KiB
Bash
Executable File
53 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# Kaisa:对 hda_link_dma_hw_params / snd_hdac_ext_bus_link_set_stream_id / sof_ipc3_pcm_hw_params
|
||
# 做 function_graph 追踪(需 root、CONFIG_FUNCTION_GRAPH、debugfs 已挂载)。
|
||
# 用法:sudo ./scripts/collect-hda-link-ftrace.sh [plughw:0,3]
|
||
# 产出:/tmp/hda_link_ftrace_<ts>.txt;请复制到 audio_topology/collected/
|
||
# 详见 patches/ubuntu-hwe-6.17/STREAM_PCM_PARAMS_CHROME_UBUNTU_NOTES.md §6.1
|
||
set -euo pipefail
|
||
|
||
if [[ "${EUID:-}" -ne 0 ]]; then
|
||
echo "请使用 sudo 运行。" >&2
|
||
exit 1
|
||
fi
|
||
|
||
PLUG="${1:-plughw:0,3}"
|
||
TRACING="${TRACING:-/sys/kernel/tracing}"
|
||
if [[ ! -d "$TRACING" ]]; then
|
||
TRACING="/sys/kernel/debug/tracing"
|
||
fi
|
||
if [[ ! -d "$TRACING" ]]; then
|
||
echo "未找到 tracing($TRACING)。请确认 CONFIG_FTRACE。" >&2
|
||
exit 1
|
||
fi
|
||
|
||
TS=$(date +%Y%m%d_%H%M%S)
|
||
KR=$(uname -r)
|
||
OUT="/tmp/hda_link_ftrace_${KR}_${TS}.txt"
|
||
|
||
echo "tracing dir: $TRACING"
|
||
echo 0 > "$TRACING/tracing_on" 2>/dev/null || true
|
||
echo function_graph > "$TRACING/current_tracer"
|
||
echo 'hda_link_dma_hw_params' > "$TRACING/set_ftrace_filter"
|
||
echo 'snd_hdac_ext_bus_link_set_stream_id' >> "$TRACING/set_ftrace_filter"
|
||
echo 'sof_ipc3_pcm_hw_params' >> "$TRACING/set_ftrace_filter"
|
||
echo 1 > "$TRACING/options/funcgraph-proc" 2>/dev/null || true
|
||
: > "$TRACING/trace"
|
||
|
||
echo 1 > "$TRACING/tracing_on"
|
||
echo "播放: speaker-test -D $PLUG -c 2 -t wav -l 1 (约 8s)"
|
||
timeout 10 speaker-test -D "$PLUG" -c 2 -t wav -l 1 >/dev/null 2>&1 || true
|
||
echo 0 > "$TRACING/tracing_on"
|
||
|
||
{
|
||
echo "### uname -r: $KR"
|
||
echo "### plughw: $PLUG"
|
||
echo "### ftrace filter:"
|
||
cat "$TRACING/set_ftrace_filter" 2>/dev/null || true
|
||
echo "### trace:"
|
||
cat "$TRACING/trace"
|
||
} > "$OUT"
|
||
|
||
echo "已写入: $OUT ($(wc -l < "$OUT") 行)"
|
||
echo "复制到仓库: cp $OUT /path/to/chromebox_10th_audio_driver/audio_topology/collected/"
|