From: Wayne Lin <wayne....@amd.com>

[ Upstream commit bc068194f548ef1f230d96c4398046bf59165992 ]

[Why]
Observe after suspend/resme, we can't light up mst monitors under specific
mst hub. The reason is that driver still writes DPCD DP_MSTM_CTRL after LT.
It's forbidden even we write the same value for that dpcd register.

[How]
We already resume the mst branch device dpcd settings during
resume_mst_branch_status(). Leverage drm_dp_mst_topology_queue_probe() to
only probe the topology, not calling drm_dp_mst_topology_mgr_resume() which
will set DP_MSTM_CTRL as well.

Reviewed-by: Jerry Zuo <jerry....@amd.com>
Signed-off-by: Wayne Lin <wayne....@amd.com>
Signed-off-by: Zaeem Mohamed <zaeem.moha...@amd.com>
Tested-by: Daniel Wheeler <daniel.whee...@amd.com>
Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
Signed-off-by: Thadeu Lima de Souza Cascardo <casca...@igalia.com>
---
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c    | 16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index d9a3917d207e..c4c6538eabae 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -3231,8 +3231,7 @@ static int dm_resume(void *handle)
        struct dm_atomic_state *dm_state = 
to_dm_atomic_state(dm->atomic_obj.state);
        enum dc_connection_type new_connection_type = dc_connection_none;
        struct dc_state *dc_state;
-       int i, r, j, ret;
-       bool need_hotplug = false;
+       int i, r, j;
        struct dc_commit_streams_params commit_params = {};
 
        if (dm->dc->caps.ips_support) {
@@ -3427,23 +3426,16 @@ static int dm_resume(void *handle)
                    aconnector->mst_root)
                        continue;
 
-               ret = drm_dp_mst_topology_mgr_resume(&aconnector->mst_mgr, 
true);
-
-               if (ret < 0) {
-                       dm_helpers_dp_mst_stop_top_mgr(aconnector->dc_link->ctx,
-                                       aconnector->dc_link);
-                       need_hotplug = true;
-               }
+               drm_dp_mst_topology_queue_probe(&aconnector->mst_mgr);
        }
        drm_connector_list_iter_end(&iter);
 
-       if (need_hotplug)
-               drm_kms_helper_hotplug_event(ddev);
-
        amdgpu_dm_irq_resume_late(adev);
 
        amdgpu_dm_smu_write_watermarks_table(adev);
 
+       drm_kms_helper_hotplug_event(ddev);
+
        return 0;
 }
 
-- 
2.47.2

Reply via email to