#!/bin/sh # Re-fetch the reference sources used by the DMCUB analysis. Not tracked: these # are upstream kernel files (1.7 MB), regenerable, and not our work. # # ref/dcn_3_2_0_offset.h AMD register offsets for DCN 3.2 (Navi 31) # ref/dcn_3_2_0_sh_mask.h bitfield shifts/masks (needed by hw/dmcub_hwregs.py) # ref/dmub_cmd.h the host<->DMCUB command ABI # ref/dmub_cmd_v6.17.h same, pinned PRE-deprecation (see the note below) # # NOTE, load-bearing: upstream commit 9a591ae691b5 ("[FW Promotion] Release # 0.1.63.0", 2026-06-05) DELETED command IDs 1-4 (DMUB_CMD__REG_SEQ_*, # DMUB_CMD__REG_REG_WAIT) from `enum dmub_cmd_type` and added "command IDs 1-4 # have been deprecated" -- in an enum whose own comment says "Command IDs should # be treated as stable ABI. Do not reuse or modify IDs." They were documented in # every release from v5.6 through v6.18-rc1, and **every DMUB image in fw/ still # implements and dispatches them**, including DCN 4.0.1 (fw 10.0.4352). # # Fetching only master therefore makes types 1/3/4 look unpublished, which is # exactly the wrong conclusion and is how this tree mislabelled them once. The # pinned v6.17 copy is what the analysis tools should name IDs from. # ref/dmub_srv.c loader: window bases, meta lookup, PSP footer # ref/dmub_dcn32.c DCN 3.2 specific setup (DMCUB_SEC_CNTL, windows) set -e cd "$(dirname "$0")" mkdir -p ref K=https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain D=drivers/gpu/drm/amd for p in \ "$D/include/asic_reg/dcn/dcn_3_2_0_offset.h" \ "$D/include/asic_reg/dcn/dcn_3_2_0_sh_mask.h" \ "$D/display/dmub/inc/dmub_cmd.h" \ "$D/display/dmub/src/dmub_srv.c" \ "$D/display/dmub/src/dmub_dcn32.c" ; do echo "fetch $(basename "$p")" curl -sS -f -o "ref/$(basename "$p")" "$K/$p" done # Pinned pre-deprecation ABI, so IDs 1-4 still have names. See the note above. echo "fetch dmub_cmd_v6.17.h (pinned, pre-deprecation)" curl -sS -f -o ref/dmub_cmd_v6.17.h \ "https://raw.githubusercontent.com/torvalds/linux/v6.17/$D/display/dmub/inc/dmub_cmd.h" # The firmware images themselves (if fw/ was cleaned): # for f in $(sed -n 's#.*dmcub/fw/##p' ../data/MANIFEST.sha256); do # curl -sS -f -O --output-dir fw \ # "https://gitlab.com/kernel-firmware/linux-firmware/-/raw/main/amdgpu/$f" # done