Hi Michał, [...] > @@ -2937,13 +2939,21 @@ void intel_psr_pre_plane_update(struct > intel_atomic_state *state, > * - Region Early Transport changing > * - Display WA #1136: skl, bxt > */ > - if (intel_crtc_needs_modeset(new_crtc_state) || > - !new_crtc_state->has_psr || > - !new_crtc_state->active_planes || > - new_crtc_state->has_sel_update != > psr->sel_update_enabled || > - new_crtc_state->enable_psr2_su_region_et != > psr->su_region_et_enabled || > - new_crtc_state->has_panel_replay != > psr->panel_replay_enabled || > - (DISPLAY_VER(display) < 11 && > new_crtc_state->wm_level_disabled)) > + if (intel_crtc_needs_modeset(new_crtc_state)) > + psr->no_psr_reason = "CRTC needs modeset"; > + if (!new_crtc_state->has_psr) > + psr->no_psr_reason = "PSR disabled"; > + if (!new_crtc_state->active_planes) > + psr->no_psr_reason = "All planes inactive"; > + if (new_crtc_state->has_sel_update != > psr->sel_update_enabled) > + psr->no_psr_reason = "Changing between PSR > versions"; > + if (new_crtc_state->enable_psr2_su_region_et != > psr->su_region_et_enabled) > + psr->no_psr_reason = "Changing Region Early > Transport"; > + if (new_crtc_state->has_panel_replay != > psr->panel_replay_enabled) > + psr->no_psr_reason = "Changing Panel Replay > mode"; > + if (DISPLAY_VER(display) < 11 && > new_crtc_state->wm_level_disabled) > + psr->no_psr_reason = "Wa_1136"; > + if (psr->no_psr_reason) > intel_psr_disable_locked(intel_dp); > else if (new_crtc_state->wm_level_disabled) > /* Wa_14015648006 */ Is it possible to have multiple reasons for disabling psr? The way no_psr_reason is set above causes only the last reason to be logged into that field.
--- Best Regards, Krzysztof