Add helpers to get and set the force retrain state in preparation for moving the state from the DP struct to the link training state.
Signed-off-by: Imre Deak <[email protected]> --- drivers/gpu/drm/i915/display/intel_dp.c | 2 +- .../drm/i915/display/intel_dp_link_training.c | 29 +++++++++++++++---- .../drm/i915/display/intel_dp_link_training.h | 2 ++ 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 980659f5ace6e..b6b5586ea0845 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -5682,7 +5682,7 @@ static bool intel_dp_check_mst_status(struct intel_dp *intel_dp) { struct intel_display *display = to_intel_display(intel_dp); - bool force_retrain = intel_dp->link.force_retrain; + bool force_retrain = intel_dp_link_training_get_force_retrain(intel_dp->link.training); bool reprobe_needed = false; for (;;) { diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.c b/drivers/gpu/drm/i915/display/intel_dp_link_training.c index 4ecc00b7c9ff5..831dec86febd1 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c +++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c @@ -1944,9 +1944,25 @@ intel_dp_read_link_status(struct intel_dp *intel_dp, u8 link_status[DP_LINK_STAT return 0; } +bool intel_dp_link_training_get_force_retrain(struct intel_dp_link_training *link_training) +{ + struct intel_dp *intel_dp = link_training->dp; + + return intel_dp->link.force_retrain; +} + +static void intel_dp_link_training_set_force_retrain(struct intel_dp_link_training *link_training, + bool forced) +{ + struct intel_dp *intel_dp = link_training->dp; + + intel_dp->link.force_retrain = forced; +} + static bool intel_dp_needs_link_retrain(struct intel_dp *intel_dp) { + struct intel_dp_link_training *link_training = intel_dp->link.training; u8 link_status[DP_LINK_STATUS_SIZE]; if (!intel_dp->link.active) @@ -1963,7 +1979,7 @@ intel_dp_needs_link_retrain(struct intel_dp *intel_dp) if (intel_psr_enabled(intel_dp)) return false; - if (intel_dp->link.force_retrain) + if (intel_dp_link_training_get_force_retrain(link_training)) return true; if (intel_dp_read_link_status(intel_dp, link_status) < 0) @@ -2005,6 +2021,8 @@ static int intel_dp_retrain_link(struct intel_encoder *encoder, { struct intel_display *display = to_intel_display(encoder); struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + struct intel_dp_link_training *link_training = + intel_dp->link.training; u8 pipe_mask; int ret; @@ -2032,13 +2050,13 @@ static int intel_dp_retrain_link(struct intel_encoder *encoder, drm_dbg_kms(display->drm, "[ENCODER:%d:%s] retraining link (forced %s)\n", encoder->base.base.id, encoder->base.name, - str_yes_no(intel_dp->link.force_retrain)); + str_yes_no(intel_dp_link_training_get_force_retrain(link_training))); ret = intel_modeset_commit_pipes(display, pipe_mask, ctx); if (ret == -EDEADLK) return ret; - intel_dp->link.force_retrain = false; + intel_dp_link_training_set_force_retrain(link_training, false); if (ret) drm_dbg_kms(display->drm, @@ -2376,7 +2394,6 @@ static int i915_dp_force_link_retrain_show(void *data, u64 *val) struct intel_connector *connector = to_intel_connector(data); struct intel_display *display = to_intel_display(connector); struct intel_dp_link_training *link_training = connector_to_link_training(connector); - struct intel_dp *intel_dp = link_training->dp; int err; err = drm_modeset_lock_single_interruptible(&display->drm->mode_config.connection_mutex); @@ -2385,7 +2402,7 @@ static int i915_dp_force_link_retrain_show(void *data, u64 *val) intel_dp_flush_connector_commits(connector); - *val = intel_dp->link.force_retrain; + *val = intel_dp_link_training_get_force_retrain(link_training); drm_modeset_unlock(&display->drm->mode_config.connection_mutex); @@ -2406,7 +2423,7 @@ static int i915_dp_force_link_retrain_write(void *data, u64 val) intel_dp_flush_connector_commits(connector); - intel_dp->link.force_retrain = val; + intel_dp_link_training_set_force_retrain(link_training, val); drm_modeset_unlock(&display->drm->mode_config.connection_mutex); diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.h b/drivers/gpu/drm/i915/display/intel_dp_link_training.h index 36ba9535fc34f..ef16fcabd6da9 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_link_training.h +++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.h @@ -59,6 +59,8 @@ void intel_dp_128b132b_sdp_crc16(struct intel_dp *intel_dp, bool intel_dp_link_params_valid(struct intel_dp *intel_dp, int link_rate, u8 lane_count); +bool intel_dp_link_training_get_force_retrain(struct intel_dp_link_training *link_training); + void intel_dp_link_check(struct intel_encoder *encoder); void intel_dp_check_link_state(struct intel_dp *intel_dp); -- 2.49.1
