> -----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 06/20] drm/i915/display: Pass transcoder to
> intel_set_transcoder_timings_lrr()
> 
> Make intel_set_transcoder_timings_lrr() take the target transcoder as an 
> explicit
> parameter instead of always using crtc_state->cpu_transcoder.
> This allows the LRR timing programming sequence to be reused for other
> transcoders (e.g. CMTG).
> 
> Move the intel_vrr_set_fixed_rr_timings() and intel_vrr_transcoder_enable() 
> calls
> out of intel_set_transcoder_timings_lrr() and into its only caller
> intel_pipe_fastset(), so the helper now strictly programs the LRR timing 
> registers
> for the given transcoder.
> 
> No functional change intended.

Looks Good to me.
Reviewed-by: Uma Shankar <[email protected]>

> Signed-off-by: Animesh Manna <[email protected]>
> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 22 ++++++++++----------
>  1 file changed, 11 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 2c15dd4c6d66..17621f66501f 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -2777,14 +2777,14 @@ static void intel_set_transcoder_timings(const struct
> intel_crtc_state *crtc_sta
>       }
>  }
> 
> -static void intel_set_transcoder_timings_lrr(const struct intel_crtc_state
> *crtc_state)
> +static void intel_set_transcoder_timings_lrr(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;
>       const struct drm_display_mode *adjusted_mode = &crtc_state-
> >hw.adjusted_mode;
>       u32 crtc_vdisplay, crtc_vtotal, crtc_vblank_start, crtc_vblank_end;
> 
> -     drm_WARN_ON(display->drm, transcoder_is_dsi(cpu_transcoder));
> +     drm_WARN_ON(display->drm, transcoder_is_dsi(transcoder));
> 
>       crtc_vdisplay = adjusted_mode->crtc_vdisplay;
>       crtc_vtotal = adjusted_mode->crtc_vtotal; @@ -2799,7 +2799,7 @@
> static void intel_set_transcoder_timings_lrr(const struct intel_crtc_state 
> *crtc
> 
>       if (DISPLAY_VER(display) >= 13) {
>               intel_de_write(display,
> -                            TRANS_SET_CONTEXT_LATENCY(display,
> cpu_transcoder),
> +                            TRANS_SET_CONTEXT_LATENCY(display,
> transcoder),
>                              crtc_state->set_context_latency);
> 
>               /*
> @@ -2816,7 +2816,7 @@ static void intel_set_transcoder_timings_lrr(const
> struct intel_crtc_state *crtc
>        * The hardware actually ignores TRANS_VBLANK.VBLANK_END in DP
> mode.
>        * But let's write it anyway to keep the state checker happy.
>        */
> -     intel_de_write(display, TRANS_VBLANK(display, cpu_transcoder),
> +     intel_de_write(display, TRANS_VBLANK(display, transcoder),
>                      VBLANK_START(crtc_vblank_start - 1) |
>                      VBLANK_END(crtc_vblank_end - 1));
>       /*
> @@ -2832,12 +2832,9 @@ static void intel_set_transcoder_timings_lrr(const
> struct intel_crtc_state *crtc
>        * The double buffer latch point for TRANS_VTOTAL
>        * is the transcoder's undelayed vblank.
>        */
> -     intel_de_write(display, TRANS_VTOTAL(display, cpu_transcoder),
> +     intel_de_write(display, TRANS_VTOTAL(display, transcoder),
>                      VACTIVE(crtc_vdisplay - 1) |
>                      VTOTAL(crtc_vtotal - 1));
> -
> -     intel_vrr_set_fixed_rr_timings(crtc_state);
> -     intel_vrr_transcoder_enable(crtc_state);
>  }
> 
>  static void intel_set_pipe_src_size(const struct intel_crtc_state 
> *crtc_state) @@
> -6674,8 +6671,11 @@ static void intel_pipe_fastset(const struct 
> intel_crtc_state
> *old_crtc_state,
>               intel_cpu_transcoder_set_m1_n1(crtc, new_crtc_state-
> >cpu_transcoder,
>                                              &new_crtc_state->dp_m_n);
> 
> -     if (new_crtc_state->update_lrr)
> -             intel_set_transcoder_timings_lrr(new_crtc_state);
> +     if (new_crtc_state->update_lrr) {
> +             intel_set_transcoder_timings_lrr(new_crtc_state, new_crtc_state-
> >cpu_transcoder);
> +             intel_vrr_set_fixed_rr_timings(new_crtc_state);
> +             intel_vrr_transcoder_enable(new_crtc_state);
> +     }
>  }
> 
>  static void commit_pipe_pre_planes(struct intel_atomic_state *state,
> --
> 2.29.0

Reply via email to