diff mbox series

[3/4] drm/i915/ptl/dp_mst: Align slave transcoder sequences with spec wrt. DP2 config

Message ID 20241029191215.3889861-4-imre.deak@intel.com (mailing list archive)
State New
Headers show
Series drm/i915/dp_mst: Fix DDI function/DP2 config programming | expand

Commit Message

Imre Deak Oct. 29, 2024, 7:12 p.m. UTC
On PTL during modeset enabling and disabling enable and disable the DP2
configuration for MST slave transcoders as required by the specification.

The spec requires the same programming steps on ADLP+ platforms as well,
this will be addressed by the next patch.

Bspec: 68849
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp_mst.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index 7c16406883594..b1eee8500a383 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -1057,6 +1057,9 @@  static void intel_mst_post_disable_dp(struct intel_atomic_state *state,
 
 	intel_ddi_disable_transcoder_func(old_crtc_state);
 
+	if (DISPLAY_VER(dev_priv) >= 30 && !last_mst_stream)
+		intel_ddi_config_transcoder_dp2(encoder, old_crtc_state, false);
+
 	for_each_pipe_crtc_modeset_disable(display, pipe_crtc, old_crtc_state, i) {
 		const struct intel_crtc_state *old_pipe_crtc_state =
 			intel_atomic_get_old_crtc_state(state, pipe_crtc);
@@ -1224,8 +1227,10 @@  static void intel_mst_pre_enable_dp(struct intel_atomic_state *state,
 	if (DISPLAY_VER(dev_priv) < 12 || !first_mst_stream)
 		intel_ddi_enable_transcoder_clock(encoder, pipe_config);
 
-	if (DISPLAY_VER(dev_priv) >= 30 && !first_mst_stream)
+	if (DISPLAY_VER(dev_priv) >= 30 && !first_mst_stream) {
+		intel_ddi_config_transcoder_dp2(encoder, pipe_config, true);
 		intel_ddi_config_transcoder_func(encoder, pipe_config);
+	}
 
 	intel_dsc_dp_pps_write(&dig_port->base, pipe_config);
 	intel_ddi_set_dp_msa(pipe_config, conn_state);