Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915/display: Limit the eDP joiner to the pipe A and B pair
@ 2026-11-06  9:41 Mika Kahola
  2026-11-06  9:50 ` ✓ CI.KUnit: success for " Patchwork
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Mika Kahola @ 2026-11-06  9:41 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Mika Kahola

eDP only works joined as the pipe A and B pair, other consecutive pairs
fail to come up. Keep the eDP joiner primary on pipe A. DP and unjoined
eDP are unaffected.

Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp.c | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index ef164a797618..b359a66a018f 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -1362,16 +1362,27 @@ static int intel_dp_mso_pixel_clock(struct intel_dp *intel_dp, int pixel_clock)
 	return pixel_clock / intel_dp->mso_link_count;
 }
 
+/* eDP can only be joined as the pipe A and B pair. */
+static u8 intel_dp_joiner_valid_primary_pipe_mask(struct intel_dp *intel_dp,
+						  int num_joined_pipes)
+{
+	struct intel_display *display = to_intel_display(intel_dp);
+	u8 pipe_mask = intel_joiner_valid_primary_pipe_mask(display, num_joined_pipes);
+
+	if (num_joined_pipes > 1 && intel_dp_is_edp(intel_dp))
+		pipe_mask &= BIT(PIPE_A);
+
+	return pipe_mask;
+}
+
 static
 bool intel_dp_can_join(struct intel_dp *intel_dp,
 		       int num_joined_pipes)
 {
-	struct intel_display *display = to_intel_display(intel_dp);
-
 	if (num_joined_pipes > 1 && !intel_dp_has_joiner(intel_dp))
 		return false;
 
-	return intel_joiner_valid_primary_pipe_mask(display, num_joined_pipes);
+	return intel_dp_joiner_valid_primary_pipe_mask(intel_dp, num_joined_pipes);
 }
 
 bool intel_dp_dotclk_valid(struct intel_display *display,
@@ -3083,7 +3094,6 @@ intel_dp_compute_link_config(struct intel_encoder *encoder,
 			     struct drm_connector_state *conn_state,
 			     bool respect_downstream_limits)
 {
-	struct intel_display *display = to_intel_display(encoder);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
 	struct intel_connector *connector =
 		to_intel_connector(conn_state->connector);
@@ -3099,7 +3109,8 @@ intel_dp_compute_link_config(struct intel_encoder *encoder,
 
 	for_each_joiner_candidate(connector, adjusted_mode, num_joined_pipes) {
 		/* If the pipe can't be a joiner primary, skip early. */
-		if (!(intel_joiner_valid_primary_pipe_mask(display, num_joined_pipes) & BIT(crtc->pipe)))
+		if (!(intel_dp_joiner_valid_primary_pipe_mask(intel_dp, num_joined_pipes) &
+		      BIT(crtc->pipe)))
 			continue;
 
 		/*
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-11-09 13:01 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-06  9:41 [PATCH] drm/i915/display: Limit the eDP joiner to the pipe A and B pair Mika Kahola
2026-11-06  9:50 ` ✓ CI.KUnit: success for " Patchwork
2026-11-06 10:07 ` [PATCH] " sashiko-bot
2026-11-06 10:25 ` ✓ Xe.CI.BAT: success for " Patchwork
2026-11-06 15:25 ` [PATCH] " Ville Syrjälä
2026-11-09 13:01   ` Kahola, Mika
2026-11-07 11:04 ` ✗ Xe.CI.FULL: failure for " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox