From: Zhongwei <[email protected]>

[WHY]
Handover from DMUB to driver does not perform link rate toggle.
It might cause link training failure for boot up.

[HOW]
Force toggle rate wa for first link train.
link->vendor_specific_lttpr_link_rate_wa should be zero then.

Cc: [email protected] # 6.1+
Reviewed-by: Michael Strauss <[email protected]>
Acked-by: Hamza Mahfooz <[email protected]>
Signed-off-by: Zhongwei <[email protected]>
---
 .../link/protocols/link_dp_training_fixed_vs_pe_retimer.c   | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git 
a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training_fixed_vs_pe_retimer.c
 
b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training_fixed_vs_pe_retimer.c
index fd8f6f198146..68096d12f52f 100644
--- 
a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training_fixed_vs_pe_retimer.c
+++ 
b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training_fixed_vs_pe_retimer.c
@@ -115,7 +115,7 @@ static enum link_training_result 
perform_fixed_vs_pe_nontransparent_training_seq
                lt_settings->cr_pattern_time = 16000;
 
        /* Fixed VS/PE specific: Toggle link rate */
-       apply_toggle_rate_wa = (link->vendor_specific_lttpr_link_rate_wa == 
target_rate);
+       apply_toggle_rate_wa = ((link->vendor_specific_lttpr_link_rate_wa == 
target_rate) || (link->vendor_specific_lttpr_link_rate_wa == 0));
        target_rate = get_dpcd_link_rate(&lt_settings->link_settings);
        toggle_rate = (target_rate == 0x6) ? 0xA : 0x6;
 
@@ -271,7 +271,7 @@ enum link_training_result 
dp_perform_fixed_vs_pe_training_sequence_legacy(
        /* Vendor specific: Toggle link rate */
        toggle_rate = (rate == 0x6) ? 0xA : 0x6;
 
-       if (link->vendor_specific_lttpr_link_rate_wa == rate) {
+       if (link->vendor_specific_lttpr_link_rate_wa == rate || 
link->vendor_specific_lttpr_link_rate_wa == 0) {
                core_link_write_dpcd(
                                link,
                                DP_LINK_BW_SET,
@@ -617,7 +617,7 @@ enum link_training_result 
dp_perform_fixed_vs_pe_training_sequence(
        /* Vendor specific: Toggle link rate */
        toggle_rate = (rate == 0x6) ? 0xA : 0x6;
 
-       if (link->vendor_specific_lttpr_link_rate_wa == rate) {
+       if (link->vendor_specific_lttpr_link_rate_wa == rate || 
link->vendor_specific_lttpr_link_rate_wa == 0) {
                core_link_write_dpcd(
                                link,
                                DP_LINK_BW_SET,
-- 
2.42.0

Reply via email to