diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2540-drm-amd-display-Set-test-pattern-on-blank-when-using.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2540-drm-amd-display-Set-test-pattern-on-blank-when-using.patch | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2540-drm-amd-display-Set-test-pattern-on-blank-when-using.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2540-drm-amd-display-Set-test-pattern-on-blank-when-using.patch new file mode 100644 index 00000000..d8a0f059 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2540-drm-amd-display-Set-test-pattern-on-blank-when-using.patch @@ -0,0 +1,138 @@ +From 145224e26319c45040919fe5039b055307e75634 Mon Sep 17 00:00:00 2001 +From: Joshua Aberback <joshua.aberback@amd.com> +Date: Mon, 29 Apr 2019 17:27:12 -0400 +Subject: [PATCH 2540/2940] drm/amd/display: Set test pattern on blank when + using Visual Confirm + +[Why] +We want a test pattern to show up on screen when we're blanked and have +visual confirm enabled, for debugging. Raven does this, it's a mistake that +Navi does not. + +[How] + - in "blank_pixel_data", set appropriate DPG pattern for visual confirm + - refactor DPG calls out of "enable_stream_timing" + +Signed-off-by: Joshua Aberback <joshua.aberback@amd.com> +Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> +Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + .../drm/amd/display/dc/dcn20/dcn20_hwseq.c | 53 ++++--------------- + 1 file changed, 11 insertions(+), 42 deletions(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c +index f9b0ea75eeb4..f788a39a1df1 100644 +--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c ++++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c +@@ -679,13 +679,8 @@ enum dc_status dcn20_enable_stream_timing( + struct dc *dc) + { + struct dc_stream_state *stream = pipe_ctx->stream; +- enum dc_color_space color_space; +- struct tg_color black_color = {0}; + struct drr_params params = {0}; + unsigned int event_triggers = 0; +- int width = stream->timing.h_addressable + stream->timing.h_border_left + stream->timing.h_border_right; +- int height = stream->timing.v_addressable + stream->timing.v_border_bottom + stream->timing.v_border_top; +- enum controller_dp_test_pattern dpg_pattern = CONTROLLER_DP_TEST_PATTERN_SOLID_COLOR; + + + #if defined(CONFIG_DRM_AMD_DC_DCN2_0) +@@ -734,44 +729,16 @@ enum dc_status dcn20_enable_stream_timing( + pipe_ctx->stream_res.tg->funcs->setup_global_lock( + pipe_ctx->stream_res.tg); + +- /* program otg blank color */ +- color_space = stream->output_color_space; +- color_space_to_black_color(dc, color_space, &black_color); +- +- if (odm_pipe) { +- +- if (dc->debug.visual_confirm != VISUAL_CONFIRM_DISABLE) +- dpg_pattern = CONTROLLER_DP_TEST_PATTERN_COLORRAMP; +- +- width /= 2; +- ++ if (odm_pipe) + odm_pipe->stream_res.opp->funcs->opp_pipe_clock_control( + odm_pipe->stream_res.opp, + true); + +- odm_pipe->stream_res.opp->funcs->opp_set_disp_pattern_generator( +- odm_pipe->stream_res.opp, +- dpg_pattern, +- stream->timing.display_color_depth, +- &black_color, +- width, +- height); +- } +- +- if (dc->debug.visual_confirm != VISUAL_CONFIRM_DISABLE) +- dpg_pattern = CONTROLLER_DP_TEST_PATTERN_COLORSQUARES; +- + pipe_ctx->stream_res.opp->funcs->opp_pipe_clock_control( + pipe_ctx->stream_res.opp, + true); + +- pipe_ctx->stream_res.opp->funcs->opp_set_disp_pattern_generator( +- pipe_ctx->stream_res.opp, +- dpg_pattern, +- stream->timing.display_color_depth, +- &black_color, +- width, +- height); ++ dc->hwss.blank_pixel_data(dc, pipe_ctx, true); + + /* VTG is within DCHUB command block. DCFCLK is always on */ + if (false == pipe_ctx->stream_res.tg->funcs->enable_crtc(pipe_ctx->stream_res.tg)) { +@@ -1022,19 +989,17 @@ void dcn20_blank_pixel_data( + struct pipe_ctx *pipe_ctx, + bool blank) + { +- enum dc_color_space color_space; + struct tg_color black_color = {0}; + struct stream_resource *stream_res = &pipe_ctx->stream_res; + struct dc_stream_state *stream = pipe_ctx->stream; ++ enum dc_color_space color_space = stream->output_color_space; + enum controller_dp_test_pattern test_pattern = CONTROLLER_DP_TEST_PATTERN_SOLID_COLOR; + struct pipe_ctx *bot_odm_pipe = dc_res_get_odm_bottom_pipe(pipe_ctx); + +- + int width = stream->timing.h_addressable + stream->timing.h_border_left + stream->timing.h_border_right; + int height = stream->timing.v_addressable + stream->timing.v_border_bottom + stream->timing.v_border_top; + +- /* program opp dpg blank color */ +- color_space = stream->output_color_space; ++ /* get opp dpg blank color */ + color_space_to_black_color(dc, color_space, &black_color); + + if (bot_odm_pipe) +@@ -1043,9 +1008,12 @@ void dcn20_blank_pixel_data( + if (blank) { + if (stream_res->abm) + stream_res->abm->funcs->set_abm_immediate_disable(stream_res->abm); +- } else +- test_pattern = CONTROLLER_DP_TEST_PATTERN_VIDEOMODE; + ++ if (dc->debug.visual_confirm != VISUAL_CONFIRM_DISABLE) ++ test_pattern = CONTROLLER_DP_TEST_PATTERN_COLORSQUARES; ++ } else { ++ test_pattern = CONTROLLER_DP_TEST_PATTERN_VIDEOMODE; ++ } + + stream_res->opp->funcs->opp_set_disp_pattern_generator( + stream_res->opp, +@@ -1058,7 +1026,8 @@ void dcn20_blank_pixel_data( + if (bot_odm_pipe) { + bot_odm_pipe->stream_res.opp->funcs->opp_set_disp_pattern_generator( + bot_odm_pipe->stream_res.opp, +- test_pattern, ++ dc->debug.visual_confirm != VISUAL_CONFIRM_DISABLE ? ++ CONTROLLER_DP_TEST_PATTERN_COLORRAMP : test_pattern, + stream->timing.display_color_depth, + &black_color, + width, +-- +2.17.1 + |