Skip to content

Commit 8058b49

Browse files
ideakrodrigovivi
authored andcommitted
drm/i915/dp: Fix disabling the transcoder function in 128b/132b mode
During disabling the transcoder in DP 128b/132b mode (both in case of an MST master transcoder and in case of SST) the transcoder function must be first disabled without changing any other field in the register (in particular leaving the DDI port and mode select fields unchanged) and clearing the DDI port and mode select fields separately, later during the disabling sequences. Fix the sequence accordingly. Bspec: 54128, 65448, 68849 Cc: Jani Nikula <jani.nikula@intel.com> Fixes: 79a6734 ("drm/i915/ddi: disable trancoder port select for 128b/132b SST") Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20250217223828.1166093-3-imre.deak@intel.com Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> (cherry picked from commit 2ed653c) Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
1 parent b9275ea commit 8058b49

File tree

1 file changed

+2
-4
lines changed

1 file changed

+2
-4
lines changed

drivers/gpu/drm/i915/display/intel_ddi.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -658,7 +658,6 @@ void intel_ddi_disable_transcoder_func(const struct intel_crtc_state *crtc_state
658658
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
659659
struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
660660
enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
661-
bool is_mst = intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST);
662661
u32 ctl;
663662

664663
if (DISPLAY_VER(dev_priv) >= 11)
@@ -678,8 +677,7 @@ void intel_ddi_disable_transcoder_func(const struct intel_crtc_state *crtc_state
678677
TRANS_DDI_PORT_SYNC_MASTER_SELECT_MASK);
679678

680679
if (DISPLAY_VER(dev_priv) >= 12) {
681-
if (!intel_dp_mst_is_master_trans(crtc_state) ||
682-
(!is_mst && intel_dp_is_uhbr(crtc_state))) {
680+
if (!intel_dp_mst_is_master_trans(crtc_state)) {
683681
ctl &= ~(TGL_TRANS_DDI_PORT_MASK |
684682
TRANS_DDI_MODE_SELECT_MASK);
685683
}
@@ -3134,7 +3132,7 @@ static void intel_ddi_post_disable_dp(struct intel_atomic_state *state,
31343132
intel_dp_set_power(intel_dp, DP_SET_POWER_D3);
31353133

31363134
if (DISPLAY_VER(dev_priv) >= 12) {
3137-
if (is_mst) {
3135+
if (is_mst || intel_dp_is_uhbr(old_crtc_state)) {
31383136
enum transcoder cpu_transcoder = old_crtc_state->cpu_transcoder;
31393137

31403138
intel_de_rmw(dev_priv,

0 commit comments

Comments
 (0)