diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c index 9613c50623dc..9a4354c6bdda 100644 --- a/drivers/gpu/drm/i915/display/intel_psr.c +++ b/drivers/gpu/drm/i915/display/intel_psr.c @@ -3559,7 +3559,14 @@ static void _psr_flush_handle(struct intel_dp *intel_dp) { struct intel_display *display = to_intel_display(intel_dp); - if (DISPLAY_VER(display) < 20 && intel_dp->psr.psr2_sel_fetch_enabled) { + if (DISPLAY_VER(display) >= 20) { + /* + * We can use PSR exit on LunarLake onwards. Also + * using trans push mechanism to trigger Frame Change + * event requires using PSR exit. + */ + intel_psr_exit(intel_dp); + } else if (intel_dp->psr.psr2_sel_fetch_enabled) { /* Selective fetch prior LNL */ if (intel_dp->psr.psr2_sel_fetch_cff_enabled) { /* can we turn CFF off? */ @@ -3579,16 +3586,11 @@ static void _psr_flush_handle(struct intel_dp *intel_dp) intel_psr_configure_full_frame_update(intel_dp); intel_psr_force_update(intel_dp); - } else if (!intel_dp->psr.psr2_sel_fetch_enabled) { + } else { /* - * PSR1 on all platforms - * PSR2 HW tracking - * Panel Replay Full frame update + * On older platforms using PSR exit was seen causing problems */ intel_psr_force_update(intel_dp); - } else { - /* Selective update LNL onwards */ - intel_psr_exit(intel_dp); } if (!intel_dp->psr.active && !intel_dp->psr.busy_frontbuffer_bits)