]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
drm/amd/pm/smu7: Fix SMU7 voltage dependency on display clock
authorTimur Kristóf <timur.kristof@gmail.com>
Sun, 29 Mar 2026 16:03:00 +0000 (18:03 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 30 Mar 2026 20:45:22 +0000 (16:45 -0400)
commit0138610c14130425be53423b35336561829965e0
treef45a3047fb50589b9b2a336d0bdab84a2f59a9fd
parent9851f29cb06c09f7dad3867d8b0feec3fc71b6c8
drm/amd/pm/smu7: Fix SMU7 voltage dependency on display clock

The DCE (display controller engine) requires a minimum voltage
in order to function correctly, depending on which clock level
it currently uses.

Add a new table that contains display clock frequency levels
and the corresponding required voltages. The clock frequency
levels are taken from DC (and the old radeon driver's voltage
dependency table for CI in cases where its values were lower).
The voltage levels are taken from the following function:
phm_initializa_dynamic_state_adjustment_rule_settings().
Furthermore, in case of CI, call smu7_patch_vddc() on the new
table to account for leakage voltage (like in radeon).

Use the display clock value from amd_pp_display_configuration
to look up the voltage level needed by the DCE. Send the
voltage to the SMU via the PPSMC_MSG_VddC_Request command.

The previous implementation of this feature was non-functional
because it relied on a "dal_power_level" field which was never
assigned; and it was not at all implemented for CI ASICs.

I verified this on a Radeon R9 M380 which previously booted to
a black screen with DC enabled (default since Linux 6.19), but
now works correctly.

Fixes: 599a7e9fe1b6 ("drm/amd/powerplay: implement smu7 hwmgr to manager asics with smu ip version 7.")
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c
drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h