drm/amd/display: Send DP_TOTAL_LTTPR_CNT during detection if LTTPR is present
authorMichael Strauss <michael.strauss@amd.com>
Tue, 28 Nov 2023 15:31:12 +0000 (10:31 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 25 Jun 2024 18:15:45 +0000 (14:15 -0400)
[WHY]
New register field added in DP2.1 SCR, needed for auxless ALPM

[HOW]
Echo value read from 0xF0007 back to sink

Reviewed-by: Wenjing Liu <wenjing.liu@amd.com>
Cc: Mario Limonciello <mario.limonciello@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Signed-off-by: Alex Hung <alex.hung@amd.com>
Signed-off-by: Michael Strauss <michael.strauss@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c
drivers/gpu/drm/amd/display/include/dpcd_defs.h

index a01d084..d487dfc 100644 (file)
@@ -1590,9 +1590,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__ */