diff options
-rw-r--r-- | drivers/gpu/drm/i915/i915_irq.c | 12 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_drv.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_pm.c | 18 |
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 | ||
3481 | void 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 | |||
3481 | static void cherryview_irq_preinstall(struct drm_device *dev) | 3493 | static 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); | |||
693 | void intel_runtime_pm_restore_interrupts(struct drm_device *dev); | 693 | void intel_runtime_pm_restore_interrupts(struct drm_device *dev); |
694 | int intel_get_crtc_scanline(struct intel_crtc *crtc); | 694 | int intel_get_crtc_scanline(struct intel_crtc *crtc); |
695 | void i9xx_check_fifo_underruns(struct drm_device *dev); | 695 | void i9xx_check_fifo_underruns(struct drm_device *dev); |
696 | void 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, | |||
5998 | static void hsw_power_well_post_enable(struct drm_i915_private *dev_priv) | 5998 | static 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 | ||
6034 | static void hsw_set_power_well(struct drm_i915_private *dev_priv, | 6020 | static void hsw_set_power_well(struct drm_i915_private *dev_priv, |