Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@intel.com>
To: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: imre.deak@intel.com, jani.nikula@intel.com
Subject: [PATCH v3 16/16] drm/i915/dp: compute config for 128b/132b SST w/o DSC
Date: Fri,  3 Jan 2025 15:52:39 +0200	[thread overview]
Message-ID: <084e4e05bf25a5dd396dd391014943d42b11c88d.1735912293.git.jani.nikula@intel.com> (raw)
In-Reply-To: <cover.1735912293.git.jani.nikula@intel.com>

Enable basic 128b/132b SST functionality without compression. Reuse
intel_dp_mtp_tu_compute_config() to figure out the TU after we've
determined we need to use an UHBR rate.

It's slightly complicated as the M/N computation is done in different
places in MST and SST paths, so we need to avoid trashing the values
later for UHBR.

If uncompressed UHBR fails, we drop to compressed non-UHBR, which is
quite likely to fail as well. We still lack 128b/132b SST+DSC.

We need mst_master_transcoder also for 128b/132b SST. Use cpu_transcoder
directly. Enhanced framing is "don't care" for 128b/132b link.

v2: mst_master_transcoder, enhanced framing (Imre)

Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp.c | 34 +++++++++++++++++--------
 1 file changed, 24 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 0d74adae2ec9..3372beec69fd 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -2519,8 +2519,8 @@ intel_dp_compute_config_limits(struct intel_dp *intel_dp,
 	limits->min_rate = intel_dp_min_link_rate(intel_dp);
 	limits->max_rate = intel_dp_max_link_rate(intel_dp);
 
-	/* FIXME 128b/132b SST support missing */
-	if (!is_mst)
+	/* FIXME 128b/132b SST+DSC support missing */
+	if (!is_mst && dsc)
 		limits->max_rate = min(limits->max_rate, 810000);
 	limits->min_rate = min(limits->min_rate, limits->max_rate);
 
@@ -2638,6 +2638,13 @@ intel_dp_compute_link_config(struct intel_encoder *encoder,
 		 */
 		ret = intel_dp_compute_link_config_wide(intel_dp, pipe_config,
 							conn_state, &limits);
+		if (!ret && intel_dp_is_uhbr(pipe_config))
+			ret = intel_dp_mtp_tu_compute_config(intel_dp,
+							     pipe_config,
+							     pipe_config->pipe_bpp,
+							     pipe_config->pipe_bpp,
+							     conn_state,
+							     0, false);
 		if (ret)
 			dsc_needed = true;
 	}
@@ -3149,8 +3156,13 @@ intel_dp_compute_config(struct intel_encoder *encoder,
 	pipe_config->limited_color_range =
 		intel_dp_limited_color_range(pipe_config, conn_state);
 
-	pipe_config->enhanced_framing =
-		drm_dp_enhanced_frame_cap(intel_dp->dpcd);
+	if (intel_dp_is_uhbr(pipe_config)) {
+		/* 128b/132b SST also needs this */
+		pipe_config->mst_master_transcoder = pipe_config->cpu_transcoder;
+	} else {
+		pipe_config->enhanced_framing =
+			drm_dp_enhanced_frame_cap(intel_dp->dpcd);
+	}
 
 	if (pipe_config->dsc.compression_enable)
 		link_bpp_x16 = pipe_config->dsc.compressed_bpp_x16;
@@ -3181,12 +3193,14 @@ intel_dp_compute_config(struct intel_encoder *encoder,
 
 	intel_dp_audio_compute_config(encoder, pipe_config, conn_state);
 
-	intel_link_compute_m_n(link_bpp_x16,
-			       pipe_config->lane_count,
-			       adjusted_mode->crtc_clock,
-			       pipe_config->port_clock,
-			       intel_dp_bw_fec_overhead(pipe_config->fec_enable),
-			       &pipe_config->dp_m_n);
+	if (!intel_dp_is_uhbr(pipe_config)) {
+		intel_link_compute_m_n(link_bpp_x16,
+				       pipe_config->lane_count,
+				       adjusted_mode->crtc_clock,
+				       pipe_config->port_clock,
+				       intel_dp_bw_fec_overhead(pipe_config->fec_enable),
+				       &pipe_config->dp_m_n);
+	}
 
 	/* FIXME: abstract this better */
 	if (pipe_config->splitter.enable)
-- 
2.39.5


  parent reply	other threads:[~2025-01-03 13:54 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-03 13:52 [PATCH v3 00/16] drm/i915/dp: 128b/132b uncompressed SST Jani Nikula
2025-01-03 13:52 ` [PATCH v3 01/16] drm/mst: remove mgr parameter and debug logging from drm_dp_get_vc_payload_bw() Jani Nikula
2025-01-07  9:55   ` Jani Nikula
2025-01-07 15:14     ` Maxime Ripard
2025-01-07 17:05       ` Jani Nikula
2025-01-09 22:06   ` Lyude Paul
2025-01-10  8:54     ` Jani Nikula
2025-01-03 13:52 ` [PATCH v3 02/16] drm/i915/mst: drop connector parameter from intel_dp_mst_bw_overhead() Jani Nikula
2025-01-03 13:52 ` [PATCH v3 03/16] drm/i915/mst: drop connector parameter from intel_dp_mst_compute_m_n() Jani Nikula
2025-01-03 13:52 ` [PATCH v3 04/16] drm/i915/mst: change return value of mst_stream_find_vcpi_slots_for_bpp() Jani Nikula
2025-01-03 13:52 ` [PATCH v3 05/16] drm/i915/mst: remove crtc_state->pbn Jani Nikula
2025-01-03 13:52 ` [PATCH v3 06/16] drm/i915/mst: split out a helper for figuring out the TU Jani Nikula
2025-01-03 13:52 ` [PATCH v3 07/16] drm/i915/mst: adapt intel_dp_mtp_tu_compute_config() for 128b/132b SST Jani Nikula
2025-01-03 13:52 ` [PATCH v3 08/16] drm/i915/ddi: enable 128b/132b TRANS_DDI_FUNC_CTL mode for UHBR SST Jani Nikula
2025-01-03 13:52 ` [PATCH v3 09/16] drm/i915/ddi: 128b/132b SST also needs DP_TP_CTL_MODE_MST Jani Nikula
2025-01-03 13:52 ` [PATCH v3 10/16] drm/i915/ddi: write payload for 128b/132b SST Jani Nikula
2025-01-03 14:23   ` Imre Deak
2025-01-07  9:54   ` [PATCH] " Jani Nikula
2025-01-03 13:52 ` [PATCH v3 11/16] drm/i915/ddi: initialize 128b/132b SST DP2 VFREQ registers Jani Nikula
2025-01-03 14:23   ` Imre Deak
2025-01-03 13:52 ` [PATCH v3 12/16] drm/i915/ddi: enable ACT handling for 128b/132b SST Jani Nikula
2025-01-03 14:39   ` Imre Deak
2025-01-03 13:52 ` [PATCH v3 13/16] drm/i915/ddi: start distinguishing 128b/132b SST and MST at state readout Jani Nikula
2025-01-03 13:52 ` [PATCH v3 14/16] drm/i915/ddi: handle 128b/132b SST in intel_ddi_read_func_ctl() Jani Nikula
2025-01-03 13:52 ` [PATCH v3 15/16] drm/i915/ddi: disable trancoder port select for 128b/132b SST Jani Nikula
2025-01-03 13:52 ` Jani Nikula [this message]
2025-01-03 15:25 ` ✓ CI.Patch_applied: success for drm/i915/dp: 128b/132b uncompressed SST (rev4) Patchwork
2025-01-03 15:25 ` ✗ CI.checkpatch: warning " Patchwork
2025-01-03 15:27 ` ✓ CI.KUnit: success " Patchwork
2025-01-03 15:45 ` ✓ CI.Build: " Patchwork
2025-01-03 15:47 ` ✓ CI.Hooks: " Patchwork
2025-01-03 15:49 ` ✗ CI.checksparse: warning " Patchwork
2025-01-03 16:14 ` ✓ Xe.CI.BAT: success " Patchwork
2025-01-03 23:32 ` ✗ Xe.CI.Full: failure " Patchwork
2025-01-07 11:07 ` ✓ CI.Patch_applied: success for drm/i915/dp: 128b/132b uncompressed SST (rev5) Patchwork
2025-01-07 11:08 ` ✗ CI.checkpatch: warning " Patchwork
2025-01-07 11:09 ` ✓ CI.KUnit: success " Patchwork
2025-01-07 11:27 ` ✓ CI.Build: " Patchwork
2025-01-07 11:29 ` ✓ CI.Hooks: " Patchwork
2025-01-07 11:31 ` ✗ CI.checksparse: warning " Patchwork
2025-01-07 11:57 ` ✓ Xe.CI.BAT: success " Patchwork
2025-01-07 17:05 ` [PATCH v3 00/16] drm/i915/dp: 128b/132b uncompressed SST Jani Nikula
2025-01-08 15:43 ` ✗ Xe.CI.Full: failure for drm/i915/dp: 128b/132b uncompressed SST (rev5) 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=084e4e05bf25a5dd396dd391014943d42b11c88d.1735912293.git.jani.nikula@intel.com \
    --to=jani.nikula@intel.com \
    --cc=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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox