On Wed, 2026-07-01 at 18:31 +0300, Imre Deak wrote:
> Remove the min/max rate and lane count fields from struct
> link_config_limits after all state computation is converted to use the
> configuration filter.
> 
> A simple min/max range cannot fully describe the valid configuration
> set once individual configurations are disabled (for example by
> fallback), as it may allow combinations that are not actually valid.
> The configuration filter, on the other hand, always represents a
> consistent set of valid configurations.
> 
> Signed-off-by: Imre Deak <[email protected]>
> ---
>  drivers/gpu/drm/i915/display/intel_dp.c       | 86 -------------------
>  drivers/gpu/drm/i915/display/intel_dp.h       |  6 --
>  .../gpu/drm/i915/display/intel_dp_link_caps.c |  4 +-
>  .../gpu/drm/i915/display/intel_dp_link_caps.h |  2 -
>  drivers/gpu/drm/i915/display/intel_dp_test.c  | 23 -----
>  5 files changed, 2 insertions(+), 119 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index 79e3334d24332..16b3ab9732120 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -354,44 +354,6 @@ static int intel_dp_get_max_common_lane_count(struct 
> intel_dp *intel_dp)
>       return min3(source_max, sink_max, lane_max);
>  }
>  
> -static int intel_dp_max_lane_count(struct intel_dp *intel_dp)
> -{
> -     struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
> -     struct intel_dp_link_config max_link_limits;
> -     struct intel_dp_link_config forced_params;
> -     int lane_count;
> -
> -     intel_dp_link_caps_get_max_limits(link_caps, &max_link_limits);
> -     intel_dp_link_caps_get_forced_params(link_caps, &forced_params);
> -
> -     if (forced_params.lane_count)
> -             lane_count = forced_params.lane_count;
> -     else
> -             lane_count = max_link_limits.lane_count;
> -
> -     switch (lane_count) {
> -     case 1:
> -     case 2:
> -     case 4:
> -             return lane_count;
> -     default:
> -             MISSING_CASE(lane_count);
> -             return 1;
> -     }
> -}
> -
> -static int intel_dp_min_lane_count(struct intel_dp *intel_dp)
> -{
> -     struct intel_dp_link_config forced_params;
> -
> -     intel_dp_link_caps_get_forced_params(intel_dp->link.caps, 
> &forced_params);
> -
> -     if (forced_params.lane_count)
> -             return forced_params.lane_count;
> -
> -     return 1;
> -}
> -
>  int intel_dp_link_bw_overhead(int link_clock, int lane_count, int hdisplay,
>                             int dsc_slice_count, int bpp_x16, unsigned long 
> flags)
>  {
> @@ -1540,39 +1502,6 @@ static void intel_dp_print_rates(struct intel_dp 
> *intel_dp)
>       intel_dp_link_caps_print_common_rates(intel_dp->link.caps);
>  }
>  
> -static int
> -intel_dp_max_link_rate(struct intel_dp *intel_dp)
> -{
> -     struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
> -     struct intel_dp_link_config max_link_limits;
> -     struct intel_dp_link_config forced_params;
> -     int len;
> -
> -     intel_dp_link_caps_get_forced_params(link_caps, &forced_params);
> -
> -     if (forced_params.rate)
> -             return forced_params.rate;
> -
> -     intel_dp_link_caps_get_max_limits(link_caps, &max_link_limits);
> -     len = intel_dp_common_len_rate_limit(link_caps, max_link_limits.rate);
> -
> -     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);
> -
> -     if (forced_params.rate)
> -             return forced_params.rate;
> -
> -     return intel_dp_common_rate(link_caps, 0);
> -}
> -
>  int intel_dp_rate_select(struct intel_dp *intel_dp, int rate)
>  {
>       struct intel_display *display = to_intel_display(intel_dp);
> @@ -2711,18 +2640,6 @@ intel_dp_compute_config_limits(struct intel_dp 
> *intel_dp,
>       struct intel_connector *connector =
>               to_intel_connector(conn_state->connector);
>  
> -     /*
> -      * Remove the following min/max rate and lane count setup, once
> -      * all users are converted to use link_config_mask instead.
> -      */
> -     limits->min_rate = intel_dp_min_link_rate(intel_dp);
> -     limits->max_rate = intel_dp_max_link_rate(intel_dp);
> -
> -     limits->min_rate = min(limits->min_rate, limits->max_rate);
> -
> -     limits->min_lane_count = intel_dp_min_lane_count(intel_dp);
> -     limits->max_lane_count = intel_dp_max_lane_count(intel_dp);
> -
>       limits->link_config_filter = INTEL_DP_LINK_CAPS_FILTER_ALL;
>  
>       limits->pipe.min_bpp = intel_dp_min_bpp(crtc_state->output_format);
> @@ -2802,9 +2719,6 @@ intel_dp_compute_config_limits(struct intel_dp 
> *intel_dp,
>                * configuration, and typically on older panels these
>                * values correspond to the native resolution of the panel.
>                */
> -             limits->min_lane_count = limits->max_lane_count;
> -             limits->min_rate = limits->max_rate;
> -
>               if (!intel_dp_get_connector_max_link_config(connector, limits, 
> &max_config))
>                       return false;
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.h 
> b/drivers/gpu/drm/i915/display/intel_dp.h
> index 9564369ea4852..0ec519fa12368 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.h
> +++ b/drivers/gpu/drm/i915/display/intel_dp.h
> @@ -28,12 +28,6 @@ struct intel_dp_link_config;
>  struct intel_encoder;
>  
>  struct link_config_limits {
> -     /*
> -      * TODO: Remove the following min/max rate and lane count limits
> -      * once all users are converted to use link_config_mask instead.
> -      */
> -     int min_rate, max_rate;
> -     int min_lane_count, max_lane_count;
>       struct intel_dp_link_caps_filter link_config_filter;
>       struct {
>               /* Uncompressed DSC input or link output bpp in 1 bpp units */
> 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 4ce35b76afee6..766dc9a98e05a 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_link_caps.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_link_caps.c
> @@ -242,8 +242,8 @@ intel_dp_link_caps_connector_fallback_order(bool is_mst)
>  }
>  
>  /* Get length of common rates array potentially limited by max_rate. */
> -int intel_dp_common_len_rate_limit(struct intel_dp_link_caps *link_caps,
> -                                int max_rate)
> +static int intel_dp_common_len_rate_limit(struct intel_dp_link_caps 
> *link_caps,
> +                                       int max_rate)
>  {
>       return intel_dp_rate_limit_len(link_caps->rates,
>                                      link_caps->num_rates, max_rate);
> 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 3c7e6c8d1ab1d..bb785c15c91f6 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_link_caps.h
> +++ b/drivers/gpu/drm/i915/display/intel_dp_link_caps.h
> @@ -119,8 +119,6 @@ intel_dp_link_caps_connector_compute_order(struct 
> intel_connector *connector);
>  struct intel_dp_link_caps_order
>  intel_dp_link_caps_connector_fallback_order(bool is_mst);
>  
> -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_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_link_caps *link_caps);
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_test.c 
> b/drivers/gpu/drm/i915/display/intel_dp_test.c
> index ec7fa690910bb..0551a1ce60d39 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_test.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_test.c
> @@ -114,7 +114,6 @@ bool intel_dp_test_compute_config(struct intel_connector 
> *connector,
>                                 struct link_config_limits *limits)
>  {
>       struct intel_dp *intel_dp = intel_attached_dp(connector);
> -     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 */
> @@ -130,28 +129,6 @@ bool intel_dp_test_compute_config(struct intel_connector 
> *connector,
>  
>       /* Use values requested by Compliance Test Request */
>       if (intel_dp->compliance.test_type == DP_TEST_LINK_TRAINING) {
> -             int index;
> -
> -             /*
> -              * TODO: Remove the following min/max link limit setup
> -              * after converting to use the link configuration filter
> -              * instead in limits.
> -              */
> -             /* Validate the compliance test data since max values
> -              * might have changed due to link train fallback.
> -              */
> -             if (intel_dp_link_params_valid(intel_dp, 
> intel_dp->compliance.test_link_rate,
> -                                            
> intel_dp->compliance.test_lane_count)) {
> -                     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;
> -                     }
> -                     limits->min_lane_count = 
> intel_dp->compliance.test_lane_count;
> -                     limits->max_lane_count = 
> intel_dp->compliance.test_lane_count;
> -             }
> -
>               if (!set_filter_for_link_params(connector,
>                                               
> intel_dp->compliance.test_link_rate,
>                                               
> intel_dp->compliance.test_lane_count,

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

--
Cheers,
Luca.

Reply via email to