On Thu, Aug 24, 2023 at 11:05:02AM +0300, Imre Deak wrote:
> Factor out intel_atomic_check_config() to check and compute all the CRTC
> states. This will be used by a follow up patch to recompute/check the
> state until required by BW limitations between CRTCs.
> 
> Signed-off-by: Imre Deak <[email protected]>

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

> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 78 ++++++++++++--------
>  1 file changed, 46 insertions(+), 32 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> b/drivers/gpu/drm/i915/display/intel_display.c
> index a1956b89fd75d..dbf109a2e738f 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -6206,6 +6206,51 @@ static int intel_bigjoiner_add_affected_crtcs(struct 
> intel_atomic_state *state)
>       return 0;
>  }
>  
> +static int intel_atomic_check_config(struct intel_atomic_state *state)
> +{
> +     struct drm_i915_private *i915 = to_i915(state->base.dev);
> +     struct intel_crtc_state *new_crtc_state;
> +     struct intel_crtc *crtc;
> +     int ret;
> +     int i;
> +
> +     ret = intel_bigjoiner_add_affected_crtcs(state);
> +     if (ret)
> +             return ret;
> +
> +     for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) {
> +             if (!intel_crtc_needs_modeset(new_crtc_state)) {
> +                     if (intel_crtc_is_bigjoiner_slave(new_crtc_state))
> +                             copy_bigjoiner_crtc_state_nomodeset(state, 
> crtc);
> +                     else
> +                             
> intel_crtc_copy_uapi_to_hw_state_nomodeset(state, crtc);
> +                     continue;
> +             }
> +
> +             if (intel_crtc_is_bigjoiner_slave(new_crtc_state)) {
> +                     drm_WARN_ON(&i915->drm, new_crtc_state->uapi.enable);
> +                     continue;
> +             }
> +
> +             ret = intel_crtc_prepare_cleared_state(state, crtc);
> +             if (ret)
> +                     break;
> +
> +             if (!new_crtc_state->hw.enable)
> +                     continue;
> +
> +             ret = intel_modeset_pipe_config(state, crtc);
> +             if (ret)
> +                     break;
> +
> +             ret = intel_atomic_check_bigjoiner(state, crtc);
> +             if (ret)
> +                     break;
> +     }
> +
> +     return ret;
> +}
> +
>  /**
>   * intel_atomic_check - validate state object
>   * @dev: drm device
> @@ -6250,41 +6295,10 @@ int intel_atomic_check(struct drm_device *dev,
>                       return ret;
>       }
>  
> -     ret = intel_bigjoiner_add_affected_crtcs(state);
> +     ret = intel_atomic_check_config(state);
>       if (ret)
>               goto fail;
>  
> -     for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state,
> -                                         new_crtc_state, i) {
> -             if (!intel_crtc_needs_modeset(new_crtc_state)) {
> -                     if (intel_crtc_is_bigjoiner_slave(new_crtc_state))
> -                             copy_bigjoiner_crtc_state_nomodeset(state, 
> crtc);
> -                     else
> -                             
> intel_crtc_copy_uapi_to_hw_state_nomodeset(state, crtc);
> -                     continue;
> -             }
> -
> -             if (intel_crtc_is_bigjoiner_slave(new_crtc_state)) {
> -                     drm_WARN_ON(&dev_priv->drm, 
> new_crtc_state->uapi.enable);
> -                     continue;
> -             }
> -
> -             ret = intel_crtc_prepare_cleared_state(state, crtc);
> -             if (ret)
> -                     goto fail;
> -
> -             if (!new_crtc_state->hw.enable)
> -                     continue;
> -
> -             ret = intel_modeset_pipe_config(state, crtc);
> -             if (ret)
> -                     goto fail;
> -
> -             ret = intel_atomic_check_bigjoiner(state, crtc);
> -             if (ret)
> -                     goto fail;
> -     }
> -
>       for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state,
>                                           new_crtc_state, i) {
>               if (!intel_crtc_needs_modeset(new_crtc_state))
> -- 
> 2.37.2

-- 
Ville Syrjälä
Intel

Reply via email to