Re: [PATCH v10 03/10] drm/i915/vrr: Add helper for parsing value to be written into TRANS_PUSH

Nautiyal, Ankit K
2026-01-27T05:25:14Z

On 1/26/2026 1:29 PM, Jouni Högander wrote:
> On Lunarlake and onwards it is possible to generate PSR "frame change"
> event using TRANS_PUSH mechanism. As a preparation add new helper to parse
> value to be written into TRANS_PUSH register. Setting
> LNL_TRANS_PUSH_PSR_PR_EN is done in upcoming patch.

Nitpick : As I have learnt, when the series/patches are merged these
will no longer be patches, but become commits.

So we should avoid referring to them as patches. Perhaps we can use
'change' instead of 'patch' here.

In any case the change looks good to me.

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

>
> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_vrr.c | 22 +++++++++++++++++++---
> 1 file changed, 19 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c
> index db74744ddb31..f26989c74268 100644
> --- a/drivers/gpu/drm/i915/display/intel_vrr.c
> +++ b/drivers/gpu/drm/i915/display/intel_vrr.c
> @@ -676,6 +676,22 @@ intel_vrr_dcb_reset(const struct intel_crtc_state *old_crtc_state,
> intel_de_write(display, PIPEDMC_DCB_BALANCE_RESET(pipe), 0);
> }
>
> +static u32 trans_vrr_push(const struct intel_crtc_state *crtc_state,
> + bool send_push)
> +{
> + struct intel_display *display = to_intel_display(crtc_state);
> + u32 trans_vrr_push = 0;
> +
> + if (intel_vrr_always_use_vrr_tg(display) ||
> + crtc_state->vrr.enable)
> + trans_vrr_push |= TRANS_PUSH_EN;
> +
> + if (send_push)
> + trans_vrr_push |= TRANS_PUSH_SEND;
> +
> + return trans_vrr_push;
> +}
> +
> void intel_vrr_send_push(struct intel_dsb *dsb,
> const struct intel_crtc_state *crtc_state)
> {
> @@ -690,8 +706,7 @@ void intel_vrr_send_push(struct intel_dsb *dsb,
>
> intel_de_write_dsb(display, dsb,
> TRANS_PUSH(display, cpu_transcoder),
> - TRANS_PUSH_EN | TRANS_PUSH_SEND);
> -
> + trans_vrr_push(crtc_state, true));
> if (dsb)
> intel_dsb_nonpost_end(dsb);
> }
> @@ -876,7 +891,8 @@ static void intel_vrr_tg_enable(const struct intel_crtc_state *crtc_state,
> enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
> u32 vrr_ctl;
>
> - intel_de_write(display, TRANS_PUSH(display, cpu_transcoder), TRANS_PUSH_EN);
> + intel_de_write(display, TRANS_PUSH(display, cpu_transcoder),
> + trans_vrr_push(crtc_state, false));
>
> vrr_ctl = VRR_CTL_VRR_ENABLE | trans_vrr_ctl(crtc_state);
>