summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJouni Högander <jouni.hogander@intel.com>2026-01-27 15:41:18 +0300
committerJouni Högander <jouni.hogander@intel.com>2026-02-02 09:13:39 +0300
commit3a49c54eeffde852b8d3339b30d55a3f29ef4511 (patch)
tree273af5d0e8a56850613bd6e96a5d6cfc96509921
parent74222f79bc1643c13bf1d8ee065fc9a895c105c4 (diff)
downloadlinux-3a49c54eeffde852b8d3339b30d55a3f29ef4511.tar.xz
drm/i915/psr: Do PSR exit on frontbuffer flush on LunarLake and onwards
We need to use intel_psr_exit in frontbuffer flush on LunarLake and onwards if we want to move using trans push mechanism to trigger Frame Change event. Keep PSR1 and PSR2 HW tracking as it is for older platforms as this was seen causing problems there. v2: typo fixed Signed-off-by: Jouni Högander <jouni.hogander@intel.com> Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> Link: https://patch.msgid.link/20260127124120.1069026-10-jouni.hogander@intel.com
-rw-r--r--drivers/gpu/drm/i915/display/intel_psr.c18
1 files changed, 10 insertions, 8 deletions
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)