[Intel-gfx] [PATCH 04/16] drm/i915: Pass intel_crtc to intel_disable_pipe() and intel_wait_for_pipe_off()

Thomas Richter richter at rus.uni-stuttgart.de
Fri Aug 15 15:27:37 CEST 2014


On 15.08.2014 00:21, ville.syrjala at linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Just pass the intel_crtc around instead of dev_priv+pipe.
>
> Also make intel_wait_for_pipe_off() static since it's only used in
> intel_display.c.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

Tested-by: Thomas Richter <richter at rus.uni-stuttgart.de>

> ---
>   drivers/gpu/drm/i915/intel_display.c | 37 +++++++++++++++++-------------------
>   drivers/gpu/drm/i915/intel_drv.h     |  1 -
>   2 files changed, 17 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 3813526..e7175ce 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -913,8 +913,7 @@ static bool pipe_dsl_stopped(struct drm_device *dev, enum pipe pipe)
>
>   /*
>    * intel_wait_for_pipe_off - wait for pipe to turn off
> - * @dev: drm device
> - * @pipe: pipe to wait for
> + * @crtc: crtc whose pipe to wait for
>    *
>    * After disabling a pipe, we can't wait for vblank in the usual way,
>    * spinning on the vblank interrupt status bit, since we won't actually
> @@ -928,11 +927,12 @@ static bool pipe_dsl_stopped(struct drm_device *dev, enum pipe pipe)
>    *   ends up stopping at the start of the next frame).
>    *
>    */
> -void intel_wait_for_pipe_off(struct drm_device *dev, int pipe)
> +static void intel_wait_for_pipe_off(struct intel_crtc *crtc)
>   {
> +	struct drm_device *dev = crtc->base.dev;
>   	struct drm_i915_private *dev_priv = dev->dev_private;
> -	enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv,
> -								      pipe);
> +	enum transcoder cpu_transcoder = crtc->config.cpu_transcoder;
> +	enum pipe pipe = crtc->pipe;
>
>   	if (INTEL_INFO(dev)->gen >= 4) {
>   		int reg = PIPECONF(cpu_transcoder);
> @@ -1981,21 +1981,19 @@ static void intel_enable_pipe(struct intel_crtc *crtc)
>
>   /**
>    * intel_disable_pipe - disable a pipe, asserting requirements
> - * @dev_priv: i915 private structure
> - * @pipe: pipe to disable
> - *
> - * Disable @pipe, making sure that various hardware specific requirements
> - * are met, if applicable, e.g. plane disabled, panel fitter off, etc.
> + * @crtc: crtc whose pipes is to be disabled
>    *
> - * @pipe should be %PIPE_A or %PIPE_B.
> + * Disable the pipe of @crtc, making sure that various hardware
> + * specific requirements are met, if applicable, e.g. plane
> + * disabled, panel fitter off, etc.
>    *
>    * Will wait until the pipe has shut down before returning.
>    */
> -static void intel_disable_pipe(struct drm_i915_private *dev_priv,
> -			       enum pipe pipe)
> +static void intel_disable_pipe(struct intel_crtc *crtc)
>   {
> -	enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv,
> -								      pipe);
> +	struct drm_i915_private *dev_priv = crtc->base.dev->dev_private;
> +	enum transcoder cpu_transcoder = crtc->config.cpu_transcoder;
> +	enum pipe pipe = crtc->pipe;
>   	int reg;
>   	u32 val;
>
> @@ -2017,7 +2015,7 @@ static void intel_disable_pipe(struct drm_i915_private *dev_priv,
>   		return;
>
>   	I915_WRITE(reg, val & ~PIPECONF_ENABLE);
> -	intel_wait_for_pipe_off(dev_priv->dev, pipe);
> +	intel_wait_for_pipe_off(crtc);
>   }
>
>   /*
> @@ -4115,7 +4113,7 @@ static void ironlake_crtc_disable(struct drm_crtc *crtc)
>   	if (intel_crtc->config.has_pch_encoder)
>   		intel_set_pch_fifo_underrun_reporting(dev, pipe, false);
>
> -	intel_disable_pipe(dev_priv, pipe);
> +	intel_disable_pipe(intel_crtc);
>
>   	if (intel_crtc->config.dp_encoder_is_mst)
>   		intel_ddi_set_vc_payload_alloc(crtc, false);
> @@ -4167,7 +4165,6 @@ static void haswell_crtc_disable(struct drm_crtc *crtc)
>   	struct drm_i915_private *dev_priv = dev->dev_private;
>   	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
>   	struct intel_encoder *encoder;
> -	int pipe = intel_crtc->pipe;
>   	enum transcoder cpu_transcoder = intel_crtc->config.cpu_transcoder;
>
>   	if (!intel_crtc->active)
> @@ -4182,7 +4179,7 @@ static void haswell_crtc_disable(struct drm_crtc *crtc)
>
>   	if (intel_crtc->config.has_pch_encoder)
>   		intel_set_pch_fifo_underrun_reporting(dev, TRANSCODER_A, false);
> -	intel_disable_pipe(dev_priv, pipe);
> +	intel_disable_pipe(intel_crtc);
>
>   	intel_ddi_disable_transcoder_func(dev_priv, cpu_transcoder);
>
> @@ -4769,7 +4766,7 @@ static void i9xx_crtc_disable(struct drm_crtc *crtc)
>   	 */
>   	intel_wait_for_vblank(dev, pipe);
>
> -	intel_disable_pipe(dev_priv, pipe);
> +	intel_disable_pipe(intel_crtc);
>
>   	i9xx_pfit_disable(intel_crtc);
>
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 3abc915..6c8303e 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -826,7 +826,6 @@ intel_wait_for_vblank(struct drm_device *dev, int pipe)
>   {
>   	drm_wait_one_vblank(dev, pipe);
>   }
> -void intel_wait_for_pipe_off(struct drm_device *dev, int pipe);
>   int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp);
>   void vlv_wait_port_ready(struct drm_i915_private *dev_priv,
>   			 struct intel_digital_port *dport);
>




More information about the Intel-gfx mailing list