aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c12
-rw-r--r--drivers/gpu/drm/i915/intel_drv.h1
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c18
3 files changed, 15 insertions, 16 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 6f19420cc1bf..e2e9bb8f4fe7 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -3478,6 +3478,18 @@ static void gen8_irq_reset(struct drm_device *dev)
3478 ibx_irq_reset(dev); 3478 ibx_irq_reset(dev);
3479} 3479}
3480 3480
3481void gen8_irq_power_well_post_enable(struct drm_i915_private *dev_priv)
3482{
3483 unsigned long irqflags;
3484
3485 spin_lock_irqsave(&dev_priv->irq_lock, irqflags);
3486 GEN8_IRQ_INIT_NDX(DE_PIPE, PIPE_B, dev_priv->de_irq_mask[PIPE_B],
3487 ~dev_priv->de_irq_mask[PIPE_B]);
3488 GEN8_IRQ_INIT_NDX(DE_PIPE, PIPE_C, dev_priv->de_irq_mask[PIPE_C],
3489 ~dev_priv->de_irq_mask[PIPE_C]);
3490 spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags);
3491}
3492
3481static void cherryview_irq_preinstall(struct drm_device *dev) 3493static void cherryview_irq_preinstall(struct drm_device *dev)
3482{ 3494{
3483 struct drm_i915_private *dev_priv = dev->dev_private; 3495 struct drm_i915_private *dev_priv = dev->dev_private;
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 9d97a50cae4b..bf415df11389 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -693,6 +693,7 @@ void intel_runtime_pm_disable_interrupts(struct drm_device *dev);
693void intel_runtime_pm_restore_interrupts(struct drm_device *dev); 693void intel_runtime_pm_restore_interrupts(struct drm_device *dev);
694int intel_get_crtc_scanline(struct intel_crtc *crtc); 694int intel_get_crtc_scanline(struct intel_crtc *crtc);
695void i9xx_check_fifo_underruns(struct drm_device *dev); 695void i9xx_check_fifo_underruns(struct drm_device *dev);
696void gen8_irq_power_well_post_enable(struct drm_i915_private *dev_priv);
696 697
697 698
698/* intel_crt.c */ 699/* intel_crt.c */
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 25ae4e6d3dd6..d23ba37e6ab9 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -5998,7 +5998,6 @@ bool intel_display_power_enabled(struct drm_i915_private *dev_priv,
5998static void hsw_power_well_post_enable(struct drm_i915_private *dev_priv) 5998static void hsw_power_well_post_enable(struct drm_i915_private *dev_priv)
5999{ 5999{
6000 struct drm_device *dev = dev_priv->dev; 6000 struct drm_device *dev = dev_priv->dev;
6001 unsigned long irqflags;
6002 6001
6003 /* 6002 /*
6004 * After we re-enable the power well, if we touch VGA register 0x3d5 6003 * After we re-enable the power well, if we touch VGA register 0x3d5
@@ -6014,21 +6013,8 @@ static void hsw_power_well_post_enable(struct drm_i915_private *dev_priv)
6014 outb(inb(VGA_MSR_READ), VGA_MSR_WRITE); 6013 outb(inb(VGA_MSR_READ), VGA_MSR_WRITE);
6015 vga_put(dev->pdev, VGA_RSRC_LEGACY_IO); 6014 vga_put(dev->pdev, VGA_RSRC_LEGACY_IO);
6016 6015
6017 if (IS_BROADWELL(dev)) { 6016 if (IS_BROADWELL(dev))
6018 spin_lock_irqsave(&dev_priv->irq_lock, irqflags); 6017 gen8_irq_power_well_post_enable(dev_priv);
6019 I915_WRITE(GEN8_DE_PIPE_IMR(PIPE_B),
6020 dev_priv->de_irq_mask[PIPE_B]);
6021 I915_WRITE(GEN8_DE_PIPE_IER(PIPE_B),
6022 ~dev_priv->de_irq_mask[PIPE_B] |
6023 GEN8_PIPE_VBLANK);
6024 I915_WRITE(GEN8_DE_PIPE_IMR(PIPE_C),
6025 dev_priv->de_irq_mask[PIPE_C]);
6026 I915_WRITE(GEN8_DE_PIPE_IER(PIPE_C),
6027 ~dev_priv->de_irq_mask[PIPE_C] |
6028 GEN8_PIPE_VBLANK);
6029 POSTING_READ(GEN8_DE_PIPE_IER(PIPE_C));
6030 spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags);
6031 }
6032} 6018}
6033 6019
6034static void hsw_set_power_well(struct drm_i915_private *dev_priv, 6020static void hsw_set_power_well(struct drm_i915_private *dev_priv,