diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1969-drm-amd-display-enabling-stream-after-HPD-low-to-hig.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1969-drm-amd-display-enabling-stream-after-HPD-low-to-hig.patch | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1969-drm-amd-display-enabling-stream-after-HPD-low-to-hig.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1969-drm-amd-display-enabling-stream-after-HPD-low-to-hig.patch new file mode 100644 index 00000000..d6c9334b --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1969-drm-amd-display-enabling-stream-after-HPD-low-to-hig.patch @@ -0,0 +1,96 @@ +From be42b6a20f7f1cbf9720d6cc198f19c5cf3b1e7d Mon Sep 17 00:00:00 2001 +From: Charlene Liu <charlene.liu@amd.com> +Date: Mon, 29 Apr 2019 14:35:01 -0400 +Subject: [PATCH 1969/2940] drm/amd/display: enabling stream after HPD low to + high happened + +[Why] +1. No real HPD plug in/out but HPD happens, + the driver notifies OS connection changed. +2. No display in target. + +When HPD goes low to high, +the driver should regard as HPD and enter setmode flow. + +[How] +In this case, even stream didn't change but still retrain. + +Signed-off-by: Chiawen Huang <chiawen.huang@amd.com> +Signed-off-by: Charlene Liu <charlene.liu@amd.com> +Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> +Acked-by: Anthony Koo <Anthony.Koo@amd.com> +Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com> +--- + drivers/gpu/drm/amd/display/dc/core/dc_link.c | 3 +++ + drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 4 ++++ + drivers/gpu/drm/amd/display/dc/dc_link.h | 1 + + drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c | 4 +++- + 4 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c b/drivers/gpu/drm/amd/display/dc/core/dc_link.c +index 842fc7a652c6..fd8b46df49e5 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c +@@ -704,6 +704,7 @@ bool dc_link_detect(struct dc_link *link, enum dc_detect_reason reason) + + if (new_connection_type != dc_connection_none) { + link->type = new_connection_type; ++ link->link_state_valid = false; + + /* From Disconnected-to-Connected. */ + switch (link->connector_signal) { +@@ -2631,6 +2632,8 @@ void core_link_enable_stream( + stream->phy_pix_clk, + pipe_ctx->stream_res.audio != NULL); + ++ pipe_ctx->stream->link->link_state_valid = true; ++ + if (dc_is_dvi_signal(pipe_ctx->stream->signal)) + pipe_ctx->stream_res.stream_enc->funcs->dvi_set_stream_attribute( + pipe_ctx->stream_res.stream_enc, +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c +index 36346f6ceb9a..3bb19890c9b7 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c +@@ -2646,6 +2646,10 @@ bool pipe_need_reprogram( + if (is_vsc_info_packet_changed(pipe_ctx_old->stream, pipe_ctx->stream)) + return true; + ++ if (false == pipe_ctx_old->stream->link->link_state_valid && ++ false == pipe_ctx_old->stream->dpms_off) ++ return true; ++ + return false; + } + +diff --git a/drivers/gpu/drm/amd/display/dc/dc_link.h b/drivers/gpu/drm/amd/display/dc/dc_link.h +index 7b9429e30d82..094009127e25 100644 +--- a/drivers/gpu/drm/amd/display/dc/dc_link.h ++++ b/drivers/gpu/drm/amd/display/dc/dc_link.h +@@ -75,6 +75,7 @@ struct dc_link { + enum dc_irq_source irq_source_hpd_rx;/* aka DP Short Pulse */ + bool is_hpd_filter_disabled; + bool dp_ss_off; ++ bool link_state_valid; + + /* caps is the same as reported_link_cap. link_traing use + * reported_link_cap. Will clean up. TODO +diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c +index d3c821f3899b..69f215967af3 100644 +--- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c ++++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c +@@ -2023,8 +2023,10 @@ enum dc_status dce110_apply_ctx_to_hw( + if (pipe_ctx->stream == NULL) + continue; + +- if (pipe_ctx->stream == pipe_ctx_old->stream) ++ if (pipe_ctx->stream == pipe_ctx_old->stream && ++ pipe_ctx->stream->link->link_state_valid) { + continue; ++ } + + if (pipe_ctx_old->stream && !pipe_need_reprogram(pipe_ctx_old, pipe_ctx)) + continue; +-- +2.17.1 + |