aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4078-drm-amd-display-Fix-dongle_caps-containing-stale-inf.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4078-drm-amd-display-Fix-dongle_caps-containing-stale-inf.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4078-drm-amd-display-Fix-dongle_caps-containing-stale-inf.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4078-drm-amd-display-Fix-dongle_caps-containing-stale-inf.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4078-drm-amd-display-Fix-dongle_caps-containing-stale-inf.patch
new file mode 100644
index 00000000..897be11d
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4078-drm-amd-display-Fix-dongle_caps-containing-stale-inf.patch
@@ -0,0 +1,60 @@
+From 7aa6ab215240392757a08b1ccbddfb2af54442d4 Mon Sep 17 00:00:00 2001
+From: David Galiffi <david.galiffi@amd.com>
+Date: Fri, 20 Sep 2019 20:20:23 -0400
+Subject: [PATCH 4078/4256] drm/amd/display: Fix dongle_caps containing stale
+ information.
+
+[WHY]
+
+During detection:
+function: get_active_converter_info populates link->dpcd_caps.dongle_caps
+only when dpcd_rev >= DPCD_REV_11 and DWN_STRM_PORTX_TYPE is
+DOWN_STREAM_DETAILED_HDMI or DOWN_STREAM_DETAILED_DP_PLUS_PLUS.
+Otherwise, it is not cleared, and stale information remains.
+
+During mode validation:
+function: dp_active_dongle_validate_timing reads
+link->dpcd_caps.dongle_caps->dongle_type to determine the maximum
+pixel clock to support. This information is now stale and no longer
+valid.
+
+[HOW]
+dp_active_dongle_validate_timing should be using
+link->dpcd_caps->dongle_type instead.
+
+Signed-off-by: David Galiffi <david.galiffi@amd.com>
+Reviewed-by: Jun Lei <Jun.Lei@amd.com>
+Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/core/dc_link.c | 2 +-
+ drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 1 +
+ 2 files changed, 2 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 6fdb78a152e0..2a7fb79ad9f3 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
+@@ -2254,7 +2254,7 @@ static bool dp_active_dongle_validate_timing(
+ break;
+ }
+
+- if (dongle_caps->dongle_type != DISPLAY_DONGLE_DP_HDMI_CONVERTER ||
++ if (dpcd_caps->dongle_type != DISPLAY_DONGLE_DP_HDMI_CONVERTER ||
+ dongle_caps->extendedCapValid == false)
+ return true;
+
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
+index aae204141c60..0f59b68aa4c2 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
+@@ -2575,6 +2575,7 @@ static void get_active_converter_info(
+ uint8_t data, struct dc_link *link)
+ {
+ union dp_downstream_port_present ds_port = { .byte = data };
++ memset(&link->dpcd_caps.dongle_caps, 0, sizeof(link->dpcd_caps.dongle_caps));
+
+ /* decode converter info*/
+ if (!ds_port.fields.PORT_PRESENT) {
+--
+2.17.1
+