Commit 747bfca4 authored by Zhongwei Zhang's avatar Zhongwei Zhang Committed by Alex Deucher
Browse files

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: default avatarNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Signed-off-by: default avatarZhongwei Zhang <Zhongwei.Zhang@amd.com>
Signed-off-by: default avatarWayne Lin <wayne.lin@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 893f0745
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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);
+9 −2
Original line number Diff line number Diff line
@@ -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);
+1 −0
Original line number Diff line number Diff line
@@ -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;