drm/amd/display: Send DP_TOTAL_LTTPR_CNT during detection if LTTPR is present
authorjsg <jsg@openbsd.org>
Mon, 8 Jul 2024 02:18:34 +0000 (02:18 +0000)
committerjsg <jsg@openbsd.org>
Mon, 8 Jul 2024 02:18:34 +0000 (02:18 +0000)
From Michael Strauss
89d8a851543e1aab6ea5c8a06d02dbe982948508 in linux-6.6.y/6.6.37
2ec6c7f802332d1eff16f03e7c757f1543ee1183 in mainline linux

sys/dev/pci/drm/amd/display/dc/link/protocols/link_dp_capability.c
sys/dev/pci/drm/amd/display/include/dpcd_defs.h

index 0d2d269..5101c90 100644 (file)
@@ -1584,9 +1584,17 @@ static bool retrieve_link_cap(struct dc_link *link)
                        return false;
        }
 
-       if (dp_is_lttpr_present(link))
+       if (dp_is_lttpr_present(link)) {
                configure_lttpr_mode_transparent(link);
 
+               // Echo TOTAL_LTTPR_CNT back downstream
+               core_link_write_dpcd(
+                               link,
+                               DP_TOTAL_LTTPR_CNT,
+                               &link->dpcd_caps.lttpr_caps.phy_repeater_cnt,
+                               sizeof(link->dpcd_caps.lttpr_caps.phy_repeater_cnt));
+       }
+
        /* Read DP tunneling information. */
        status = dpcd_get_tunneling_device_data(link);
 
index 914f28e..aee5170 100644 (file)
@@ -177,4 +177,9 @@ enum dpcd_psr_sink_states {
 #define DP_SINK_PR_PIXEL_DEVIATION_PER_LINE     0x379
 #define DP_SINK_PR_MAX_NUMBER_OF_DEVIATION_LINE 0x37A
 
+/* Remove once drm_dp_helper.h is updated upstream */
+#ifndef DP_TOTAL_LTTPR_CNT
+#define DP_TOTAL_LTTPR_CNT                                  0xF000A /* 2.1 */
+#endif
+
 #endif /* __DAL_DPCD_DEFS_H__ */