diff options
author | Deepak S <deepak.s@linux.intel.com> | 2014-07-10 03:46:26 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-07-11 12:22:01 -0400 |
commit | 3497a5620caec0ae25e3fa3b6828f1cdeac80ec0 (patch) | |
tree | 7017288540d8cc577cefb8768ac088fb5e518ea8 | |
parent | 22b1b2f866b2089d8264e367121c9c9ee0689da4 (diff) |
drm/i915/chv: Add basic PM interrupt support for CHV
Enabled PM interrupt programming for CHV. Re-using gen8 code and extending same for CHV.
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r-- | drivers/gpu/drm/i915/i915_irq.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_pm.c | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index 30fd63708b1a..188fe04c4f8d 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c | |||
@@ -1407,7 +1407,7 @@ static void gen6_pm_rps_work(struct work_struct *work) | |||
1407 | spin_lock_irq(&dev_priv->irq_lock); | 1407 | spin_lock_irq(&dev_priv->irq_lock); |
1408 | pm_iir = dev_priv->rps.pm_iir; | 1408 | pm_iir = dev_priv->rps.pm_iir; |
1409 | dev_priv->rps.pm_iir = 0; | 1409 | dev_priv->rps.pm_iir = 0; |
1410 | if (IS_BROADWELL(dev_priv->dev)) | 1410 | if (IS_BROADWELL(dev_priv->dev) || IS_CHERRYVIEW(dev_priv->dev)) |
1411 | bdw_enable_pm_irq(dev_priv, dev_priv->pm_rps_events); | 1411 | bdw_enable_pm_irq(dev_priv, dev_priv->pm_rps_events); |
1412 | else { | 1412 | else { |
1413 | /* Make sure not to corrupt PMIMR state used by ringbuffer */ | 1413 | /* Make sure not to corrupt PMIMR state used by ringbuffer */ |
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 1ec777a3914a..58a03f863379 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c | |||
@@ -3392,6 +3392,8 @@ static void cherryview_disable_rps(struct drm_device *dev) | |||
3392 | struct drm_i915_private *dev_priv = dev->dev_private; | 3392 | struct drm_i915_private *dev_priv = dev->dev_private; |
3393 | 3393 | ||
3394 | I915_WRITE(GEN6_RC_CONTROL, 0); | 3394 | I915_WRITE(GEN6_RC_CONTROL, 0); |
3395 | |||
3396 | gen8_disable_rps_interrupts(dev); | ||
3395 | } | 3397 | } |
3396 | 3398 | ||
3397 | static void valleyview_disable_rps(struct drm_device *dev) | 3399 | static void valleyview_disable_rps(struct drm_device *dev) |
@@ -4109,6 +4111,8 @@ static void cherryview_enable_rps(struct drm_device *dev) | |||
4109 | 4111 | ||
4110 | valleyview_set_rps(dev_priv->dev, dev_priv->rps.efficient_freq); | 4112 | valleyview_set_rps(dev_priv->dev, dev_priv->rps.efficient_freq); |
4111 | 4113 | ||
4114 | gen8_enable_rps_interrupts(dev); | ||
4115 | |||
4112 | gen6_gt_force_wake_put(dev_priv, FORCEWAKE_ALL); | 4116 | gen6_gt_force_wake_put(dev_priv, FORCEWAKE_ALL); |
4113 | } | 4117 | } |
4114 | 4118 | ||