aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_pm.c
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2013-12-06 04:17:53 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-12-06 07:08:15 -0500
commitf742a55231b950ed71ac8cc8beec0944ddda312c (patch)
treedb8f292d7772c1a04fdcb1e7526587de5ec48a70 /drivers/gpu/drm/i915/intel_pm.c
parent0d1430a3f4b7cfd8779b78740a4182321f3ca7f3 (diff)
drm/i915: fix pm init ordering
Shovel a bit more of the the code into the setup function, and call it earlier. Otherwise lockdep is unhappy since we cancel the delayed resume work before it's initialized. While at it also shovel the pc8 setup code into the same functions. I wanted to also ditch the header declaration of the hws pc8 functions, but for unfathomable reasons that stuff is in intel_display.c instead of intel_pm.c. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71980 Tested-by: Guo Jinxian <jinxianx.guo@intel.com> Reviewed-by: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_pm.c')
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 6e0d5e075b15..e0dec95c764e 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -6130,10 +6130,19 @@ int vlv_freq_opcode(int ddr_freq, int val)
6130 return val; 6130 return val;
6131} 6131}
6132 6132
6133void intel_pm_init(struct drm_device *dev) 6133void intel_pm_setup(struct drm_device *dev)
6134{ 6134{
6135 struct drm_i915_private *dev_priv = dev->dev_private; 6135 struct drm_i915_private *dev_priv = dev->dev_private;
6136 6136
6137 mutex_init(&dev_priv->rps.hw_lock);
6138
6139 mutex_init(&dev_priv->pc8.lock);
6140 dev_priv->pc8.requirements_met = false;
6141 dev_priv->pc8.gpu_idle = false;
6142 dev_priv->pc8.irqs_disabled = false;
6143 dev_priv->pc8.enabled = false;
6144 dev_priv->pc8.disable_count = 2; /* requirements_met + gpu_idle */
6145 INIT_DELAYED_WORK(&dev_priv->pc8.enable_work, hsw_enable_pc8_work);
6137 INIT_DELAYED_WORK(&dev_priv->rps.delayed_resume_work, 6146 INIT_DELAYED_WORK(&dev_priv->rps.delayed_resume_work,
6138 intel_gen6_powersave_work); 6147 intel_gen6_powersave_work);
6139} 6148}