On Tue, 2026-06-16 at 23:08 +0300, Imre Deak wrote:
> Move tracking of the forced link parameters from struct intel_dp to
> struct intel_dp_link_caps.
> 
> Previous changes made all users access these parameters through the link
> caps helpers, so the state can now be kept internal to the link caps
> module.
> 
> Signed-off-by: Imre Deak <[email protected]>
> ---

Reviewed-by: Luca Coelho <[email protected]>

--
Cheers,
Luca.


>  .../drm/i915/display/intel_display_types.h    |  2 --
>  .../gpu/drm/i915/display/intel_dp_link_caps.c | 30 ++++++++++++++-----
>  2 files changed, 22 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h 
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 10933ccdeb31e..c84ef29529373 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1865,8 +1865,6 @@ struct intel_dp {
>                */
>               int mst_probed_lane_count;
>               int mst_probed_rate;
> -             int force_lane_count;
> -             int force_rate;
>               struct intel_dp_link_training *training;
>               struct intel_dp_link_caps *caps;
>       } link;
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_caps.c 
> b/drivers/gpu/drm/i915/display/intel_dp_link_caps.c
> index ea90e84500a89..8ecdc01af70eb 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_link_caps.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_link_caps.c
> @@ -15,6 +15,12 @@
>  
>  struct intel_dp_link_caps {
>       struct intel_dp *dp;
> +
> +     /*
> +      * Forced parameters requested via debugfs. Remains set across sink
> +      * disconnects.
> +      */
> +     struct intel_dp_link_config forced_params;
>  };
>  
>  /* Get length of common rates array potentially limited by max_rate. */
> @@ -44,20 +50,24 @@ int intel_dp_max_common_rate(struct intel_dp *intel_dp)
>  
>  static int forced_lane_count(struct intel_dp *intel_dp)
>  {
> -     if (!intel_dp->link.force_lane_count)
> +     struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
> +
> +     if (!link_caps->forced_params.lane_count)
>               return 0;
>  
> -     return clamp(intel_dp->link.force_lane_count, 1, 
> intel_dp_max_common_lane_count(intel_dp));
> +     return clamp(link_caps->forced_params.lane_count,
> +                  1, intel_dp_max_common_lane_count(intel_dp));
>  }
>  
>  static int forced_link_rate(struct intel_dp *intel_dp)
>  {
> +     struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
>       int len;
>  
> -     if (!intel_dp->link.force_rate)
> +     if (!link_caps->forced_params.rate)
>               return 0;
>  
> -     len = intel_dp_common_len_rate_limit(intel_dp, 
> intel_dp->link.force_rate);
> +     len = intel_dp_common_len_rate_limit(intel_dp, 
> link_caps->forced_params.rate);
>       if (len == 0)
>               return intel_dp_common_rate(intel_dp, 0);
>  
> @@ -76,6 +86,7 @@ static int i915_dp_force_link_rate_show(struct seq_file *m, 
> void *data)
>       struct intel_connector *connector = to_intel_connector(m->private);
>       struct intel_display *display = to_intel_display(connector);
>       struct intel_dp *intel_dp = intel_attached_dp(connector);
> +     struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
>       int current_rate = -1;
>       int force_rate;
>       int err;
> @@ -90,7 +101,7 @@ static int i915_dp_force_link_rate_show(struct seq_file 
> *m, void *data)
>       if (intel_dp->link.active)
>               current_rate = intel_dp->link_rate;
>  
> -     force_rate = intel_dp->link.force_rate;
> +     force_rate = link_caps->forced_params.rate;
>  
>       drm_modeset_unlock(&display->drm->mode_config.connection_mutex);
>  
> @@ -150,6 +161,7 @@ static ssize_t i915_dp_force_link_rate_write(struct file 
> *file,
>       struct intel_connector *connector = to_intel_connector(m->private);
>       struct intel_display *display = to_intel_display(connector);
>       struct intel_dp *intel_dp = intel_attached_dp(connector);
> +     struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
>       int rate;
>       int err;
>  
> @@ -164,7 +176,7 @@ static ssize_t i915_dp_force_link_rate_write(struct file 
> *file,
>       intel_dp_flush_connector_commits(connector);
>  
>       intel_dp_reset_link_params(intel_dp);
> -     intel_dp->link.force_rate = rate;
> +     link_caps->forced_params.rate = rate;
>  
>       drm_modeset_unlock(&display->drm->mode_config.connection_mutex);
>  
> @@ -179,6 +191,7 @@ static int i915_dp_force_lane_count_show(struct seq_file 
> *m, void *data)
>       struct intel_connector *connector = to_intel_connector(m->private);
>       struct intel_display *display = to_intel_display(connector);
>       struct intel_dp *intel_dp = intel_attached_dp(connector);
> +     struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
>       int current_lane_count = -1;
>       int force_lane_count;
>       int err;
> @@ -192,7 +205,7 @@ static int i915_dp_force_lane_count_show(struct seq_file 
> *m, void *data)
>  
>       if (intel_dp->link.active)
>               current_lane_count = intel_dp->lane_count;
> -     force_lane_count = intel_dp->link.force_lane_count;
> +     force_lane_count = link_caps->forced_params.lane_count;
>  
>       drm_modeset_unlock(&display->drm->mode_config.connection_mutex);
>  
> @@ -256,6 +269,7 @@ static ssize_t i915_dp_force_lane_count_write(struct file 
> *file,
>       struct intel_connector *connector = to_intel_connector(m->private);
>       struct intel_display *display = to_intel_display(connector);
>       struct intel_dp *intel_dp = intel_attached_dp(connector);
> +     struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
>       int lane_count;
>       int err;
>  
> @@ -270,7 +284,7 @@ static ssize_t i915_dp_force_lane_count_write(struct file 
> *file,
>       intel_dp_flush_connector_commits(connector);
>  
>       intel_dp_reset_link_params(intel_dp);
> -     intel_dp->link.force_lane_count = lane_count;
> +     link_caps->forced_params.lane_count = lane_count;
>  
>       drm_modeset_unlock(&display->drm->mode_config.connection_mutex);
>  

Reply via email to