Commit 41b49742 authored by Charlene Liu's avatar Charlene Liu Committed by Alex Deucher
Browse files

drm/amd/display: eDP sequence BL off first then DP blank.

parent cf5e4a67
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -1279,13 +1279,12 @@ static enum dc_status enable_link_edp(
	enum dc_status status;
	struct dc_stream_state *stream = pipe_ctx->stream;
	struct dc_link *link = stream->sink->link;

	/*in case it is not on*/
	link->dc->hwss.edp_power_control(link, true);
	link->dc->hwss.edp_wait_for_hpd_ready(link, true);

	status = enable_link_dp(state, pipe_ctx);

	link->dc->hwss.edp_backlight_control(link, true);

	return status;
}
@@ -2309,7 +2308,6 @@ void core_link_enable_stream(
	if (pipe_ctx->stream->signal == SIGNAL_TYPE_DISPLAY_PORT_MST)
		allocate_mst_payload(pipe_ctx);

	if (dc_is_dp_signal(pipe_ctx->stream->signal))
		core_dc->hwss.unblank_stream(pipe_ctx,
			&pipe_ctx->stream->sink->link->cur_link_settings);
}
@@ -2321,8 +2319,7 @@ void core_link_disable_stream(struct pipe_ctx *pipe_ctx, int option)
	if (pipe_ctx->stream->signal == SIGNAL_TYPE_DISPLAY_PORT_MST)
		deallocate_mst_payload(pipe_ctx);

	if (pipe_ctx->stream->signal == SIGNAL_TYPE_EDP)
		core_dc->hwss.edp_backlight_control(pipe_ctx->stream->sink->link, false);
	core_dc->hwss.blank_stream(pipe_ctx);

	core_dc->hwss.disable_stream(pipe_ctx, option);

+3 −0
Original line number Diff line number Diff line
@@ -821,6 +821,9 @@ void dce110_link_encoder_hw_init(
	cntl.coherent = false;
	cntl.hpd_sel = enc110->base.hpd_source;

	if (enc110->base.connector.id == CONNECTOR_ID_EDP)
		cntl.signal = SIGNAL_TYPE_EDP;

	result = link_transmitter_control(enc110, &cntl);

	if (result != BP_RESULT_OK) {
+21 −1
Original line number Diff line number Diff line
@@ -989,12 +989,31 @@ void dce110_unblank_stream(struct pipe_ctx *pipe_ctx,
		struct dc_link_settings *link_settings)
{
	struct encoder_unblank_param params = { { 0 } };
	struct dc_stream_state *stream = pipe_ctx->stream;
	struct dc_link *link = stream->sink->link;

	/* only 3 items below are used by unblank */
	params.pixel_clk_khz =
		pipe_ctx->stream->timing.pix_clk_khz;
	params.link_settings.link_rate = link_settings->link_rate;

	if (dc_is_dp_signal(pipe_ctx->stream->signal))
		pipe_ctx->stream_res.stream_enc->funcs->dp_unblank(pipe_ctx->stream_res.stream_enc, &params);

	if (link->local_sink && link->local_sink->sink_signal == SIGNAL_TYPE_EDP)
		link->dc->hwss.edp_backlight_control(link, true);
}
void dce110_blank_stream(struct pipe_ctx *pipe_ctx)
{
	struct encoder_unblank_param params = { { 0 } };
	struct dc_stream_state *stream = pipe_ctx->stream;
	struct dc_link *link = stream->sink->link;

	if (link->local_sink && link->local_sink->sink_signal == SIGNAL_TYPE_EDP)
		link->dc->hwss.edp_backlight_control(link, false);

	if (dc_is_dp_signal(pipe_ctx->stream->signal))
		pipe_ctx->stream_res.stream_enc->funcs->dp_blank(pipe_ctx->stream_res.stream_enc);
}


@@ -2911,6 +2930,7 @@ static const struct hw_sequencer_funcs dce110_funcs = {
	.enable_stream = dce110_enable_stream,
	.disable_stream = dce110_disable_stream,
	.unblank_stream = dce110_unblank_stream,
	.blank_stream = dce110_blank_stream,
	.enable_display_pipe_clock_gating = enable_display_pipe_clock_gating,
	.enable_display_power_gating = dce110_enable_display_power_gating,
	.disable_plane = dce110_power_down_fe,
+1 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ void dce110_disable_stream(struct pipe_ctx *pipe_ctx, int option);
void dce110_unblank_stream(struct pipe_ctx *pipe_ctx,
		struct dc_link_settings *link_settings);

void dce110_blank_stream(struct pipe_ctx *pipe_ctx);
void dce110_update_info_frame(struct pipe_ctx *pipe_ctx);

void dce110_set_avmute(struct pipe_ctx *pipe_ctx, bool enable);
+1 −0
Original line number Diff line number Diff line
@@ -2308,6 +2308,7 @@ static const struct hw_sequencer_funcs dcn10_funcs = {
	.enable_stream = dce110_enable_stream,
	.disable_stream = dce110_disable_stream,
	.unblank_stream = dce110_unblank_stream,
	.blank_stream = dce110_blank_stream,
	.enable_display_power_gating = dcn10_dummy_display_power_gating,
	.disable_plane = dcn10_disable_plane,
	.pipe_control_lock = dcn10_pipe_control_lock,
Loading