From: Cruise <cruise.h...@amd.com>

[Why]
When the link BW is smaller than the request BW,
the DP LT just kept running and fallback to lower link config.
DP LT just aborted if is_hpd_pending bit is high.
But is_hpd_pending bit indicates a new HPD event received.
It doesn't mean the HPD is low.

[How]
Abort the DP LT if the link BW is smaller than the request BW.
Remove checking is_hpd_pending bit in DP LT.

Reviewed-by: Wenjing Liu <wenjing....@amd.com>
Acked-by: Roman Li <roman...@amd.com>
Signed-off-by: Cruise <cruise.h...@amd.com>
---
 .../display/dc/link/protocols/link_dp_training.c |  5 ++++-
 .../dc/link/protocols/link_dp_training_dpia.c    | 16 ----------------
 2 files changed, 4 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training.c 
b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training.c
index b8e704dbe956..a93dd83cd8c0 100644
--- a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training.c
+++ b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training.c
@@ -1704,10 +1704,13 @@ bool perform_link_training_with_retries(
                        is_link_bw_min = ((cur_link_settings.link_rate <= 
LINK_RATE_LOW) &&
                                (cur_link_settings.lane_count <= 
LANE_COUNT_ONE));
 
-                       if (is_link_bw_low)
+                       if (is_link_bw_low) {
                                DC_LOG_WARNING(
                                        "%s: Link(%d) bandwidth too low after 
fallback req_bw(%d) > link_bw(%d)\n",
                                        __func__, link->link_index, req_bw, 
link_bw);
+
+                               return false;
+                       }
                }
 
                msleep(delay_between_attempts);
diff --git 
a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training_dpia.c 
b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training_dpia.c
index edb21d21952a..cd1975c03f38 100644
--- a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training_dpia.c
+++ b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training_dpia.c
@@ -430,10 +430,6 @@ static enum link_training_result 
dpia_training_cr_non_transparent(
                retry_count++;
        }
 
-       /* Abort link training if clock recovery failed due to HPD unplug. */
-       if (link->is_hpd_pending)
-               result = LINK_TRAINING_ABORT;
-
        DC_LOG_HW_LINK_TRAINING(
                "%s\n DPIA(%d) clock recovery\n -hop(%d)\n - result(%d)\n - 
retries(%d)\n - status(%d)\n",
                __func__,
@@ -537,10 +533,6 @@ static enum link_training_result 
dpia_training_cr_transparent(
                retry_count++;
        }
 
-       /* Abort link training if clock recovery failed due to HPD unplug. */
-       if (link->is_hpd_pending)
-               result = LINK_TRAINING_ABORT;
-
        DC_LOG_HW_LINK_TRAINING("%s\n DPIA(%d) clock recovery\n -hop(%d)\n - 
result(%d)\n - retries(%d)\n",
                __func__,
                link->link_id.enum_id - ENUM_ID_1,
@@ -731,10 +723,6 @@ static enum link_training_result 
dpia_training_eq_non_transparent(
                                lt_settings->hw_lane_settings, 
lt_settings->dpcd_lane_settings);
        }
 
-       /* Abort link training if equalization failed due to HPD unplug. */
-       if (link->is_hpd_pending)
-               result = LINK_TRAINING_ABORT;
-
        DC_LOG_HW_LINK_TRAINING(
                "%s\n DPIA(%d) equalization\n - hop(%d)\n - result(%d)\n - 
retries(%d)\n - status(%d)\n",
                __func__,
@@ -822,10 +810,6 @@ static enum link_training_result 
dpia_training_eq_transparent(
                                lt_settings->hw_lane_settings, 
lt_settings->dpcd_lane_settings);
        }
 
-       /* Abort link training if equalization failed due to HPD unplug. */
-       if (link->is_hpd_pending)
-               result = LINK_TRAINING_ABORT;
-
        DC_LOG_HW_LINK_TRAINING("%s\n DPIA(%d) equalization\n - hop(%d)\n - 
result(%d)\n - retries(%d)\n",
                __func__,
                link->link_id.enum_id - ENUM_ID_1,
-- 
2.34.1

Reply via email to