On 12/23/2025 4:21 PM, Jouni Högander wrote:
We need to use intel_psr_exit in frontbuffer flush on LunarLake and
onwardsif we want to move using trans push mechanism to trigger Frame

typo:

s/onwardsif/onwards if/

Patch LGTM.

Reviewed-by: Ankit Nautiyal <[email protected]>


Change event.

Keep PSR1 and PSR2 HW tracking as it is for older platforms as this was
seen causing problems there.

Signed-off-by: Jouni Högander <[email protected]>
---
  drivers/gpu/drm/i915/display/intel_psr.c | 18 ++++++++++--------
  1 file 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 4336ba188aa7..ee70d0ceeb5b 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)

Reply via email to