drm/i915/ddi: disable trancoder port select for 128b/132b SST
authorJani Nikula <jani.nikula@intel.com>
Fri, 3 Jan 2025 13:52:38 +0000 (15:52 +0200)
committerJani Nikula <jani.nikula@intel.com>
Tue, 7 Jan 2025 16:44:24 +0000 (18:44 +0200)
128b/1232b SST will have mst_master_transcoder set and matching
cpu_transcoder. Ensure disable also for 128b/132b SST.

Reviewed-by: Imre Deak <imre.deak@intel.com>
Co-developed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/eaf705b3490d828ba33e85f40a7794d58de7c5ad.1735912293.git.jani.nikula@intel.com
drivers/gpu/drm/i915/display/intel_ddi.c

index 594cbac816d731dc9f37ecde47a165e8c505a064..acb986bc1f33a2e8489a0ad45cfd93f1ab5e24b8 100644 (file)
@@ -658,6 +658,7 @@ void intel_ddi_disable_transcoder_func(const struct intel_crtc_state *crtc_state
        struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
        struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
        enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
+       bool is_mst = intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST);
        u32 ctl;
 
        if (DISPLAY_VER(dev_priv) >= 11)
@@ -677,7 +678,8 @@ void intel_ddi_disable_transcoder_func(const struct intel_crtc_state *crtc_state
                         TRANS_DDI_PORT_SYNC_MASTER_SELECT_MASK);
 
        if (DISPLAY_VER(dev_priv) >= 12) {
-               if (!intel_dp_mst_is_master_trans(crtc_state)) {
+               if (!intel_dp_mst_is_master_trans(crtc_state) ||
+                   (!is_mst && intel_dp_is_uhbr(crtc_state))) {
                        ctl &= ~(TGL_TRANS_DDI_PORT_MASK |
                                 TRANS_DDI_MODE_SELECT_MASK);
                }