[Intel-gfx] [PATCH 5/7] drm/i915: Move load time clock gating callback init earlier
Chris Wilson
chris at chris-wilson.co.uk
Wed Mar 9 15:57:02 UTC 2016
On Wed, Mar 09, 2016 at 05:31:44PM +0200, Imre Deak wrote:
> Split out the part initing the clock gating callbacks and move it
> earlier.
>
> The rest of the callbacks in intel_init_pm() should be inited in the
> same way, but atm some of the callbacks are set only conditionally, so
> before doing this we need to make the setup unconditional and use
> instead some flags.
>
> Signed-off-by: Imre Deak <imre.deak at intel.com>
> ---
> drivers/gpu/drm/i915/i915_dma.c | 1 +
> drivers/gpu/drm/i915/intel_drv.h | 1 +
> drivers/gpu/drm/i915/intel_pm.c | 65 ++++++++++++++++++++--------------------
> 3 files changed, 34 insertions(+), 33 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
> index 55b0c62..8cbe9ef 100644
> --- a/drivers/gpu/drm/i915/i915_dma.c
> +++ b/drivers/gpu/drm/i915/i915_dma.c
> @@ -1030,6 +1030,7 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
> intel_power_domains_init(dev_priv);
> intel_irq_init(dev_priv);
> intel_init_display_callbacks(dev_priv);
> + intel_init_clock_gating_callbacks(dev_priv);
> intel_init_audio_callbacks(dev_priv);
>
> intel_runtime_pm_get(dev_priv);
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 5264901..d3d31cc 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -1596,6 +1596,7 @@ void intel_suspend_hw(struct drm_device *dev);
> int ilk_wm_max_level(const struct drm_device *dev);
> void intel_update_watermarks(struct drm_crtc *crtc);
> void intel_init_pm(struct drm_device *dev);
> +void intel_init_clock_gating_callbacks(struct drm_i915_private *dev_priv);
> void intel_pm_setup(struct drm_device *dev);
> void intel_gpu_ips_init(struct drm_i915_private *dev_priv);
> void intel_gpu_ips_teardown(void);
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index d7aef17..02d3598 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -7107,6 +7107,38 @@ void intel_suspend_hw(struct drm_device *dev)
> lpt_suspend_hw(dev);
> }
>
> +void intel_init_clock_gating_callbacks(struct drm_i915_private *dev_priv)
> +{
> + if (IS_BROXTON(dev_priv))
> + dev_priv->display.init_clock_gating = bxt_init_clock_gating;
> + else if (IS_BROADWELL(dev_priv))
> + dev_priv->display.init_clock_gating = broadwell_init_clock_gating;
> + else if (IS_CHERRYVIEW(dev_priv))
> + dev_priv->display.init_clock_gating = cherryview_init_clock_gating;
> + else if (IS_HASWELL(dev_priv))
> + dev_priv->display.init_clock_gating = haswell_init_clock_gating;
> + else if (IS_IVYBRIDGE(dev_priv))
> + dev_priv->display.init_clock_gating = ivybridge_init_clock_gating;
> + else if (IS_VALLEYVIEW(dev_priv))
> + dev_priv->display.init_clock_gating = valleyview_init_clock_gating;
> + else if (IS_GEN6(dev_priv))
> + dev_priv->display.init_clock_gating = gen6_init_clock_gating;
> + else if (IS_GEN5(dev_priv))
> + dev_priv->display.init_clock_gating = ironlake_init_clock_gating;
> + else if (IS_G4X(dev_priv))
> + dev_priv->display.init_clock_gating = g4x_init_clock_gating;
> + else if (IS_CRESTLINE(dev_priv))
> + dev_priv->display.init_clock_gating = crestline_init_clock_gating;
> + else if (IS_BROADWATER(dev_priv))
> + dev_priv->display.init_clock_gating = broadwater_init_clock_gating;
> + else if (IS_GEN3(dev_priv))
> + dev_priv->display.init_clock_gating = gen3_init_clock_gating;
> + else if (IS_I85X(dev_priv) || IS_I865G(dev_priv))
> + dev_priv->display.init_clock_gating = i85x_init_clock_gating;
> + else if (IS_GEN2(dev_priv))
> + dev_priv->display.init_clock_gating = i830_init_clock_gating;
else
MISSING_CASE()
We definitely need a warning here in case we fall through and leave a
most unexpected NULL pointer.
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
More information about the Intel-gfx
mailing list