Skip to content

Commit 2ed653c

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>
1 parent 8b4bbaf commit 2ed653c

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
@@ -681,7 +681,6 @@ void intel_ddi_disable_transcoder_func(const struct intel_crtc_state *crtc_state
681681
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
682682
struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
683683
enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
684-
bool is_mst = intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST);
685684
u32 ctl;
686685

687686
if (DISPLAY_VER(dev_priv) >= 11)
@@ -701,8 +700,7 @@ void intel_ddi_disable_transcoder_func(const struct intel_crtc_state *crtc_state
701700
TRANS_DDI_PORT_SYNC_MASTER_SELECT_MASK);
702701

703702
if (DISPLAY_VER(dev_priv) >= 12) {
704-
if (!intel_dp_mst_is_master_trans(crtc_state) ||
705-
(!is_mst && intel_dp_is_uhbr(crtc_state))) {
703+
if (!intel_dp_mst_is_master_trans(crtc_state)) {
706704
ctl &= ~(TGL_TRANS_DDI_PORT_MASK |
707705
TRANS_DDI_MODE_SELECT_MASK);
708706
}
@@ -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)