From: Alex Deucher alexander.deucher@amd.com
[ Upstream commit 3cf06bd4cf2512d564fdb451b07de0cebe7b138d ]
Add PCI IDs to support display probe for cyan skillfish family of SOCs.
Acked-by: Harry Wentland harry.wentland@amd.com Signed-off-by: Alex Deucher alexander.deucher@amd.com Signed-off-by: Sasha Levin sashal@kernel.org ---
LLM Generated explanations, may be completely bogus:
YES
- What it changes - Adds additional Cyan Skillfish PCI IDs in `drivers/gpu/drm/amd/display/include/dal_asic_id.h` next to the existing ones: currently only `DEVICE_ID_NV_13FE` and `DEVICE_ID_NV_143F` exist at drivers/gpu/drm/amd/display/include/dal_asic_id.h:214-215; the commit introduces `DEVICE_ID_NV_13F9`, `DEVICE_ID_NV_13FA`, `DEVICE_ID_NV_13FB`, `DEVICE_ID_NV_13FC`, and `DEVICE_ID_NV_13DB`. - Extends the NV-family DC version mapping in `drivers/gpu/drm/amd/display/dc/core/dc_resource.c` so that these new IDs are treated as DCN 2.01 devices. Today, NV defaults to DCN 2.0 and only switches to DCN 2.01 for `13FE` and `143F` (drivers/gpu/drm/amd/display/dc/core/dc_resource.c:166-171). The patch adds the new IDs to that conditional.
- Why it matters - DC’s internal behavior depends on the detected `dce_version`. There are explicit code paths for DCN 2.01 that differ from DCN 2.0: - Clock manager constructs a DCN 2.01-specific manager when `ctx->dce_version == DCN_VERSION_2_01` (drivers/gpu/drm/amd/display/dc/clk_mgr/clk_mgr.c:270-275). - GPIO factory initialization distinguishes DCN 2.01 from 2.0 (drivers/gpu/drm/amd/display/dc/gpio/hw_factory.c:92-98). - BIOS command table helper includes DCN 2.01 handling (drivers/gpu/ drm/amd/display/dc/bios/command_table_helper2.c:70-76). - DCN 2.01 has special bandwidth/cstate behavior (drivers/gpu/drm/amd/display/dc/dml/dcn20/dcn20_fpu.c:1231-1234). - Without mapping these new Cyan Skillfish device IDs to DCN 2.01, display probe and initialization may follow the wrong DC path (DCN 2.0 default in `FAMILY_NV`) and fail or misconfigure the hardware. The commit message explicitly states it’s needed “to support display probe for cyan skillfish family of SOCs.”
- Scope and risk - Small, contained change: adds five ID macros and extends a single conditional check. No architectural refactors; no ABI or uAPI changes. - Regression risk is minimal: the new condition only triggers for the newly added PCI IDs; existing devices and code paths remain unchanged. - Security impact: none; this is purely device-ID-based enablement/mapping.
- Stable backport considerations - This is a targeted fix enabling correct display bring-up on additional SKUs of an already supported SOC family; it does not introduce features beyond enabling hardware that should have worked. - There is no “Cc: stable” or “Fixes:” tag, but DRM/amdgpu routinely backports safe device-ID additions. - Dependency note: For this to have practical effect, the corresponding PCI IDs must be present in the amdgpu PCI device table (see existing entries for Cyan Skillfish at drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c:2174-2176). If those new IDs are not yet present in the target stable branch, this change is inert but harmless; ideally backport together with the PCI table additions.
- Conclusion - It fixes a real user-visible issue (display probe on additional Cyan Skillfish variants) with minimal, low-risk changes confined to the AMD display subsystem. This is an appropriate and safe candidate for stable backport.
drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 8 +++++++- drivers/gpu/drm/amd/display/include/dal_asic_id.h | 5 +++++ 2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c index 4d6181e7c612b..d712548b1927d 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c @@ -165,7 +165,13 @@ enum dce_version resource_parse_asic_id(struct hw_asic_id asic_id)
case FAMILY_NV: dc_version = DCN_VERSION_2_0; - if (asic_id.chip_id == DEVICE_ID_NV_13FE || asic_id.chip_id == DEVICE_ID_NV_143F) { + if (asic_id.chip_id == DEVICE_ID_NV_13FE || + asic_id.chip_id == DEVICE_ID_NV_143F || + asic_id.chip_id == DEVICE_ID_NV_13F9 || + asic_id.chip_id == DEVICE_ID_NV_13FA || + asic_id.chip_id == DEVICE_ID_NV_13FB || + asic_id.chip_id == DEVICE_ID_NV_13FC || + asic_id.chip_id == DEVICE_ID_NV_13DB) { dc_version = DCN_VERSION_2_01; break; } diff --git a/drivers/gpu/drm/amd/display/include/dal_asic_id.h b/drivers/gpu/drm/amd/display/include/dal_asic_id.h index 5fc29164e4b45..8aea50aa95330 100644 --- a/drivers/gpu/drm/amd/display/include/dal_asic_id.h +++ b/drivers/gpu/drm/amd/display/include/dal_asic_id.h @@ -213,6 +213,11 @@ enum { #endif #define DEVICE_ID_NV_13FE 0x13FE // CYAN_SKILLFISH #define DEVICE_ID_NV_143F 0x143F +#define DEVICE_ID_NV_13F9 0x13F9 +#define DEVICE_ID_NV_13FA 0x13FA +#define DEVICE_ID_NV_13FB 0x13FB +#define DEVICE_ID_NV_13FC 0x13FC +#define DEVICE_ID_NV_13DB 0x13DB #define FAMILY_VGH 144 #define DEVICE_ID_VGH_163F 0x163F #define DEVICE_ID_VGH_1435 0x1435