Skip to content

Commit 97d1765

Browse files
Wesley Chalmersalexdeucher
authored andcommitted
drm/amd/display: Unconditionally clear training pattern set after lt
[WHY] While Link Training is being performed, and the LTTPRs are in Non-LTTPR or LTTPR Transparent mode, any DPCD registers besides those used for Link Training are not to be accessed. The spec defines the link training registers as DP_TRAINING_PATTERN_SET (102h) to DP_TRAINING_LANE3_SET (106h), and DP_LANE0_1_STATUS (202h) to DP_ADJUST_REQUEST_LANE2_3 (207h). [HOW] Move the current write to DPCD Address DP_LINK_TRAINING_PATTERN_SET out of its conditional block. Signed-off-by: Wesley Chalmers <[email protected]> Reviewed-by: Jun Lei <[email protected]> Acked-by: Aurabindo Pillai <[email protected]> Tested-by: Daniel Wheeler <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 41ef8fb commit 97d1765

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,11 +1132,6 @@ static inline enum link_training_result perform_link_training_int(
11321132
enum link_training_result status)
11331133
{
11341134
union lane_count_set lane_count_set = { {0} };
1135-
union dpcd_training_pattern dpcd_pattern = { {0} };
1136-
1137-
/* 3. set training not in progress*/
1138-
dpcd_pattern.v1_4.TRAINING_PATTERN_SET = DPCD_TRAINING_PATTERN_VIDEOIDLE;
1139-
dpcd_set_training_pattern(link, dpcd_pattern);
11401135

11411136
/* 4. mainlink output idle pattern*/
11421137
dp_set_hw_test_pattern(link, DP_TEST_PATTERN_VIDEO_MODE, NULL, 0);
@@ -1560,6 +1555,7 @@ enum link_training_result dc_link_dp_perform_link_training(
15601555
{
15611556
enum link_training_result status = LINK_TRAINING_SUCCESS;
15621557
struct link_training_settings lt_settings;
1558+
union dpcd_training_pattern dpcd_pattern = { { 0 } };
15631559

15641560
bool fec_enable;
15651561
uint8_t repeater_cnt;
@@ -1624,6 +1620,9 @@ enum link_training_result dc_link_dp_perform_link_training(
16241620
}
16251621
}
16261622

1623+
/* 3. set training not in progress*/
1624+
dpcd_pattern.v1_4.TRAINING_PATTERN_SET = DPCD_TRAINING_PATTERN_VIDEOIDLE;
1625+
dpcd_set_training_pattern(link, dpcd_pattern);
16271626
if ((status == LINK_TRAINING_SUCCESS) || !skip_video_pattern) {
16281627
status = perform_link_training_int(link,
16291628
&lt_settings,

0 commit comments

Comments
 (0)