> -----Original Message----- > From: Intel-xe <[email protected]> On Behalf Of Imre Deak > Sent: Tuesday, 16 June 2026 23.08 > To: [email protected]; [email protected] > Subject: [PATCH v2 05/28] drm/i915/dp_link_caps: Move forced link param > helpers to link caps > > Move the helpers handling forced link parameters to intel_dp_link_caps.c. > Their functionality is part of the link capability logic and will be > updated to use the link capability state in follow-up changes. > > Return the forced link rate and lane count through a > struct intel_dp_link_config, which is the canonical way the rest of the > link capability API will also accept and return link configurations. >
Reviewed-by: Mika Kahola <[email protected]> > Signed-off-by: Imre Deak <[email protected]> > --- > drivers/gpu/drm/i915/display/intel_dp.c | 39 ++++++++++--------- > .../gpu/drm/i915/display/intel_dp_link_caps.c | 22 +++++++++++ > .../gpu/drm/i915/display/intel_dp_link_caps.h | 5 +++ > 3 files changed, 47 insertions(+), 19 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c > b/drivers/gpu/drm/i915/display/intel_dp.c > index a34d3704a5667..7643fe079e15b 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp.c > +++ b/drivers/gpu/drm/i915/display/intel_dp.c > @@ -364,17 +364,16 @@ int intel_dp_max_common_lane_count(struct intel_dp > *intel_dp) > return intel_dp->max_common_lane_count; > } > > -static int forced_lane_count(struct intel_dp *intel_dp) > -{ > - return clamp(intel_dp->link.force_lane_count, 1, > intel_dp_max_common_lane_count(intel_dp)); > -} > - > 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 forced_params; > int lane_count; > > + intel_dp_link_caps_get_forced_params(link_caps, &forced_params); > + > if (intel_dp->link.force_lane_count) > - lane_count = forced_lane_count(intel_dp); > + lane_count = forced_params.lane_count; > else > lane_count = intel_dp->link.max_lane_count; > > @@ -391,8 +390,12 @@ int intel_dp_max_lane_count(struct intel_dp *intel_dp) > > 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 (intel_dp->link.force_lane_count) > - return forced_lane_count(intel_dp); > + return forced_params.lane_count; > > return 1; > } > @@ -1655,23 +1658,17 @@ static void intel_dp_print_rates(struct intel_dp > *intel_dp) > drm_dbg_kms(display->drm, "common rates: %s\n", seq_buf_str(&s)); > } > > -static int forced_link_rate(struct intel_dp *intel_dp) > -{ > - int len = intel_dp_common_len_rate_limit(intel_dp, > intel_dp->link.force_rate); > - > - if (len == 0) > - return intel_dp_common_rate(intel_dp, 0); > - > - return intel_dp_common_rate(intel_dp, len - 1); > -} > - > 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 forced_params; > int len; > > + intel_dp_link_caps_get_forced_params(link_caps, &forced_params); > + > if (intel_dp->link.force_rate) > - return forced_link_rate(intel_dp); > + return forced_params.rate; > > len = intel_dp_common_len_rate_limit(intel_dp, intel_dp->link.max_rate); > > @@ -1681,8 +1678,12 @@ intel_dp_max_link_rate(struct intel_dp *intel_dp) > static int > intel_dp_min_link_rate(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 (intel_dp->link.force_rate) > - return forced_link_rate(intel_dp); > + return forced_params.rate; > > return intel_dp_common_rate(intel_dp, 0); > } > 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 37ffd714c6a42..1d3a3ff007a03 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_link_caps.c > +++ b/drivers/gpu/drm/i915/display/intel_dp_link_caps.c > @@ -41,6 +41,28 @@ int intel_dp_max_common_rate(struct intel_dp *intel_dp) > return intel_dp_common_rate(intel_dp, intel_dp->num_common_rates - 1); > } > > +static int forced_lane_count(struct intel_dp *intel_dp) > +{ > + return clamp(intel_dp->link.force_lane_count, 1, > intel_dp_max_common_lane_count(intel_dp)); > +} > + > +static int forced_link_rate(struct intel_dp *intel_dp) > +{ > + int len = intel_dp_common_len_rate_limit(intel_dp, > intel_dp->link.force_rate); > + > + if (len == 0) > + return intel_dp_common_rate(intel_dp, 0); > + > + return intel_dp_common_rate(intel_dp, len - 1); > +} > + > +void intel_dp_link_caps_get_forced_params(struct intel_dp_link_caps > *link_caps, > + struct intel_dp_link_config > *forced_params) > +{ > + forced_params->rate = forced_link_rate(link_caps->dp); > + forced_params->lane_count = forced_lane_count(link_caps->dp); > +} > + > struct intel_dp_link_caps *intel_dp_link_caps_init(struct intel_dp *intel_dp) > { > struct intel_dp_link_caps *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 3248777d1287f..61dbce86ee3d0 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_link_caps.h > +++ b/drivers/gpu/drm/i915/display/intel_dp_link_caps.h > @@ -5,12 +5,17 @@ > #define __INTEL_DP_LINK_CAPS_H__ > > 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 max_rate); > int intel_dp_common_rate(struct intel_dp *intel_dp, int index); > int intel_dp_max_common_rate(struct intel_dp *intel_dp); > > +void intel_dp_link_caps_get_forced_params(struct intel_dp_link_caps > *link_caps, > + struct intel_dp_link_config > *forced_params); > + > struct intel_dp_link_caps *intel_dp_link_caps_init(struct intel_dp > *intel_dp); > void intel_dp_link_caps_cleanup(struct intel_dp_link_caps *link_caps); > > -- > 2.49.1
