Skip to content

Commit 0cb1588

Browse files
Jimmy Kizitoalexdeucher
authored andcommitted
drm/amd/display: Expand DP module equalization API.
[Why & How] Add functionality useful for DP equalization phase of link training to public interface. Signed-off-by: Jimmy Kizito <[email protected]> Reviewed-by: Jun Lei <[email protected]> Acked-by: Stylon Wang <[email protected]> Tested-by: Daniel Wheeler <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent ae88357 commit 0cb1588

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,7 @@ bool dp_is_cr_done(enum dc_lane_count ln_count,
435435
return true;
436436
}
437437

438-
static bool is_ch_eq_done(enum dc_lane_count ln_count,
438+
bool dp_is_ch_eq_done(enum dc_lane_count ln_count,
439439
union lane_status *dpcd_lane_status)
440440
{
441441
bool done = true;
@@ -446,7 +446,7 @@ static bool is_ch_eq_done(enum dc_lane_count ln_count,
446446
return done;
447447
}
448448

449-
static bool is_symbol_locked(enum dc_lane_count ln_count,
449+
bool dp_is_symbol_locked(enum dc_lane_count ln_count,
450450
union lane_status *dpcd_lane_status)
451451
{
452452
bool locked = true;
@@ -457,7 +457,7 @@ static bool is_symbol_locked(enum dc_lane_count ln_count,
457457
return locked;
458458
}
459459

460-
static inline bool is_interlane_aligned(union lane_align_status_updated align_status)
460+
bool dp_is_interlane_aligned(union lane_align_status_updated align_status)
461461
{
462462
return align_status.bits.INTERLANE_ALIGN_DONE == 1;
463463
}
@@ -865,9 +865,9 @@ static bool perform_post_lt_adj_req_sequence(
865865
if (!dp_is_cr_done(lane_count, dpcd_lane_status))
866866
return false;
867867

868-
if (!is_ch_eq_done(lane_count, dpcd_lane_status) ||
869-
!is_symbol_locked(lane_count, dpcd_lane_status) ||
870-
!is_interlane_aligned(dpcd_lane_status_updated))
868+
if (!dp_is_ch_eq_done(lane_count, dpcd_lane_status) ||
869+
!dp_is_symbol_locked(lane_count, dpcd_lane_status) ||
870+
!dp_is_interlane_aligned(dpcd_lane_status_updated))
871871
return false;
872872

873873
for (lane = 0; lane < (uint32_t)(lane_count); lane++) {
@@ -913,7 +913,7 @@ static bool perform_post_lt_adj_req_sequence(
913913
}
914914

915915
/* Only used for channel equalization */
916-
static uint32_t translate_training_aux_read_interval(uint32_t dpcd_aux_read_interval)
916+
uint32_t dp_translate_training_aux_read_interval(uint32_t dpcd_aux_read_interval)
917917
{
918918
unsigned int aux_rd_interval_us = 400;
919919

@@ -998,7 +998,7 @@ static enum link_training_result perform_channel_equalization_sequence(
998998

999999
if (is_repeater(link, offset))
10001000
wait_time_microsec =
1001-
translate_training_aux_read_interval(
1001+
dp_translate_training_aux_read_interval(
10021002
link->dpcd_caps.lttpr_caps.aux_rd_interval[offset - 1]);
10031003

10041004
dp_wait_for_training_aux_rd_interval(
@@ -1021,9 +1021,9 @@ static enum link_training_result perform_channel_equalization_sequence(
10211021
return LINK_TRAINING_EQ_FAIL_CR;
10221022

10231023
/* 6. check CHEQ done*/
1024-
if (is_ch_eq_done(lane_count, dpcd_lane_status) &&
1025-
is_symbol_locked(lane_count, dpcd_lane_status) &&
1026-
is_interlane_aligned(dpcd_lane_status_updated))
1024+
if (dp_is_ch_eq_done(lane_count, dpcd_lane_status) &&
1025+
dp_is_symbol_locked(lane_count, dpcd_lane_status) &&
1026+
dp_is_interlane_aligned(dpcd_lane_status_updated))
10271027
return LINK_TRAINING_SUCCESS;
10281028

10291029
/* 7. update VS/PE/PC2 in lt_settings*/

drivers/gpu/drm/amd/display/dc/inc/dc_link_dp.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,21 @@ bool dp_is_cr_done(enum dc_lane_count ln_count,
130130
enum link_training_result dp_get_cr_failure(enum dc_lane_count ln_count,
131131
union lane_status *dpcd_lane_status);
132132

133+
bool dp_is_ch_eq_done(enum dc_lane_count ln_count,
134+
union lane_status *dpcd_lane_status);
135+
bool dp_is_symbol_locked(enum dc_lane_count ln_count,
136+
union lane_status *dpcd_lane_status);
137+
bool dp_is_interlane_aligned(union lane_align_status_updated align_status);
138+
133139
bool dp_is_max_vs_reached(
134140
const struct link_training_settings *lt_settings);
135141

136142
void dp_update_drive_settings(
137143
struct link_training_settings *dest,
138144
struct link_training_settings src);
139145

146+
uint32_t dp_translate_training_aux_read_interval(uint32_t dpcd_aux_read_interval);
147+
140148
enum dpcd_training_patterns
141149
dc_dp_training_pattern_to_dpcd_training_pattern(
142150
struct dc_link *link,

0 commit comments

Comments
 (0)