aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_pm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/intel_pm.c')
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 0a07d7c9cafc..33a8dbe64039 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -5684,6 +5684,7 @@ static void __intel_set_power_well(struct drm_device *dev, bool enable)
5684{ 5684{
5685 struct drm_i915_private *dev_priv = dev->dev_private; 5685 struct drm_i915_private *dev_priv = dev->dev_private;
5686 bool is_enabled, enable_requested; 5686 bool is_enabled, enable_requested;
5687 unsigned long irqflags;
5687 uint32_t tmp; 5688 uint32_t tmp;
5688 5689
5689 tmp = I915_READ(HSW_PWR_WELL_DRIVER); 5690 tmp = I915_READ(HSW_PWR_WELL_DRIVER);
@@ -5701,9 +5702,24 @@ static void __intel_set_power_well(struct drm_device *dev, bool enable)
5701 HSW_PWR_WELL_STATE_ENABLED), 20)) 5702 HSW_PWR_WELL_STATE_ENABLED), 20))
5702 DRM_ERROR("Timeout enabling power well\n"); 5703 DRM_ERROR("Timeout enabling power well\n");
5703 } 5704 }
5705
5706 if (IS_BROADWELL(dev)) {
5707 spin_lock_irqsave(&dev_priv->irq_lock, irqflags);
5708 I915_WRITE(GEN8_DE_PIPE_IMR(PIPE_B),
5709 dev_priv->de_irq_mask[PIPE_B]);
5710 I915_WRITE(GEN8_DE_PIPE_IER(PIPE_B),
5711 ~dev_priv->de_irq_mask[PIPE_B] |
5712 GEN8_PIPE_VBLANK);
5713 I915_WRITE(GEN8_DE_PIPE_IMR(PIPE_C),
5714 dev_priv->de_irq_mask[PIPE_C]);
5715 I915_WRITE(GEN8_DE_PIPE_IER(PIPE_C),
5716 ~dev_priv->de_irq_mask[PIPE_C] |
5717 GEN8_PIPE_VBLANK);
5718 POSTING_READ(GEN8_DE_PIPE_IER(PIPE_C));
5719 spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags);
5720 }
5704 } else { 5721 } else {
5705 if (enable_requested) { 5722 if (enable_requested) {
5706 unsigned long irqflags;
5707 enum pipe p; 5723 enum pipe p;
5708 5724
5709 I915_WRITE(HSW_PWR_WELL_DRIVER, 0); 5725 I915_WRITE(HSW_PWR_WELL_DRIVER, 0);