From: Imre Deak <imre.deak@intel.com>
To: <intel-gfx@lists.freedesktop.org>, <intel-xe@lists.freedesktop.org>
Subject: [PATCH v2 28/28] drm/i915/dp_link_caps: Pass link_caps to common rate helpers
Date: Tue, 16 Jun 2026 23:08:48 +0300 [thread overview]
Message-ID: <20260616200849.3534628-29-imre.deak@intel.com> (raw)
In-Reply-To: <20260616200849.3534628-1-imre.deak@intel.com>
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 <imre.deak@intel.com>
---
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);
--
2.49.1
next prev parent reply other threads:[~2026-06-16 20:10 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-16 20:08 [PATCH v2 00/28] drm/i915/dp_link: Refactor DP link capability logic part1 Imre Deak
2026-06-16 20:08 ` [PATCH v2 01/28] drm/i915/dp: Rename intel_dp_link_config to intel_dp_link_config_entry Imre Deak
2026-06-22 13:11 ` Kahola, Mika
2026-06-22 21:53 ` Michał Grzelak
2026-06-24 15:32 ` Imre Deak
2026-06-16 20:08 ` [PATCH v2 02/28] drm/i915/dp: Add struct intel_dp_link_config Imre Deak
2026-06-22 13:11 ` Kahola, Mika
2026-06-16 20:08 ` [PATCH v2 03/28] drm/i915/dp_link_caps: Introduce DP link capability module Imre Deak
2026-06-22 13:21 ` Kahola, Mika
2026-06-16 20:08 ` [PATCH v2 04/28] drm/i915/dp_link_caps: Move common rate helpers to link caps Imre Deak
2026-06-23 7:27 ` Kahola, Mika
2026-06-16 20:08 ` [PATCH v2 05/28] drm/i915/dp_link_caps: Move forced link param " Imre Deak
2026-06-23 9:40 ` Kahola, Mika
2026-06-23 10:22 ` Luca Coelho
2026-06-23 12:42 ` Imre Deak
2026-06-23 12:47 ` Luca Coelho
2026-06-16 20:08 ` [PATCH v2 06/28] drm/i915/dp: Simplify querying of forced link parameters Imre Deak
2026-06-23 9:49 ` Kahola, Mika
2026-06-16 20:08 ` [PATCH v2 07/28] drm/i915/dp_link_caps: Move forced and max link debugfs entries to link caps Imre Deak
2026-06-23 10:28 ` Luca Coelho
2026-06-23 10:29 ` Luca Coelho
2026-06-16 20:08 ` [PATCH v2 08/28] drm/i915/dp_link_training: Use helpers to get forced link params Imre Deak
2026-06-23 10:31 ` Luca Coelho
2026-06-16 20:08 ` [PATCH v2 09/28] drm/i915/dp_link_caps: Move forced link params to link_caps Imre Deak
2026-06-23 10:32 ` Luca Coelho
2026-06-16 20:08 ` [PATCH v2 10/28] drm/i915/dp_link_caps: Move link config helpers to link caps Imre Deak
2026-06-23 10:34 ` Luca Coelho
2026-06-16 20:08 ` [PATCH v2 11/28] drm/i915/dp_link_caps: Move link config tracking to link_caps Imre Deak
2026-06-23 11:17 ` Kahola, Mika
2026-06-24 11:15 ` Luca Coelho
2026-06-16 20:08 ` [PATCH v2 12/28] drm/i915/dp_link_caps: Rename helper updating the link configurations Imre Deak
2026-06-23 5:11 ` Garg, Nemesa
2026-06-16 20:08 ` [PATCH v2 13/28] drm/i915/dp: Factor out helper to get link rate capabilities Imre Deak
2026-06-24 8:29 ` Kahola, Mika
2026-06-16 20:08 ` [PATCH v2 14/28] drm/i915/dp_link_caps: Pass supported link rates to link caps update Imre Deak
2026-06-24 8:32 ` Kahola, Mika
2026-06-16 20:08 ` [PATCH v2 15/28] drm/i915/dp_link_caps: Add helper to print all supported link rates Imre Deak
2026-06-23 5:21 ` Garg, Nemesa
2026-06-16 20:08 ` [PATCH v2 16/28] drm/i915/dp_link_caps: Add helper to get the number of " Imre Deak
2026-06-24 8:34 ` Kahola, Mika
2026-06-16 20:08 ` [PATCH v2 17/28] drm/i915/dp_link_caps: Add helper to get common rate index Imre Deak
2026-06-24 9:02 ` Kahola, Mika
2026-06-16 20:08 ` [PATCH v2 18/28] drm/i915/dp_link_caps: Move tracking of common rates to link_caps struct Imre Deak
2026-06-24 9:22 ` Kahola, Mika
2026-06-16 20:08 ` [PATCH v2 19/28] drm/i915/dp_link_caps: Track max common lane count in link_caps Imre Deak
2026-06-24 9:46 ` Kahola, Mika
2026-06-16 20:08 ` [PATCH v2 20/28] drm/i915/dp_link_caps: Use max common lane count from link_caps Imre Deak
2026-06-24 11:29 ` Kahola, Mika
2026-06-16 20:08 ` [PATCH v2 21/28] drm/i915/dp_link_caps: Add helpers to get max link limits Imre Deak
2026-06-24 12:44 ` Kahola, Mika
2026-06-16 20:08 ` [PATCH v2 22/28] drm/i915/dp_link_caps: Add helpers to set " Imre Deak
2026-06-24 12:47 ` Kahola, Mika
2026-06-16 20:08 ` [PATCH v2 23/28] drm/i915/dp_link_caps: Add helper to reset " Imre Deak
2026-06-24 12:49 ` Kahola, Mika
2026-06-16 20:08 ` [PATCH v2 24/28] drm/i915/dp_link_caps: Add helper to reset link_caps state Imre Deak
2026-06-24 12:55 ` Kahola, Mika
2026-06-16 20:08 ` [PATCH v2 25/28] drm/i915/dp_link_caps: Move max link limits to link_caps Imre Deak
2026-06-23 5:34 ` Garg, Nemesa
2026-06-16 20:08 ` [PATCH v2 26/28] drm/i915/dp_link_caps: Pass link_caps to static functions Imre Deak
2026-06-23 5:29 ` Garg, Nemesa
2026-06-16 20:08 ` [PATCH v2 27/28] drm/i915/dp_link_caps: Pass link_caps to config update/lookup helpers Imre Deak
2026-06-23 5:25 ` Garg, Nemesa
2026-06-16 20:08 ` Imre Deak [this message]
2026-06-23 5:39 ` [PATCH v2 28/28] drm/i915/dp_link_caps: Pass link_caps to common rate helpers Garg, Nemesa
2026-06-16 20:20 ` ✗ CI.checkpatch: warning for drm/i915/dp_link: Refactor DP link capability logic part1 Patchwork
2026-06-16 20:21 ` ✓ CI.KUnit: success " Patchwork
2026-06-16 21:18 ` ✓ Xe.CI.BAT: " Patchwork
2026-06-16 22:58 ` ✓ i915.CI.BAT: " Patchwork
2026-06-17 1:46 ` ✓ Xe.CI.FULL: " Patchwork
2026-06-17 18:08 ` ✓ i915.CI.Full: " Patchwork
2026-06-24 17:13 ` Imre Deak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260616200849.3534628-29-imre.deak@intel.com \
--to=imre.deak@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.