aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1833-drm-amd-display-Refactor-dp-vendor-parsing-logic-to-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1833-drm-amd-display-Refactor-dp-vendor-parsing-logic-to-.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1833-drm-amd-display-Refactor-dp-vendor-parsing-logic-to-.patch108
1 files changed, 108 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1833-drm-amd-display-Refactor-dp-vendor-parsing-logic-to-.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1833-drm-amd-display-Refactor-dp-vendor-parsing-logic-to-.patch
new file mode 100644
index 00000000..e45d802c
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1833-drm-amd-display-Refactor-dp-vendor-parsing-logic-to-.patch
@@ -0,0 +1,108 @@
+From c15ba01b9ec0cf0bd71c59bc5f8b358944d6cef8 Mon Sep 17 00:00:00 2001
+From: John Barberiz <John.Barberiz@amd.com>
+Date: Wed, 3 Apr 2019 19:22:55 -0400
+Subject: [PATCH 1833/2940] drm/amd/display: Refactor dp vendor parsing logic
+ to a function
+
+Refactor dp vendor parsing int to a new function, and call it before
+get_active_converter_info().
+
+Also, add a flag to skip parsing of Display ID 2.0. Some devices fail on
+readind DID2, but we shouldn't fail EDID read because of it. Add this
+flag to facilitate the logic.
+
+Signed-off-by: John Barberiz <John.Barberiz@amd.com>
+Reviewed-by: Aric Cyr <Aric.Cyr@amd.com>
+Acked-by: Leo Li <sunpeng.li@amd.com>
+---
+ .../gpu/drm/amd/display/dc/core/dc_link_dp.c | 47 ++++++++++---------
+ drivers/gpu/drm/amd/display/dc/dc_link.h | 1 +
+ 2 files changed, 27 insertions(+), 21 deletions(-)
+
+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 64a309a5e1c9..1ee544a32ebb 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
+@@ -2185,6 +2185,30 @@ static int translate_dpcd_max_bpc(enum dpcd_downstream_port_max_bpc bpc)
+ return -1;
+ }
+
++static void read_dp_device_vendor_id(struct dc_link *link)
++{
++ struct dp_device_vendor_id dp_id;
++
++ /* read IEEE branch device id */
++ core_link_read_dpcd(
++ link,
++ DP_BRANCH_OUI,
++ (uint8_t *)&dp_id,
++ sizeof(dp_id));
++
++ link->dpcd_caps.branch_dev_id =
++ (dp_id.ieee_oui[0] << 16) +
++ (dp_id.ieee_oui[1] << 8) +
++ dp_id.ieee_oui[2];
++
++ memmove(
++ link->dpcd_caps.branch_dev_name,
++ dp_id.ieee_device_id,
++ sizeof(dp_id.ieee_device_id));
++}
++
++
++
+ static void get_active_converter_info(
+ uint8_t data, struct dc_link *link)
+ {
+@@ -2270,27 +2294,6 @@ static void get_active_converter_info(
+
+ ddc_service_set_dongle_type(link->ddc, link->dpcd_caps.dongle_type);
+
+- {
+- struct dp_device_vendor_id dp_id;
+-
+- /* read IEEE branch device id */
+- core_link_read_dpcd(
+- link,
+- DP_BRANCH_OUI,
+- (uint8_t *)&dp_id,
+- sizeof(dp_id));
+-
+- link->dpcd_caps.branch_dev_id =
+- (dp_id.ieee_oui[0] << 16) +
+- (dp_id.ieee_oui[1] << 8) +
+- dp_id.ieee_oui[2];
+-
+- memmove(
+- link->dpcd_caps.branch_dev_name,
+- dp_id.ieee_device_id,
+- sizeof(dp_id.ieee_device_id));
+- }
+-
+ {
+ struct dp_sink_hw_fw_revision dp_hw_fw_revision;
+
+@@ -2455,6 +2458,8 @@ static bool retrieve_link_cap(struct dc_link *link)
+ ds_port.byte = dpcd_data[DP_DOWNSTREAMPORT_PRESENT -
+ DP_DPCD_REV];
+
++ read_dp_device_vendor_id(link);
++
+ get_active_converter_info(ds_port.byte, link);
+
+ dp_wa_power_up_0010FA(link, dpcd_data, sizeof(dpcd_data));
+diff --git a/drivers/gpu/drm/amd/display/dc/dc_link.h b/drivers/gpu/drm/amd/display/dc/dc_link.h
+index cc7ffac64c96..7b9429e30d82 100644
+--- a/drivers/gpu/drm/amd/display/dc/dc_link.h
++++ b/drivers/gpu/drm/amd/display/dc/dc_link.h
+@@ -120,6 +120,7 @@ struct dc_link {
+ /* MST record stream using this link */
+ struct link_flags {
+ bool dp_keep_receiver_powered;
++ bool dp_skip_DID2;
+ } wa_flags;
+ struct link_mst_stream_allocation_table mst_stream_alloc_table;
+
+--
+2.17.1
+