Re: [PATCH v2 05/21] drm/i915: Factor out function to modeset commit a set of pipes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <imre.deak@xxxxxxxxx>

Reviewed-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>

> ---
>  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



[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux