On Mon, May 20, 2024 at 09:58:03PM +0300, Imre Deak wrote:
> Factor out a function to modeset commit a set of pipes, which a later
> patch will reuse for DP link retraining.
> 
> Signed-off-by: Imre Deak <[email protected]>

Reviewed-by: Ville Syrjälä <[email protected]>

> ---
>  drivers/gpu/drm/i915/display/intel_ddi.c     | 31 +-----------------
>  drivers/gpu/drm/i915/display/intel_display.c | 34 ++++++++++++++++++++
>  drivers/gpu/drm/i915/display/intel_display.h |  3 ++
>  3 files changed, 38 insertions(+), 30 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
> b/drivers/gpu/drm/i915/display/intel_ddi.c
> index 3c3fc53376ce3..170ba01786cf8 100644
> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> @@ -4441,35 +4441,6 @@ intel_ddi_init_dp_connector(struct intel_digital_port 
> *dig_port)
>       return connector;
>  }
>  
> -static int modeset_pipe(struct drm_crtc *crtc,
> -                     struct drm_modeset_acquire_ctx *ctx)
> -{
> -     struct drm_atomic_state *state;
> -     struct drm_crtc_state *crtc_state;
> -     int ret;
> -
> -     state = drm_atomic_state_alloc(crtc->dev);
> -     if (!state)
> -             return -ENOMEM;
> -
> -     state->acquire_ctx = ctx;
> -     to_intel_atomic_state(state)->internal = true;
> -
> -     crtc_state = drm_atomic_get_crtc_state(state, crtc);
> -     if (IS_ERR(crtc_state)) {
> -             ret = PTR_ERR(crtc_state);
> -             goto out;
> -     }
> -
> -     crtc_state->connectors_changed = true;
> -
> -     ret = drm_atomic_commit(state);
> -out:
> -     drm_atomic_state_put(state);
> -
> -     return ret;
> -}
> -
>  static int intel_hdmi_reset_link(struct intel_encoder *encoder,
>                                struct drm_modeset_acquire_ctx *ctx)
>  {
> @@ -4539,7 +4510,7 @@ static int intel_hdmi_reset_link(struct intel_encoder 
> *encoder,
>        * would be perfectly happy if were to just reconfigure
>        * the SCDC settings on the fly.
>        */
> -     return modeset_pipe(&crtc->base, ctx);
> +     return intel_modeset_commit_pipes(dev_priv, BIT(crtc->pipe), ctx);
>  }
>  
>  static enum intel_hotplug_state
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> b/drivers/gpu/drm/i915/display/intel_display.c
> index cce1420fb5417..4edb1ede4a1b4 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -5569,6 +5569,40 @@ int intel_modeset_all_pipes_late(struct 
> intel_atomic_state *state,
>       return 0;
>  }
>  
> +int intel_modeset_commit_pipes(struct drm_i915_private *i915,
> +                            u8 pipe_mask,
> +                            struct drm_modeset_acquire_ctx *ctx)
> +{
> +     struct drm_atomic_state *state;
> +     struct intel_crtc *crtc;
> +     int ret;
> +
> +     state = drm_atomic_state_alloc(&i915->drm);
> +     if (!state)
> +             return -ENOMEM;
> +
> +     state->acquire_ctx = ctx;
> +     to_intel_atomic_state(state)->internal = true;
> +
> +     for_each_intel_crtc_in_pipe_mask(&i915->drm, crtc, pipe_mask) {
> +             struct intel_crtc_state *crtc_state =
> +                     intel_atomic_get_crtc_state(state, crtc);
> +
> +             if (IS_ERR(crtc_state)) {
> +                     ret = PTR_ERR(crtc_state);
> +                     goto out;
> +             }
> +
> +             crtc_state->uapi.connectors_changed = true;
> +     }
> +
> +     ret = drm_atomic_commit(state);
> +out:
> +     drm_atomic_state_put(state);
> +
> +     return ret;
> +}
> +
>  /*
>   * This implements the workaround described in the "notes" section of the 
> mode
>   * set sequence documentation. When going from no pipes or single pipe to
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h 
> b/drivers/gpu/drm/i915/display/intel_display.h
> index 56d1c0e3e62cd..dfdc42cef8723 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -537,6 +537,9 @@ int intel_modeset_pipes_in_mask_early(struct 
> intel_atomic_state *state,
>                                     const char *reason, u8 pipe_mask);
>  int intel_modeset_all_pipes_late(struct intel_atomic_state *state,
>                                const char *reason);
> +int intel_modeset_commit_pipes(struct drm_i915_private *i915,
> +                            u8 pipe_mask,
> +                            struct drm_modeset_acquire_ctx *ctx);
>  void intel_modeset_get_crtc_power_domains(struct intel_crtc_state 
> *crtc_state,
>                                         struct intel_power_domain_mask 
> *old_domains);
>  void intel_modeset_put_crtc_power_domains(struct intel_crtc *crtc,
> -- 
> 2.43.3

-- 
Ville Syrjälä
Intel

Reply via email to