Re: [PATCH v10 10/10] drm/i915/psr: Use TRANS_PUSH to trigger frame change event

Nautiyal, Ankit K
2026-01-27T08:35:58Z

On 1/26/2026 1:29 PM, Jouni Högander wrote:
> Now we have everything in place for triggering PSR "frame change" event
> using TRANS_PUSH: use TRANS_PUSH for LunarLake and onwards.
>
> v4:
> - Added call to intel_vrr_psr_frame_change_enable call
> - added setting LNL_TRANS_PUSH_PSR_PR_EN into intel_vrr_send_push
> v3: use HAS_PSR_FRAME_CHANGE macro
> v2: use AND instead of OR in intel_psr_use_trans_push
>
> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>

Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>

> ---
> drivers/gpu/drm/i915/display/intel_psr.c | 8 ++++++--
> drivers/gpu/drm/i915/display/intel_vrr.c | 3 +++
> 2 files changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
> index 9a4354c6bdda..4e644711c571 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -2125,6 +2125,9 @@ static void intel_psr_enable_source(struct intel_dp *intel_dp,
> intel_dmc_block_pkgc(display, intel_dp->psr.pipe, true);
>
> intel_alpm_configure(intel_dp, crtc_state);
> +
> + if (HAS_PSR_TRANS_PUSH_FRAME_CHANGE(display))
> + intel_vrr_psr_frame_change_enable(crtc_state);
> }
>
> static bool psr_interrupt_error_check(struct intel_dp *intel_dp)
> @@ -4569,6 +4572,7 @@ int intel_psr_min_guardband(struct intel_crtc_state *crtc_state)
>
> bool intel_psr_use_trans_push(const struct intel_crtc_state *crtc_state)
> {
> - /* TODO: Enable using trans push when everything is in place */
> - return false;
> + struct intel_display *display = to_intel_display(crtc_state);
> +
> + return HAS_PSR_TRANS_PUSH_FRAME_CHANGE(display) && crtc_state->has_psr;
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c
> index 8a072f90049f..9d814cc2d608 100644
> --- a/drivers/gpu/drm/i915/display/intel_vrr.c
> +++ b/drivers/gpu/drm/i915/display/intel_vrr.c
> @@ -689,6 +689,9 @@ static u32 trans_vrr_push(const struct intel_crtc_state *crtc_state,
> if (send_push)
> trans_vrr_push |= TRANS_PUSH_SEND;
>
> + if (HAS_PSR_TRANS_PUSH_FRAME_CHANGE(display))
> + trans_vrr_push |= LNL_TRANS_PUSH_PSR_PR_EN;
> +
> return trans_vrr_push;
> }
>