Remove duplicated code and just call handle_hpd_irq_helper
with the appropriate detect reason.

Signed-off-by: Timur Kristóf <[email protected]>
---
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 41 +------------------
 1 file changed, 1 insertion(+), 40 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 c071c27d8313..28092ac052ae 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -4436,14 +4436,12 @@ static void handle_hpd_rx_irq(void *param)
        struct dc_link *dc_link = aconnector->dc_link;
        bool is_mst_root_connector = aconnector->mst_mgr.mst_state;
        bool result = false;
-       enum dc_connection_type new_connection_type = dc_connection_none;
        struct amdgpu_device *adev = drm_to_adev(dev);
        union hpd_irq_data hpd_irq_data;
        bool link_loss = false;
        bool has_left_work = false;
        int idx = dc_link->link_index;
        struct hpd_rx_irq_offload_work_queue *offload_wq = 
&adev->dm.hpd_rx_offload_wq[idx];
-       struct dc *dc = aconnector->dc_link->ctx->dc;
 
        memset(&hpd_irq_data, 0, sizeof(hpd_irq_data));
 
@@ -4512,44 +4510,7 @@ static void handle_hpd_rx_irq(void *param)
 out:
        if (result && !is_mst_root_connector) {
                /* Downstream Port status changed. */
-               if (!dc_link_detect_connection_type(dc_link, 
&new_connection_type))
-                       drm_err(adev_to_drm(adev), "KMS: Failed to detect 
connector\n");
-
-               if (aconnector->base.force && new_connection_type == 
dc_connection_none) {
-                       emulated_link_detect(dc_link);
-
-                       if (aconnector->fake_enable)
-                               aconnector->fake_enable = false;
-
-                       amdgpu_dm_update_connector_after_detect(aconnector);
-
-
-                       drm_modeset_lock_all(dev);
-                       dm_restore_drm_connector_state(dev, connector);
-                       drm_modeset_unlock_all(dev);
-
-                       drm_kms_helper_connector_hotplug_event(connector);
-               } else {
-                       bool ret = false;
-
-                       mutex_lock(&adev->dm.dc_lock);
-                       dc_exit_ips_for_hw_access(dc);
-                       ret = dc_link_detect(dc_link, DETECT_REASON_HPDRX);
-                       mutex_unlock(&adev->dm.dc_lock);
-
-                       if (ret) {
-                               if (aconnector->fake_enable)
-                                       aconnector->fake_enable = false;
-
-                               
amdgpu_dm_update_connector_after_detect(aconnector);
-
-                               drm_modeset_lock_all(dev);
-                               dm_restore_drm_connector_state(dev, connector);
-                               drm_modeset_unlock_all(dev);
-
-                               
drm_kms_helper_connector_hotplug_event(connector);
-                       }
-               }
+               handle_hpd_irq_helper(aconnector, DETECT_REASON_HPDRX);
        }
        if (hpd_irq_data.bytes.device_service_irq.bits.CP_IRQ) {
                if (adev->dm.hdcp_workqueue)
-- 
2.54.0

Reply via email to