From: Meenakshikumar Somasundaram <[email protected]>

[Why]
Some mst branches NAK's segment pointer writes with mot disabled.
So reset of segment pointer to 0 should be performed with mot enabled.

[How]
Write segment pointer of mst branch devices with mot enabled.

Reviewed-by: Cruise Hung <[email protected]>
Signed-off-by: Meenakshikumar Somasundaram <[email protected]>
Signed-off-by: Tom Chung <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/link/link_factory.c          | 3 ---
 .../drm/amd/display/dc/link/protocols/link_dp_capability.c  | 6 ++++++
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/link/link_factory.c 
b/drivers/gpu/drm/amd/display/dc/link/link_factory.c
index 31a73867cd4c..f06af98d46ee 100644
--- a/drivers/gpu/drm/amd/display/dc/link/link_factory.c
+++ b/drivers/gpu/drm/amd/display/dc/link/link_factory.c
@@ -817,9 +817,6 @@ static bool construct_dpia(struct dc_link *link,
 
        link->psr_settings.psr_version = DC_PSR_VERSION_UNSUPPORTED;
 
-       /* Some docks seem to NAK I2C writes to segment pointer with mot=0. */
-       link->wa_flags.dp_mot_reset_segment = true;
-
        return true;
 
 ddc_create_fail:
diff --git a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c 
b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c
index 701afd2d4ab1..750147c52c8a 100644
--- a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c
+++ b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c
@@ -1867,6 +1867,12 @@ static bool retrieve_link_cap(struct dc_link *link)
        link->dpcd_caps.is_mst_capable = read_is_mst_supported(link);
        DC_LOG_DC("%s: MST_Support: %s\n", __func__, 
str_yes_no(link->dpcd_caps.is_mst_capable));
 
+       /* Some MST docks seem to NAK I2C writes to segment pointer with mot=0. 
*/
+       if (link->dpcd_caps.is_mst_capable)
+               link->wa_flags.dp_mot_reset_segment = true;
+       else
+               link->wa_flags.dp_mot_reset_segment = false;
+
        get_active_converter_info(ds_port.byte, link);
 
        dp_wa_power_up_0010FA(link, dpcd_data, sizeof(dpcd_data));
-- 
2.43.0

Reply via email to