> -----Original Message----- > From: Intel-xe <[email protected]> On Behalf Of Imre Deak > Sent: Monday, 1 June 2026 12.38 > To: [email protected]; [email protected] > Subject: [PATCH v2 06/22] drm/i915/dp_link_training: Add helpers to access > force retrain state > > 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. >
Reviewed-by: Mika Kahola <[email protected]> > 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
