]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amd/display: Save addr update in scratch before flip
authorAlvin Lee <alvin.lee2@amd.com>
Fri, 11 Aug 2023 20:59:48 +0000 (16:59 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 30 Aug 2023 19:01:27 +0000 (15:01 -0400)
[Why & How]
Fix a minor sequencing issue where the address update for
a subvp flip should be saved in scratch registers before
the actual flip

Reviewed-by: Austin Zheng <austin.zheng@amd.com>
Acked-by: Wayne Lin <wayne.lin@amd.com>
Signed-off-by: Alvin Lee <alvin.lee2@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/core/dc_hw_sequencer.c

index a50df7126e39afd3a21c14e59bc515b93fb306c8..fe07160932d6960ad88cc28c24bc06675b16f019 100644 (file)
@@ -528,11 +528,6 @@ void hwss_build_fast_sequence(struct dc *dc,
                                (*num_steps)++;
                        }
                        if (dc->hwss.update_plane_addr && current_mpc_pipe->plane_state->update_flags.bits.addr_update) {
-                               block_sequence[*num_steps].params.update_plane_addr_params.dc = dc;
-                               block_sequence[*num_steps].params.update_plane_addr_params.pipe_ctx = current_mpc_pipe;
-                               block_sequence[*num_steps].func = HUBP_UPDATE_PLANE_ADDR;
-                               (*num_steps)++;
-
                                if (resource_is_pipe_type(current_mpc_pipe, OTG_MASTER) &&
                                                current_mpc_pipe->stream->mall_stream_config.type == SUBVP_MAIN) {
                                        block_sequence[*num_steps].params.subvp_save_surf_addr.dc_dmub_srv = dc->ctx->dmub_srv;
@@ -541,6 +536,11 @@ void hwss_build_fast_sequence(struct dc *dc,
                                        block_sequence[*num_steps].func = DMUB_SUBVP_SAVE_SURF_ADDR;
                                        (*num_steps)++;
                                }
+
+                               block_sequence[*num_steps].params.update_plane_addr_params.dc = dc;
+                               block_sequence[*num_steps].params.update_plane_addr_params.pipe_ctx = current_mpc_pipe;
+                               block_sequence[*num_steps].func = HUBP_UPDATE_PLANE_ADDR;
+                               (*num_steps)++;
                        }
 
                        if (hws->funcs.set_input_transfer_func && current_mpc_pipe->plane_state->update_flags.bits.gamma_change) {