> -----Original Message-----
> From: Manna, Animesh <[email protected]>
> Sent: Thursday, June 4, 2026 1:24 AM
> To: [email protected]; [email protected]
> Cc: Shankar, Uma <[email protected]>; Dibin Moolakadan Subrahmanian
> <[email protected]>; [email protected];
> Nikula, Jani <[email protected]>; Manna, Animesh
> <[email protected]>
> Subject: [PATCH v8 08/20] drm/i915/vrr: Pass transcoder to
> intel_vrr_set_fixed_rr_timings()
>
> Take the target transcoder as an explicit parameter so the helper can program
> VRR VMIN/VMAX/FLIPLINE registers for transcoders other than the crtc_state-
> >cpu_transcoder (e.g. the CMTG transcoder).
>
> No functional change: all existing callers pass crtc_state->cpu_transcoder.
>
> Signed-off-by: Animesh Manna <[email protected]>
> ---
> drivers/gpu/drm/i915/display/intel_display.c | 2 +-
> drivers/gpu/drm/i915/display/intel_vrr.c | 14 +++++++-------
> drivers/gpu/drm/i915/display/intel_vrr.h | 5 ++++-
> 3 files changed, 12 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index a6a1da4bd98d..416dea9e0d36 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -6674,7 +6674,7 @@ static void intel_pipe_fastset(const struct
> intel_crtc_state *old_crtc_state,
> if (new_crtc_state->update_lrr) {
> intel_set_transcoder_timings_lrr(new_crtc_state, new_crtc_state-
> >cpu_transcoder);
> intel_cmtg_set_timings(new_crtc_state, true);
> - intel_vrr_set_fixed_rr_timings(new_crtc_state);
> + intel_vrr_set_fixed_rr_timings(new_crtc_state,
> +new_crtc_state->cpu_transcoder);
> intel_vrr_transcoder_enable(new_crtc_state);
> }
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c
> b/drivers/gpu/drm/i915/display/intel_vrr.c
> index e03b5daac5be..15d22de66d63 100644
> --- a/drivers/gpu/drm/i915/display/intel_vrr.c
> +++ b/drivers/gpu/drm/i915/display/intel_vrr.c
> @@ -318,19 +318,19 @@ int intel_vrr_fixed_rr_hw_flipline(const struct
> intel_crtc_state *crtc_state)
> return intel_vrr_fixed_rr_hw_vtotal(crtc_state);
> }
>
> -void intel_vrr_set_fixed_rr_timings(const struct intel_crtc_state
> *crtc_state)
> +void intel_vrr_set_fixed_rr_timings(const struct intel_crtc_state
> *crtc_state,
> + enum transcoder transcoder)
> {
> struct intel_display *display = to_intel_display(crtc_state);
> - enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
>
> if (!intel_vrr_possible(crtc_state))
> return;
>
> - intel_de_write(display, TRANS_VRR_VMIN(display, cpu_transcoder),
> + intel_de_write(display, TRANS_VRR_VMIN(display, transcoder),
> intel_vrr_fixed_rr_hw_vmin(crtc_state) - 1);
> - intel_de_write(display, TRANS_VRR_VMAX(display, cpu_transcoder),
> + intel_de_write(display, TRANS_VRR_VMAX(display, transcoder),
> intel_vrr_fixed_rr_hw_vmax(crtc_state) - 1);
> - intel_de_write(display, TRANS_VRR_FLIPLINE(display, cpu_transcoder),
> + intel_de_write(display, TRANS_VRR_FLIPLINE(display, transcoder),
> intel_vrr_fixed_rr_hw_flipline(crtc_state) - 1); }
>
> @@ -645,7 +645,7 @@ void intel_vrr_set_transcoder_timings(const struct
> intel_crtc_state *crtc_state)
> lower_32_bits(crtc_state->cmrr.cmrr_n));
> }
>
> - intel_vrr_set_fixed_rr_timings(crtc_state);
> + intel_vrr_set_fixed_rr_timings(crtc_state, cpu_transcoder);
>
> if (!intel_vrr_always_use_vrr_tg(display))
> intel_de_write(display, TRANS_VRR_CTL(display,
> cpu_transcoder), @@ -974,7 +974,7 @@ void intel_vrr_disable(const struct
> intel_crtc_state *old_crtc_state)
> intel_vrr_tg_disable(old_crtc_state);
>
> intel_vrr_disable_dc_balancing(old_crtc_state);
> - intel_vrr_set_fixed_rr_timings(old_crtc_state);
> + intel_vrr_set_fixed_rr_timings(old_crtc_state,
> +old_crtc_state->cpu_transcoder);
> }
>
> void intel_vrr_transcoder_enable(const struct intel_crtc_state *crtc_state)
> diff --
> git a/drivers/gpu/drm/i915/display/intel_vrr.h
> b/drivers/gpu/drm/i915/display/intel_vrr.h
> index 4f16ca4af91f..2daba0c16162 100644
> --- a/drivers/gpu/drm/i915/display/intel_vrr.h
> +++ b/drivers/gpu/drm/i915/display/intel_vrr.h
> @@ -8,6 +8,8 @@
>
> #include <linux/types.h>
>
> +#include "intel_display_limits.h"
> +
As Jani pointed, move this include out of the header.
Else all looks Good to me.
Reviewed-by: Uma Shankar <[email protected]>
> struct drm_connector_state;
> struct intel_atomic_state;
> struct intel_connector;
> @@ -42,7 +44,8 @@ int intel_vrr_vmin_vblank_start(const struct
> intel_crtc_state
> *crtc_state); bool intel_vrr_is_fixed_rr(const struct intel_crtc_state
> *crtc_state);
> void intel_vrr_transcoder_enable(const struct intel_crtc_state *crtc_state);
> void
> intel_vrr_transcoder_disable(const struct intel_crtc_state *crtc_state); -void
> intel_vrr_set_fixed_rr_timings(const struct intel_crtc_state *crtc_state);
> +void intel_vrr_set_fixed_rr_timings(const struct intel_crtc_state
> *crtc_state,
> + enum transcoder transcoder);
> void intel_vrr_dcb_reset(const struct intel_crtc_state *old_crtc_state,
> struct intel_crtc *crtc);
> bool intel_vrr_always_use_vrr_tg(struct intel_display *display);
> --
> 2.29.0