]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amd/display: Fix RMCM programming seq errors
authorYihan Zhu <Yihan.Zhu@amd.com>
Tue, 27 May 2025 20:47:40 +0000 (16:47 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 18 Jun 2025 17:06:31 +0000 (13:06 -0400)
[WHY & HOW]
Fix RMCM programming sequence errors and mapping issues to pass the RMCM
test.

Cc: Mario Limonciello <mario.limonciello@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Dmytro Laktyushkin <dmytro.laktyushkin@amd.com>
Signed-off-by: Yihan Zhu <Yihan.Zhu@amd.com>
Signed-off-by: Alex Hung <alex.hung@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 11baa4975025033547f45f5894087a0dda6efbb8)
Cc: stable@vger.kernel.org
drivers/gpu/drm/amd/display/dc/dml2/dml21/src/dml2_core/dml2_core_dcn4_calcs.c

index c4dad7164d31432a72ba03c93d04937e6075424a..5b62cd19d9796a4b4a36110682367e1b67c3224a 100644 (file)
@@ -4685,7 +4685,10 @@ static void calculate_tdlut_setting(
        //the tdlut is fetched during the 2 row times of prefetch.
        if (p->setup_for_tdlut) {
                *p->tdlut_groups_per_2row_ub = (unsigned int)math_ceil2((double) *p->tdlut_bytes_per_frame / *p->tdlut_bytes_per_group, 1);
-               *p->tdlut_opt_time = (*p->tdlut_bytes_per_frame - p->cursor_buffer_size * 1024) / tdlut_drain_rate;
+               if (*p->tdlut_bytes_per_frame > p->cursor_buffer_size * 1024)
+                       *p->tdlut_opt_time = (*p->tdlut_bytes_per_frame - p->cursor_buffer_size * 1024) / tdlut_drain_rate;
+               else
+                       *p->tdlut_opt_time = 0;
                *p->tdlut_drain_time = p->cursor_buffer_size * 1024 / tdlut_drain_rate;
                *p->tdlut_bytes_to_deliver = (unsigned int) (p->cursor_buffer_size * 1024.0);
        }