mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
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:79a6734cd5("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 commit2ed653c7b8) Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
@@ -658,7 +658,6 @@ 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)
|
||||
@@ -678,8 +677,7 @@ 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) ||
|
||||
(!is_mst && intel_dp_is_uhbr(crtc_state))) {
|
||||
if (!intel_dp_mst_is_master_trans(crtc_state)) {
|
||||
ctl &= ~(TGL_TRANS_DDI_PORT_MASK |
|
||||
TRANS_DDI_MODE_SELECT_MASK);
|
||||
}
|
||||
@@ -3134,7 +3132,7 @@ static void intel_ddi_post_disable_dp(struct intel_atomic_state *state,
|
||||
intel_dp_set_power(intel_dp, DP_SET_POWER_D3);
|
||||
|
||||
if (DISPLAY_VER(dev_priv) >= 12) {
|
||||
if (is_mst) {
|
||||
if (is_mst || intel_dp_is_uhbr(old_crtc_state)) {
|
||||
enum transcoder cpu_transcoder = old_crtc_state->cpu_transcoder;
|
||||
|
||||
intel_de_rmw(dev_priv,
|
||||
|
||||
Reference in New Issue
Block a user