aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorTimur Kristóf <timur.kristof@gmail.com>2025-08-28 17:11:07 +0200
committerAlex Deucher <alexander.deucher@amd.com>2025-09-02 15:55:28 -0400
commitce025130127437dc884c84c254170e27b2ce9309 (patch)
tree6ba651e7b24accdd09f15d4e9b6410cd99829ae4 /drivers/gpu
parentdrm/amd/pm: Fix si_upload_smc_data (v3) (diff)
downloadlinux-ce025130127437dc884c84c254170e27b2ce9309.tar.gz
linux-ce025130127437dc884c84c254170e27b2ce9309.zip
drm/amd/pm: Adjust si_upload_smc_data register programming (v3)
Based on some comments in dm_pp_display_configuration above the crtc_index and line_time fields, these values are programmed to the SMC to work around an SMC hang when it switches MCLK. According to Alex, the Windows driver programs them to: mclk_change_block_cp_min = 200 / line_time mclk_change_block_cp_max = 100 / line_time Let's use the same for the sake of consistency. Previously we used the watermark values, but it seemed buggy as the code was mixing up low/high and A/B watermarks, and was not saving a low watermark value on DCE 6, so mclk_change_block_cp_max would be always zero previously. Split this change off from the previous si_upload_smc_data to make it easier to bisect, in case it causes any issues. Fixes: 841686df9f7d ("drm/amdgpu: add SI DPM support (v4)") Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c b/drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c
index 6736c592dfdc..fb008c5980d6 100644
--- a/drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c
+++ b/drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c
@@ -5833,8 +5833,8 @@ static int si_upload_smc_data(struct amdgpu_device *adev)
crtc_index = amdgpu_crtc->crtc_id;
if (amdgpu_crtc->line_time) {
- mclk_change_block_cp_min = amdgpu_crtc->wm_high / amdgpu_crtc->line_time;
- mclk_change_block_cp_max = amdgpu_crtc->wm_low / amdgpu_crtc->line_time;
+ mclk_change_block_cp_min = 200 / amdgpu_crtc->line_time;
+ mclk_change_block_cp_max = 100 / amdgpu_crtc->line_time;
}
}