> -----Original Message-----
> From: Intel-xe <[email protected]> On Behalf Of Imre
> Deak
> Sent: Wednesday, June 17, 2026 1:39 AM
> To: [email protected]; [email protected]
> Subject: [PATCH v2 28/28] drm/i915/dp_link_caps: Pass link_caps to common
> rate helpers
> 
> Pass the link_caps pointer to the common rate helpers in
> intel_dp_link_caps.c, as it holds the state with the relevant information.
> 
> Signed-off-by: Imre Deak <[email protected]>
> ---
>  drivers/gpu/drm/i915/display/intel_dp.c       | 13 ++++++----
>  .../gpu/drm/i915/display/intel_dp_link_caps.c | 26 +++++++------------
> .../gpu/drm/i915/display/intel_dp_link_caps.h |  6 ++---
> .../drm/i915/display/intel_dp_link_training.c |  5 ++--
>  .../gpu/drm/i915/display/intel_dp_tunnel.c    |  2 +-
>  5 files changed, 25 insertions(+), 27 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index 07266f4e6835b..66346b74b2c04 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -1551,14 +1551,15 @@ intel_dp_max_link_rate(struct intel_dp
> *intel_dp)
>               return forced_params.rate;
> 
>       intel_dp_link_caps_get_max_limits(link_caps, &max_link_limits);
> -     len = intel_dp_common_len_rate_limit(intel_dp,
> max_link_limits.rate);
> +     len = intel_dp_common_len_rate_limit(link_caps,
> max_link_limits.rate);
> 
> -     return intel_dp_common_rate(intel_dp, len - 1);
> +     return intel_dp_common_rate(link_caps, len - 1);
>  }
> 
>  static int
>  intel_dp_min_link_rate(struct intel_dp *intel_dp)  {
> +     struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
>       struct intel_dp_link_config forced_params;
> 
>       intel_dp_link_caps_get_forced_params(intel_dp->link.caps,
> &forced_params); @@ -1566,7 +1567,7 @@ intel_dp_min_link_rate(struct
> intel_dp *intel_dp)
>       if (forced_params.rate)
>               return forced_params.rate;
> 
> -     return intel_dp_common_rate(intel_dp, 0);
> +     return intel_dp_common_rate(link_caps, 0);
>  }
> 
>  int intel_dp_rate_select(struct intel_dp *intel_dp, int rate) @@ -1750,6
> +1751,7 @@ intel_dp_compute_link_config_wide(struct intel_dp *intel_dp,
>                                 const struct drm_connector_state
> *conn_state,
>                                 const struct link_config_limits *limits)  {
> +     struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
>       int bpp, i, lane_count, clock = intel_dp_mode_clock(pipe_config,
> conn_state);
>       int link_rate, link_avail;
> 
> @@ -1760,7 +1762,7 @@ intel_dp_compute_link_config_wide(struct intel_dp
> *intel_dp,
>                       intel_dp_output_format_link_bpp_x16(pipe_config-
> >output_format, bpp);
> 
>               for (i = 0; i <
> intel_dp_link_caps_num_common_rates(intel_dp->link.caps); i++) {
> -                     link_rate = intel_dp_common_rate(intel_dp, i);
> +                     link_rate = intel_dp_common_rate(link_caps, i);
>                       if (link_rate < limits->min_rate ||
>                           link_rate > limits->max_rate)
>                               continue;
> @@ -1984,12 +1986,13 @@ static int dsc_compute_link_config(struct
> intel_dp *intel_dp,
>                                  const struct link_config_limits *limits,
>                                  int dsc_bpp_x16)
>  {
> +     struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
>       const struct drm_display_mode *adjusted_mode = &pipe_config-
> >hw.adjusted_mode;
>       int link_rate, lane_count;
>       int i;
> 
>       for (i = 0; i < intel_dp_link_caps_num_common_rates(intel_dp-
> >link.caps); i++) {
> -             link_rate = intel_dp_common_rate(intel_dp, i);
> +             link_rate = intel_dp_common_rate(link_caps, i);
>               if (link_rate < limits->min_rate || link_rate > 
> limits->max_rate)
>                       continue;
> 
> 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 c5701f02fbf69..0917e7f51a26d 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_link_caps.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_link_caps.c
> @@ -60,19 +60,16 @@ struct intel_dp_link_caps {  };
> 
>  /* Get length of common rates array potentially limited by max_rate. */ -int
> intel_dp_common_len_rate_limit(const struct intel_dp *intel_dp,
> +int intel_dp_common_len_rate_limit(struct intel_dp_link_caps
> +*link_caps,
>                                  int max_rate)
>  {
> -     struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
> -
>       return intel_dp_rate_limit_len(link_caps->rates,
>                                      link_caps->num_rates, max_rate);  }
> 
> -int intel_dp_common_rate(struct intel_dp *intel_dp, int index)
> +int intel_dp_common_rate(struct intel_dp_link_caps *link_caps, int
> +index)
>  {
> -     struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
> -     struct intel_display *display = to_intel_display(intel_dp);
> +     struct intel_display *display = to_intel_display(link_caps->dp);
> 
>       if (drm_WARN_ON(display->drm,
>                       index < 0 || index >= link_caps->num_rates)) @@ -
> 89,11 +86,9 @@ int intel_dp_link_caps_common_rate_idx(struct
> intel_dp_link_caps *link_caps, int  }
> 
>  /* Theoretical max between source and sink */ -int
> intel_dp_max_common_rate(struct intel_dp *intel_dp)
> +int intel_dp_max_common_rate(struct intel_dp_link_caps *link_caps)
>  {
> -     struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
> -
> -     return intel_dp_common_rate(intel_dp, link_caps->num_rates - 1);
> +     return intel_dp_common_rate(link_caps, link_caps->num_rates - 1);
>  }
> 
>  int intel_dp_link_caps_num_common_rates(struct intel_dp_link_caps
> *link_caps) @@ -129,17 +124,16 @@ static int forced_lane_count(struct
> intel_dp_link_caps *link_caps)
> 
>  static int forced_link_rate(struct intel_dp_link_caps *link_caps)  {
> -     struct intel_dp *intel_dp = link_caps->dp;
>       int len;
> 
>       if (!link_caps->forced_params.rate)
>               return 0;
> 
> -     len = intel_dp_common_len_rate_limit(intel_dp, link_caps-
> >forced_params.rate);
> +     len = intel_dp_common_len_rate_limit(link_caps,
> +link_caps->forced_params.rate);
>       if (len == 0)
> -             return intel_dp_common_rate(intel_dp, 0);
> +             return intel_dp_common_rate(link_caps, 0);
> 
> -     return intel_dp_common_rate(intel_dp, len - 1);
> +     return intel_dp_common_rate(link_caps, len - 1);
>  }
> 
>  void intel_dp_link_caps_get_forced_params(struct intel_dp_link_caps
> *link_caps, @@ -152,7 +146,7 @@ void
> intel_dp_link_caps_get_forced_params(struct intel_dp_link_caps *link_caps,
> static int intel_dp_link_config_rate(struct intel_dp_link_caps *link_caps,
>                                    const struct intel_dp_link_config_entry 
> *lc)
> {
> -     return intel_dp_common_rate(link_caps->dp, lc->link_rate_idx);
> +     return intel_dp_common_rate(link_caps, lc->link_rate_idx);
>  }
> 
>  static int intel_dp_link_config_lane_count(const struct
> intel_dp_link_config_entry *lc) @@ -169,7 +163,7 @@ static void
> set_max_link_limits_no_update(struct intel_dp_link_caps *link_caps,  static
> void reset_max_link_limits_no_update(struct intel_dp_link_caps *link_caps)  {
>       struct intel_dp_link_config max_link_limits = {
> -             .rate = intel_dp_max_common_rate(link_caps->dp),
> +             .rate = intel_dp_max_common_rate(link_caps),
>               .lane_count =
> intel_dp_link_caps_max_common_lane_count(link_caps),
>       };
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_caps.h
> b/drivers/gpu/drm/i915/display/intel_dp_link_caps.h
> index 9256f02fed11e..af9028e7cb987 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_link_caps.h
> +++ b/drivers/gpu/drm/i915/display/intel_dp_link_caps.h
> @@ -11,11 +11,11 @@ struct intel_dp;
>  struct intel_dp_link_caps;
>  struct intel_dp_link_config;
> 
> -int intel_dp_common_len_rate_limit(const struct intel_dp *intel_dp,
> +int intel_dp_common_len_rate_limit(struct intel_dp_link_caps
> +*link_caps,
>                                  int max_rate);
> -int intel_dp_common_rate(struct intel_dp *intel_dp, int index);
> +int intel_dp_common_rate(struct intel_dp_link_caps *link_caps, int
> +index);
>  int intel_dp_link_caps_common_rate_idx(struct intel_dp_link_caps
> *link_caps, int rate); -int intel_dp_max_common_rate(struct intel_dp
> *intel_dp);
> +int intel_dp_max_common_rate(struct intel_dp_link_caps *link_caps);
>  int intel_dp_link_caps_num_common_rates(struct intel_dp_link_caps
> *link_caps);  int intel_dp_link_caps_max_common_lane_count(struct
> intel_dp_link_caps *link_caps);
> 
> 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 0d4a0bf1dac53..b521dd11b62a7 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
> @@ -1898,7 +1898,7 @@ static int reduce_link_rate(struct intel_dp *intel_dp,
> int current_rate)
>       if (rate_index <= 0)
>               return -1;
> 
> -     new_rate = intel_dp_common_rate(intel_dp, rate_index - 1);
> +     new_rate = intel_dp_common_rate(link_caps, rate_index - 1);
> 
>       /* TODO: Make switching from UHBR to non-UHBR rates work. */
>       if (drm_dp_is_uhbr_rate(current_rate) !=
> drm_dp_is_uhbr_rate(new_rate)) @@ -1925,6 +1925,7 @@ static bool
> reduce_link_params_in_rate_lane_order(struct intel_dp *intel_dp,
>                                                 const struct intel_crtc_state
> *crtc_state,
>                                                 int *new_link_rate, int
> *new_lane_count)  {
> +     struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
>       int link_rate;
>       int lane_count;
> 
> @@ -1932,7 +1933,7 @@ static bool
> reduce_link_params_in_rate_lane_order(struct intel_dp *intel_dp,
>       link_rate = reduce_link_rate(intel_dp, crtc_state->port_clock);
>       if (link_rate < 0) {
>               lane_count = reduce_lane_count(intel_dp, crtc_state-
> >lane_count);
> -             link_rate = intel_dp_max_common_rate(intel_dp);
> +             link_rate = intel_dp_max_common_rate(link_caps);
>       }
> 
>       if (lane_count < 0)
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_tunnel.c
> b/drivers/gpu/drm/i915/display/intel_dp_tunnel.c
> index 9d9d8d04742bc..76e9753766b9f 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_tunnel.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_tunnel.c
> @@ -58,7 +58,7 @@ static int kbytes_to_mbits(int kbytes)  static int
> get_current_link_bw(struct intel_dp *intel_dp)  {
>       struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
> -     int rate = intel_dp_max_common_rate(intel_dp);
> +     int rate = intel_dp_max_common_rate(link_caps);
>       int lane_count =
> intel_dp_link_caps_max_common_lane_count(link_caps);
> 
>       return intel_dp_max_link_data_rate(intel_dp, rate, lane_count);
> --
LGTM,
Reviewed-by: Nemesa Garg <[email protected]>

> 2.49.1

Reply via email to