On LunarLake and onwards we are using vrr send push mechanism to trigger
frame change event. Due to this we need to trigger it using
intel_vrr_psr_send_push provided by VRR code on legacy cursor update.

Signed-off-by: Jouni Högander <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_cursor.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c 
b/drivers/gpu/drm/i915/display/intel_cursor.c
index 050eacc709cc1..dc8629f843662 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -25,6 +25,7 @@
 #include "intel_psr.h"
 #include "intel_psr_regs.h"
 #include "intel_vblank.h"
+#include "intel_vrr.h"
 #include "skl_watermark.h"
 
 /* Cursor formats */
@@ -790,6 +791,7 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
        struct intel_crtc_state *crtc_state =
                to_intel_crtc_state(crtc->base.state);
        struct intel_crtc_state *new_crtc_state;
+       struct intel_display *display = to_intel_display(crtc);
        struct intel_vblank_evade_ctx evade;
        int ret;
 
@@ -910,6 +912,9 @@ intel_legacy_cursor_update(struct drm_plane *_plane,
                intel_plane_disable_arm(plane, crtc_state);
        }
 
+       if (crtc_state->has_psr)
+               intel_vrr_psr_send_push(display, crtc_state->cpu_transcoder);
+
        local_irq_enable();
 
        intel_psr_unlock(crtc_state);
-- 
2.34.1

Reply via email to