aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1969-drm-amd-display-enabling-stream-after-HPD-low-to-hig.patch
diff options
context:
space:
mode:
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.patch96
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
+