> -----Original Message-----
> From: Intel-xe <[email protected]> On Behalf Of Imre Deak
> Sent: Tuesday, 16 June 2026 23.09
> To: [email protected]; [email protected]
> Subject: [PATCH v2 17/28] drm/i915/dp_link_caps: Add helper to get common 
> rate index
> 
> Add intel_dp_link_caps_common_rate_idx() to look up supported link rates
> tracked by the link_caps module by rate. This prepares for tracking these
> capabilities internally within the link caps module.
> 

Reviewed-by: Mika Kahola <[email protected]>

> Signed-off-by: Imre Deak <[email protected]>
> ---
>  drivers/gpu/drm/i915/display/intel_dp_link_caps.c     | 9 +++++++++
>  drivers/gpu/drm/i915/display/intel_dp_link_caps.h     | 1 +
>  drivers/gpu/drm/i915/display/intel_dp_link_training.c | 5 ++---
>  drivers/gpu/drm/i915/display/intel_dp_test.c          | 7 ++++---
>  4 files changed, 16 insertions(+), 6 deletions(-)
> 
> 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 09b60a0cd6fbb..84d9636f4adb4 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_link_caps.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_link_caps.c
> @@ -61,6 +61,15 @@ int intel_dp_common_rate(struct intel_dp *intel_dp, int 
> index)
>       return intel_dp->common_rates[index];
>  }
> 
> +int intel_dp_link_caps_common_rate_idx(struct intel_dp_link_caps *link_caps, 
> int rate)
> +{
> +     struct intel_dp *intel_dp = link_caps->dp;
> +
> +     return intel_dp_rate_index(intel_dp->common_rates,
> +                                intel_dp->num_common_rates,
> +                                rate);
> +}
> +
>  /* Theoretical max between source and sink */
>  int intel_dp_max_common_rate(struct intel_dp *intel_dp)
>  {
> 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 3413f6f760453..7d7d3d11ba3fe 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_link_caps.h
> +++ b/drivers/gpu/drm/i915/display/intel_dp_link_caps.h
> @@ -14,6 +14,7 @@ struct intel_dp_link_config;
>  int intel_dp_common_len_rate_limit(const struct intel_dp *intel_dp,
>                                  int max_rate);
>  int intel_dp_common_rate(struct intel_dp *intel_dp, 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_link_caps_num_common_rates(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 61ada34ab9c8e..ec9bd9b4c800b 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
> @@ -1891,9 +1891,8 @@ static int reduce_link_rate(struct intel_dp *intel_dp, 
> int current_rate)
>       if (forced_params.rate)
>               return -1;
> 
> -     rate_index = intel_dp_rate_index(intel_dp->common_rates,
> -                                      intel_dp->num_common_rates,
> -                                      current_rate);
> +     rate_index = intel_dp_link_caps_common_rate_idx(link_caps,
> +                                                     current_rate);
> 
>       if (rate_index <= 0)
>               return -1;
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_test.c 
> b/drivers/gpu/drm/i915/display/intel_dp_test.c
> index ba44769c9cfbe..da7632536dace 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_test.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_test.c
> @@ -14,6 +14,7 @@
>  #include "intel_display_regs.h"
>  #include "intel_display_types.h"
>  #include "intel_dp.h"
> +#include "intel_dp_link_caps.h"
>  #include "intel_dp_link_training.h"
>  #include "intel_dp_mst.h"
>  #include "intel_dp_test.h"
> @@ -32,6 +33,7 @@ void intel_dp_test_compute_config(struct intel_dp *intel_dp,
>                                 struct intel_crtc_state *pipe_config,
>                                 struct link_config_limits *limits)
>  {
> +     struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
>       struct intel_display *display = to_intel_display(intel_dp);
> 
>       /* For DP Compliance we override the computed bpp for the pipe */
> @@ -54,9 +56,8 @@ void intel_dp_test_compute_config(struct intel_dp *intel_dp,
>                */
>               if (intel_dp_link_params_valid(intel_dp, 
> intel_dp->compliance.test_link_rate,
>                                              
> intel_dp->compliance.test_lane_count)) {
> -                     index = intel_dp_rate_index(intel_dp->common_rates,
> -                                                 intel_dp->num_common_rates,
> -                                                 
> intel_dp->compliance.test_link_rate);
> +                     index = intel_dp_link_caps_common_rate_idx(link_caps,
> +                                                                
> intel_dp->compliance.test_link_rate);
>                       if (index >= 0) {
>                               limits->min_rate = 
> intel_dp->compliance.test_link_rate;
>                               limits->max_rate = 
> intel_dp->compliance.test_link_rate;
> --
> 2.49.1

Reply via email to