From: Arun R Murthy <arun.r.murthy@intel.com>
To: "Imre Deak" <imre.deak@intel.com>,
"Ville Syrjälä" <ville.syrjala@linux.intel.com>,
"Jani Nikula" <jani.nikula@linux.intel.com>
Cc: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org,
Arun R Murthy <arun.r.murthy@intel.com>
Subject: [PATCH RFC 2/4] drm/i915/dp: Read LTTPR caps followed by DPRX caps
Date: Thu, 05 Mar 2026 13:48:12 +0530 [thread overview]
Message-ID: <20260305-dp_aux-v1-2-54ee0b5f5158@intel.com> (raw)
In-Reply-To: <20260305-dp_aux-v1-0-54ee0b5f5158@intel.com>
As per the DP spec DP2.1 section 3.6.8.6.1, section 2.12.1,
section 2.12.3 (Link Policy) the LTTPR caps is to be read first followed
by the DPRX capability.
Read the LTTPR capabilities followed by the DPRX capabilities and then
the ULP capabilities.
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
.../gpu/drm/i915/display/intel_dp_link_training.c | 35 ++++++++++------------
1 file changed, 15 insertions(+), 20 deletions(-)
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 54c585c59b900eb3c480502d89736fefa111eba4..68ab938f18f3b6f3c889f408cd1901041834fe82 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
@@ -93,13 +93,11 @@ static void intel_dp_read_lttpr_phy_caps(struct intel_dp *intel_dp,
phy_caps);
}
-static bool intel_dp_read_lttpr_common_caps(struct intel_dp *intel_dp,
- const u8 dpcd[DP_RECEIVER_CAP_SIZE])
+static bool intel_dp_read_lttpr_common_caps(struct intel_dp *intel_dp)
{
int ret;
- ret = drm_dp_read_lttpr_common_caps(&intel_dp->aux, dpcd,
- intel_dp->lttpr_common_caps);
+ ret = drm_dp_read_lttpr_caps(&intel_dp->aux, intel_dp->lttpr_common_caps);
if (ret < 0)
goto reset_caps;
@@ -145,12 +143,12 @@ bool intel_dp_lttpr_transparent_mode_enabled(struct intel_dp *intel_dp)
* Return the number of detected LTTPRs in non-transparent mode or 0 if the
* LTTPRs are in transparent mode or the detection failed.
*/
-static int intel_dp_init_lttpr_phys(struct intel_dp *intel_dp, const u8 dpcd[DP_RECEIVER_CAP_SIZE])
+static int intel_dp_init_lttpr(struct intel_dp *intel_dp)
{
int lttpr_count;
int ret;
- if (!intel_dp_read_lttpr_common_caps(intel_dp, dpcd))
+ if (!intel_dp_read_lttpr_common_caps(intel_dp))
return 0;
lttpr_count = drm_dp_lttpr_count(intel_dp->lttpr_common_caps);
@@ -195,19 +193,16 @@ static int intel_dp_init_lttpr_phys(struct intel_dp *intel_dp, const u8 dpcd[DP_
return 0;
}
-static int intel_dp_init_lttpr(struct intel_dp *intel_dp, const u8 dpcd[DP_RECEIVER_CAP_SIZE])
+static int intel_dp_init_lttpr_phys(struct intel_dp *intel_dp, int lttpr_count)
{
- int lttpr_count;
int i;
- lttpr_count = intel_dp_init_lttpr_phys(intel_dp, dpcd);
-
for (i = 0; i < lttpr_count; i++) {
- intel_dp_read_lttpr_phy_caps(intel_dp, dpcd, DP_PHY_LTTPR(i));
+ intel_dp_read_lttpr_phy_caps(intel_dp, intel_dp->dpcd, DP_PHY_LTTPR(i));
drm_dp_dump_lttpr_desc(&intel_dp->aux, DP_PHY_LTTPR(i));
}
- return lttpr_count;
+ return 0;
}
int intel_dp_read_dprx_caps(struct intel_dp *intel_dp, u8 dpcd[DP_RECEIVER_CAP_SIZE])
@@ -261,23 +256,23 @@ int intel_dp_init_lttpr_and_dprx_caps(struct intel_dp *intel_dp)
*/
if (!intel_dp_is_edp(intel_dp) &&
(DISPLAY_VER(display) >= 10 && !display->platform.geminilake)) {
- u8 dpcd[DP_RECEIVER_CAP_SIZE];
- int err = intel_dp_read_dprx_caps(intel_dp, dpcd);
-
- if (err != 0)
- return err;
-
- lttpr_count = intel_dp_init_lttpr(intel_dp, dpcd);
+ /*
+ * Spec DP2.1 section 3.6.8.6.1, section 2.12.1, section 2.12.3
+ * (Link Policy) the LTTPR caps is to be read first followed by
+ * the DPRX capability
+ */
+ lttpr_count = intel_dp_init_lttpr(intel_dp);
}
/*
* The DPTX shall read the DPRX caps after LTTPR detection, so re-read
* it here.
*/
- if (drm_dp_read_dpcd_caps(&intel_dp->aux, intel_dp->dpcd)) {
+ if (intel_dp_read_dprx_caps(intel_dp, intel_dp->dpcd)) {
intel_dp_reset_lttpr_common_caps(intel_dp);
return -EIO;
}
+ intel_dp_init_lttpr_phys(intel_dp, lttpr_count);
return lttpr_count;
}
--
2.25.1
next prev parent reply other threads:[~2026-03-05 8:19 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-05 8:18 [PATCH RFC 0/4] DP: Read LTTPR caps followed by DPRX caps Arun R Murthy
2026-03-05 8:18 ` [PATCH RFC 1/4] drm/display/dp: Read LTTPR caps without " Arun R Murthy
2026-03-05 9:18 ` Jani Nikula
2026-03-06 4:08 ` Murthy, Arun R
2026-03-05 16:29 ` Imre Deak
2026-03-06 4:10 ` Murthy, Arun R
2026-03-05 8:18 ` Arun R Murthy [this message]
2026-03-05 8:18 ` [PATCH RFC 3/4] drm/i915/dp: On HPD read LTTPR caps followed by " Arun R Murthy
2026-03-05 8:18 ` [PATCH RFC 4/4] drm/i915/dp: DPRX/LTTPR caps for DP should be read once Arun R Murthy
2026-03-05 16:11 ` [PATCH RFC 0/4] DP: Read LTTPR caps followed by DPRX caps Imre Deak
2026-03-06 4:29 ` Murthy, Arun R
2026-03-06 9:46 ` Imre Deak
2026-03-10 8:58 ` Murthy, Arun R
2026-03-06 4:29 ` Murthy, Arun R
2026-03-06 3:42 ` ✗ CI.checkpatch: warning for " Patchwork
2026-03-06 3:44 ` ✓ CI.KUnit: success " Patchwork
2026-03-06 4:33 ` ✗ Xe.CI.BAT: failure " Patchwork
2026-03-07 1:55 ` ✗ Xe.CI.FULL: " Patchwork
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=20260305-dp_aux-v1-2-54ee0b5f5158@intel.com \
--to=arun.r.murthy@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=imre.deak@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=ville.syrjala@linux.intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox