drm/amd/display: Clear edid when unplug mst connector
authorWayne Lin <Wayne.Lin@amd.com>
Wed, 22 Jun 2022 11:36:49 +0000 (19:36 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 12 Jul 2022 20:50:29 +0000 (16:50 -0400)
[Why]
When unplug one sst monitor from a mst hub and plug in the same
port with another sst monitor, we don't read the corresponding
edid. That's because we detect there is already an edid stored in
aconnector->edid which is a stale one.

[How]
Clean up aconnector->edid when unplug mst connector.

Reviewed-by: Hersen Wu <hersen.wu@amd.com>
Acked-by: Solomon Chiu <solomon.chiu@amd.com>
Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c

index f3ce37664143f0a15ae6af6e23d2e9a0342d2c31..03ca9083f5e94106e945ed7d4bc978c90b01b734 100644 (file)
@@ -160,6 +160,7 @@ amdgpu_dm_mst_connector_early_unregister(struct drm_connector *connector)
 
                dc_sink_release(dc_sink);
                aconnector->dc_sink = NULL;
+               aconnector->edid = NULL;
        }
        drm_modeset_unlock(&root->mst_mgr.base.lock);
 }
@@ -411,6 +412,7 @@ dm_dp_mst_detect(struct drm_connector *connector,
 
                dc_sink_release(aconnector->dc_sink);
                aconnector->dc_sink = NULL;
+               aconnector->edid = NULL;
        }
 
        return connection_status;