]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amd/display: Fix pipe addition logic in calc_blocks_to_ungate DCN35
authorNicholas Susanto <nicholas.susanto@amd.com>
Tue, 7 May 2024 18:01:39 +0000 (14:01 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 20 May 2024 20:20:25 +0000 (16:20 -0400)
[Why]

Missing check for when there is new pipe configuration but both cur_pipe
and new_pipe are both populated causing update_state of DSC for that
instance not being updated correctly.

This causes some display mode changes to cause underflow since DSCCLK
is still gated when the display requires DSC.

[How]

Added another condition in the new pipe addition branch that checks if
there is a new pipe configuration and if it is not the same as cur_pipe.
cur_pipe does not necessarily have to be NULL to go in this branch.

Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Acked-by: Roman Li <roman.li@amd.com>
Signed-off-by: Nicholas Susanto <nicholas.susanto@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/hwss/dcn35/dcn35_hwseq.c

index 6d40e93b5497a85c29a1accd9e0723687b698c3e..2b3ba5971c6924064cdb17fe1ecc1c316bad3e32 100644 (file)
@@ -1097,7 +1097,8 @@ void dcn35_calc_blocks_to_ungate(struct dc *dc, struct dc_state *context,
                        continue;
 
                if ((!cur_pipe->plane_state && new_pipe->plane_state) ||
-                       (!cur_pipe->stream && new_pipe->stream)) {
+                       (!cur_pipe->stream && new_pipe->stream) ||
+                       (cur_pipe->stream != new_pipe->stream && new_pipe->stream)) {
                        // New pipe addition
                        for (j = 0; j < PG_HW_PIPE_RESOURCES_NUM_ELEMENT; j++) {
                                if (j == PG_HUBP && new_pipe->plane_res.hubp)