drm/amd/display: force toggle rate wa for first link training for a retimer
[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: stable@vger.kernel.org # 6.1+ Reviewed-by: Michael Strauss <michael.strauss@amd.com> Acked-by: Hamza Mahfooz <hamza.mahfooz@amd.com> Signed-off-by: Zhongwei <zhongwei.zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
c6df7f3137
commit
eb28018943
@ -115,7 +115,7 @@ static enum link_training_result perform_fixed_vs_pe_nontransparent_training_seq
|
|||||||
lt_settings->cr_pattern_time = 16000;
|
lt_settings->cr_pattern_time = 16000;
|
||||||
|
|
||||||
/* Fixed VS/PE specific: Toggle link rate */
|
/* 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(<_settings->link_settings);
|
target_rate = get_dpcd_link_rate(<_settings->link_settings);
|
||||||
toggle_rate = (target_rate == 0x6) ? 0xA : 0x6;
|
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 */
|
/* Vendor specific: Toggle link rate */
|
||||||
toggle_rate = (rate == 0x6) ? 0xA : 0x6;
|
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(
|
core_link_write_dpcd(
|
||||||
link,
|
link,
|
||||||
DP_LINK_BW_SET,
|
DP_LINK_BW_SET,
|
||||||
@ -617,7 +617,7 @@ enum link_training_result dp_perform_fixed_vs_pe_training_sequence(
|
|||||||
/* Vendor specific: Toggle link rate */
|
/* Vendor specific: Toggle link rate */
|
||||||
toggle_rate = (rate == 0x6) ? 0xA : 0x6;
|
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(
|
core_link_write_dpcd(
|
||||||
link,
|
link,
|
||||||
DP_LINK_BW_SET,
|
DP_LINK_BW_SET,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user