drm/amd/display: unblock abm when odm is enabled only on configs that support it
authorJosip Pavic <Josip.Pavic@amd.com>
Thu, 19 Aug 2021 13:25:22 +0000 (09:25 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 14 Sep 2021 19:57:09 +0000 (15:57 -0400)
[Why]
When ODM is enabled, ABM is blocked on dcn31 but unblocked on dcn30.

Since the dcn31 firmware is now able to handle ABM interop with ODM, it
is no longer necessary to block ABM when ODM is enabled.

Since the dcn30 firmware does not handle ABM interop with ODM, leaving
that combination unblocked can lead to one side of the screen appearing
brighter than the other.

[How]
When ODM is enabled, unblock abm on dcn31 and block it on dcn30

Reviewed-by: Anthony Koo <anthony.koo@amd.com>
Acked-by: Mikita Lipski <mikita.lipski@amd.com>
Signed-off-by: Josip Pavic <Josip.Pavic@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/dcn30/dcn30_init.c
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hwseq.c
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_init.c

index 3a5b53dd2f6d9d347969b3795b15cf78bbea3de0..93f32a312fee89142462de41ce5c788b8db8940b 100644 (file)
@@ -100,6 +100,7 @@ static const struct hw_sequencer_funcs dcn30_funcs = {
        .set_disp_pattern_generator = dcn30_set_disp_pattern_generator,
        .get_dcc_en_bits = dcn10_get_dcc_en_bits,
        .update_visual_confirm_color = dcn20_update_visual_confirm_color,
+       .is_abm_supported = dcn21_is_abm_supported
 };
 
 static const struct hwseq_private_funcs dcn30_private_funcs = {
index 7feba8a0d8477ebb8897dbace6d8c72c7cc8ed03..2434232fb3f52df871e6329a530ee619521bd479 100644 (file)
@@ -595,18 +595,3 @@ void dcn31_reset_hw_ctx_wrap(
                }
        }
 }
-
-bool dcn31_is_abm_supported(struct dc *dc,
-               struct dc_state *context, struct dc_stream_state *stream)
-{
-       int i;
-
-       for (i = 0; i < dc->res_pool->pipe_count; i++) {
-               struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[i];
-
-               if (pipe_ctx->stream == stream &&
-                               (pipe_ctx->prev_odm_pipe == NULL && pipe_ctx->next_odm_pipe == NULL))
-                       return true;
-       }
-       return false;
-}
index 40011cd3c8ef0c11c189c0932bc7a61c674aa7cb..10c83f4083b561349d90064ee431696689d7574a 100644 (file)
@@ -98,7 +98,6 @@ static const struct hw_sequencer_funcs dcn31_funcs = {
        .set_pipe = dcn21_set_pipe,
        .z10_restore = dcn31_z10_restore,
        .z10_save_init = dcn31_z10_save_init,
-       .is_abm_supported = dcn31_is_abm_supported,
        .set_disp_pattern_generator = dcn30_set_disp_pattern_generator,
        .update_visual_confirm_color = dcn20_update_visual_confirm_color,
 };