Message ID | 1408054928-24141-5-git-send-email-ville.syrjala@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 15.08.2014 00:21, ville.syrjala@linux.intel.com wrote: > From: Ville Syrjälä <ville.syrjala@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@linux.intel.com> Tested-by: Thomas Richter <richter@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); >
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);