On Thu, May 04, 2023 at 02:10:40AM +0300, Imre Deak wrote:
> Split calling the CRTC/encoder disabling hooks and updating the CRTC and
> DPLL object states from updating the CRTC and atomic state and other
> global state (BW, CDCLK, DBUF) into separate functions. When disabling a
> bigjoiner configuration the latter step can be done only after all the
> linked pipes are disabled, so this change prepares for that.
> 
> No functional changes.
> 
> Signed-off-by: Imre Deak <imre.d...@intel.com>

Reviewed-by: Ville Syrjälä <ville.syrj...@linux.intel.com>

> ---
>  .../drm/i915/display/intel_modeset_setup.c    | 33 ++++++++++++++-----
>  1 file changed, 24 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_modeset_setup.c 
> b/drivers/gpu/drm/i915/display/intel_modeset_setup.c
> index c1a4a7bcc56ae..922ea5ddd0c5b 100644
> --- a/drivers/gpu/drm/i915/display/intel_modeset_setup.c
> +++ b/drivers/gpu/drm/i915/display/intel_modeset_setup.c
> @@ -30,17 +30,10 @@
>  #include "intel_wm.h"
>  #include "skl_watermark.h"
>  
> -static void intel_crtc_disable_noatomic(struct intel_crtc *crtc,
> -                                     struct drm_modeset_acquire_ctx *ctx)
> +static void intel_crtc_disable_noatomic_begin(struct intel_crtc *crtc,
> +                                           struct drm_modeset_acquire_ctx 
> *ctx)
>  {
> -     struct intel_encoder *encoder;
>       struct drm_i915_private *i915 = to_i915(crtc->base.dev);
> -     struct intel_bw_state *bw_state =
> -             to_intel_bw_state(i915->display.bw.obj.state);
> -     struct intel_cdclk_state *cdclk_state =
> -             to_intel_cdclk_state(i915->display.cdclk.obj.state);
> -     struct intel_dbuf_state *dbuf_state =
> -             to_intel_dbuf_state(i915->display.dbuf.obj.state);
>       struct intel_crtc_state *crtc_state =
>               to_intel_crtc_state(crtc->base.state);
>       struct intel_plane *plane;
> @@ -92,6 +85,21 @@ static void intel_crtc_disable_noatomic(struct intel_crtc 
> *crtc,
>               crtc_state->shared_dpll->state.pipe_mask &= ~BIT(pipe);
>               crtc_state->shared_dpll->active_mask &= ~BIT(pipe);
>       }
> +}
> +
> +static void intel_crtc_disable_noatomic_complete(struct intel_crtc *crtc)
> +{
> +     struct intel_encoder *encoder;
> +     struct drm_i915_private *i915 = to_i915(crtc->base.dev);
> +     struct intel_bw_state *bw_state =
> +             to_intel_bw_state(i915->display.bw.obj.state);
> +     struct intel_cdclk_state *cdclk_state =
> +             to_intel_cdclk_state(i915->display.cdclk.obj.state);
> +     struct intel_dbuf_state *dbuf_state =
> +             to_intel_dbuf_state(i915->display.dbuf.obj.state);
> +     struct intel_crtc_state *crtc_state =
> +             to_intel_crtc_state(crtc->base.state);
> +     enum pipe pipe = crtc->pipe;
>  
>       __drm_atomic_helper_crtc_destroy_state(&crtc_state->uapi);
>       intel_crtc_free_hw_state(crtc_state);
> @@ -115,6 +123,13 @@ static void intel_crtc_disable_noatomic(struct 
> intel_crtc *crtc,
>       bw_state->num_active_planes[pipe] = 0;
>  }
>  
> +static void intel_crtc_disable_noatomic(struct intel_crtc *crtc,
> +                                     struct drm_modeset_acquire_ctx *ctx)
> +{
> +     intel_crtc_disable_noatomic_begin(crtc, ctx);
> +     intel_crtc_disable_noatomic_complete(crtc);
> +}
> +
>  static void intel_modeset_update_connector_atomic_state(struct 
> drm_i915_private *i915)
>  {
>       struct intel_connector *connector;
> -- 
> 2.37.2

-- 
Ville Syrjälä
Intel

Reply via email to