From: Thierry Reding <treding@xxxxxxxxxx> Make use of the newly added drm_dp_aux_rd_interval() helper in existing DP link training helpers and add comments about minimum required delays mandated by the DP specification. Signed-off-by: Thierry Reding <treding@xxxxxxxxxx> --- drivers/gpu/drm/drm_dp_helper.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c index 0d9e66ea9667..dabac772dfc3 100644 --- a/drivers/gpu/drm/drm_dp_helper.c +++ b/drivers/gpu/drm/drm_dp_helper.c @@ -120,11 +120,13 @@ EXPORT_SYMBOL(drm_dp_get_adjust_request_pre_emphasis); void drm_dp_link_train_clock_recovery_delay(const u8 dpcd[DP_RECEIVER_CAP_SIZE]) { - unsigned int min; + unsigned int min = drm_dp_aux_rd_interval(dpcd); - if (dpcd[DP_TRAINING_AUX_RD_INTERVAL] != 0) - min = dpcd[DP_TRAINING_AUX_RD_INTERVAL] * 4000; - else + /* + * The DP specification mandates a delay of 100 us during clock + * recovery if the sink doesn't report an AUX read interval. + */ + if (min == 0) min = 100; usleep_range(min, min * 2); @@ -133,11 +135,13 @@ EXPORT_SYMBOL(drm_dp_link_train_clock_recovery_delay); void drm_dp_link_train_channel_eq_delay(const u8 dpcd[DP_RECEIVER_CAP_SIZE]) { - unsigned int min; + unsigned int min = drm_dp_aux_rd_interval(dpcd); - if (dpcd[DP_TRAINING_AUX_RD_INTERVAL] != 0) - min = dpcd[DP_TRAINING_AUX_RD_INTERVAL] * 4000; - else + /* + * The DP specification mandates a delay of 400 us during clock + * recovery if the sink doesn't report an AUX read interval. + */ + if (min == 0) min = 400; usleep_range(min, min * 2); -- 2.15.1 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel