diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c index 5c4e21cb8144..e84eecba9c25 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -548,9 +548,15 @@ static int analogix_dp_process_clock_recovery(struct analogix_dp_device *dp) pre_emphasis) dp->link_train.cr_loop[lane]++; + /* + * In DP spec 1.3, Condition of CR fail are + * outlined in section 3.5.1.2.2.1, figure 3-20: + * + * 1. Maximum Voltage Swing reached + * 2. Same Voltage five times + */ if (dp->link_train.cr_loop[lane] == MAX_CR_LOOP || - voltage_swing == VOLTAGE_LEVEL_3 || - pre_emphasis == PRE_EMPHASIS_LEVEL_3) { + DPCD_VOLTAGE_SWING_GET(training_lane) == VOLTAGE_LEVEL_3) { dev_err(dp->dev, "CR Max reached (%d,%d,%d)\n", dp->link_train.cr_loop[lane], voltage_swing, pre_emphasis);