Skip to content

Commit eaa42ab

Browse files
committed
drivers/gpu/drm/amd/display/dc/link/protocols/link_frl_training.c: combined retry and rate fallback loop
1 parent 2305a37 commit eaa42ab

1 file changed

Lines changed: 15 additions & 2 deletions

File tree

drivers/gpu/drm/amd/display/dc/link/protocols/link_frl_training.c

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,16 +243,29 @@ bool dc_link_perform_frl_training(struct dc_link *link,
243243
bool dc_link_perform_frl_training_with_retries(struct dc_link *link,
244244
const struct link_resource *link_res)
245245
{
246+
uint8_t min_rate;
246247
bool success;
247248
int i;
248249

250+
/* We will attempt the highest rate first, then fall back to a lower rate */
251+
min_rate = link->cur_link_settings.frl_rate;
252+
link->cur_link_settings.frl_rate = link->local_sink->edid_caps.frl_caps.max_rate;
253+
link->cur_link_settings.lane_count = link->cur_link_settings.frl_rate <= 2 ? 3 : 4;
254+
249255
for (i = 0; i < FRL_TRAINING_RETRIES; ++i) {
250256
success = dc_link_perform_frl_training(link, link_res);
251257

252258
if (success)
253259
break;
254260

255-
DC_LOG_HW_LINK_TRAINING("FRL: Training attempt %d failed!");
261+
if (link->cur_link_settings.frl_rate > min_rate) {
262+
link->cur_link_settings.frl_rate--;
263+
link->cur_link_settings.lane_count =
264+
link->cur_link_settings.frl_rate <= 2 ? 3 : 4;
265+
}
266+
267+
DC_LOG_HW_LINK_TRAINING("FRL: Training attempt %d failed! Will attempt rate %d next",
268+
i, link->cur_link_settings.frl_rate);
256269
}
257270

258271
return success;
@@ -567,7 +580,7 @@ bool hdmi_decide_link_settings(
567580
pipe_ctx->link_config.dp_link_settings.frl_rate = frl_rate;
568581
pipe_ctx->link_config.dp_link_settings.lane_count = cfg.lanes;
569582

570-
pr_info("HDMI FRL: Rate %d Supported. Borrowed: %d, Margin: %d ppm\n",
583+
DC_LOG_HW_LINK_TRAINING("HDMI FRL: Rate %d Supported. Borrowed: %llu, Margin: %d ppm\n",
571584
frl_rate, res.tb_borrowed, res.margin_ppm);
572585
return true;
573586
}

0 commit comments

Comments
 (0)