drm/amd/display: Fix in dp link-training when updating payload allocation table
authorDmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Tue, 15 Jun 2021 19:11:31 +0000 (15:11 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 21 Jun 2022 22:17:24 +0000 (18:17 -0400)
[Why & How]
Check if aux is not accessible before updating payload allocation table.

Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Acked-by: Alan Liu <HaoPing.Liu@amd.com>
Signed-off-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c

index 76233db6876cc96d83f436c7f521baa86dfec134..4027f439a5a40dbfea6e5ca9df3d9497f1cfa95c 100644 (file)
@@ -6823,6 +6823,13 @@ bool dpcd_write_128b_132b_sst_payload_allocation_table(
                /// Leave req_slot_count = 0 if allocate is false.
        }
 
+       proposed_table->stream_count = 1; /// Always 1 stream for SST
+       proposed_table->stream_allocations[0].slot_count = req_slot_count;
+       proposed_table->stream_allocations[0].vcp_id = vc_id;
+
+       if (link->aux_access_disabled)
+               return true;
+
        /// Write DPCD 2C0 = 1 to start updating
        update_status.bits.VC_PAYLOAD_TABLE_UPDATED = 1;
        core_link_write_dpcd(
@@ -6890,10 +6897,6 @@ bool dpcd_write_128b_132b_sst_payload_allocation_table(
                // TODO - DP2.0 Payload: Read and log the payload table from downstream branch
        }
 
-       proposed_table->stream_count = 1; /// Always 1 stream for SST
-       proposed_table->stream_allocations[0].slot_count = req_slot_count;
-       proposed_table->stream_allocations[0].vcp_id = vc_id;
-
        return result;
 }
 
@@ -6909,6 +6912,8 @@ bool dpcd_poll_for_allocation_change_trigger(struct dc_link *link)
        union lane_status dpcd_lane_status[LANE_COUNT_DP_MAX];
        union lane_align_status_updated lane_status_updated;
 
+       if (link->aux_access_disabled)
+               return true;
        for (i = 0; i < act_retries; i++) {
                get_lane_status(link, link->cur_link_settings.lane_count, dpcd_lane_status, &lane_status_updated);