mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-02-16 23:36:09 -05:00
drm/amd/display: Avoid calling blank_stream() twice
[Why] We've made fix for garbage in dcn31_reset_back_end_for_pipe(), adding blank_stream() before disable_crtc(). And set_dpms_off() will call blank_stream() again. [How] Add flag to avoid calling blank_stream() twice. Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Signed-off-by: Zhongwei Zhang <Zhongwei.Zhang@amd.com> Signed-off-by: Wayne Lin <wayne.lin@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
893f07452b
commit
747bfca45e
@@ -1221,6 +1221,9 @@ void dce110_blank_stream(struct pipe_ctx *pipe_ctx)
|
||||
struct dc_link *link = stream->link;
|
||||
struct dce_hwseq *hws = link->dc->hwseq;
|
||||
|
||||
if (hws && hws->wa_state.skip_blank_stream)
|
||||
return;
|
||||
|
||||
if (link->local_sink && link->local_sink->sink_signal == SIGNAL_TYPE_EDP) {
|
||||
if (!link->skip_implict_edp_power_control)
|
||||
hws->funcs.edp_backlight_control(link, false);
|
||||
|
||||
@@ -526,9 +526,15 @@ static void dcn31_reset_back_end_for_pipe(
|
||||
|
||||
link = pipe_ctx->stream->link;
|
||||
|
||||
if (dc->hwseq)
|
||||
dc->hwseq->wa_state.skip_blank_stream = false;
|
||||
|
||||
if ((!pipe_ctx->stream->dpms_off || link->link_status.link_active) &&
|
||||
(link->connector_signal == SIGNAL_TYPE_EDP))
|
||||
(link->connector_signal == SIGNAL_TYPE_EDP)) {
|
||||
dc->hwss.blank_stream(pipe_ctx);
|
||||
if (dc->hwseq)
|
||||
dc->hwseq->wa_state.skip_blank_stream = true;
|
||||
}
|
||||
|
||||
pipe_ctx->stream_res.tg->funcs->set_dsc_config(
|
||||
pipe_ctx->stream_res.tg,
|
||||
@@ -570,7 +576,8 @@ static void dcn31_reset_back_end_for_pipe(
|
||||
pipe_ctx->stream_res.audio = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (dc->hwseq)
|
||||
dc->hwseq->wa_state.skip_blank_stream = false;
|
||||
pipe_ctx->stream = NULL;
|
||||
DC_LOG_DEBUG("Reset back end for pipe %d, tg:%d\n",
|
||||
pipe_ctx->pipe_idx, pipe_ctx->stream_res.tg->inst);
|
||||
|
||||
@@ -49,6 +49,7 @@ struct hwseq_wa_state {
|
||||
bool DEGVIDCN10_253_applied;
|
||||
bool disallow_self_refresh_during_multi_plane_transition_applied;
|
||||
unsigned int disallow_self_refresh_during_multi_plane_transition_applied_on_frame;
|
||||
bool skip_blank_stream;
|
||||
};
|
||||
|
||||
struct pipe_ctx;
|
||||
|
||||
Reference in New Issue
Block a user