|
|
@@ -3169,15 +3169,20 @@ static void gen8_irq_reset(struct drm_device *dev)
|
|
|
ibx_irq_reset(dev);
|
|
|
}
|
|
|
|
|
|
-void gen8_irq_power_well_post_enable(struct drm_i915_private *dev_priv)
|
|
|
+void gen8_irq_power_well_post_enable(struct drm_i915_private *dev_priv,
|
|
|
+ unsigned int pipe_mask)
|
|
|
{
|
|
|
uint32_t extra_ier = GEN8_PIPE_VBLANK | GEN8_PIPE_FIFO_UNDERRUN;
|
|
|
|
|
|
spin_lock_irq(&dev_priv->irq_lock);
|
|
|
- GEN8_IRQ_INIT_NDX(DE_PIPE, PIPE_B, dev_priv->de_irq_mask[PIPE_B],
|
|
|
- ~dev_priv->de_irq_mask[PIPE_B] | extra_ier);
|
|
|
- GEN8_IRQ_INIT_NDX(DE_PIPE, PIPE_C, dev_priv->de_irq_mask[PIPE_C],
|
|
|
- ~dev_priv->de_irq_mask[PIPE_C] | extra_ier);
|
|
|
+ if (pipe_mask & 1 << PIPE_B)
|
|
|
+ GEN8_IRQ_INIT_NDX(DE_PIPE, PIPE_B,
|
|
|
+ dev_priv->de_irq_mask[PIPE_B],
|
|
|
+ ~dev_priv->de_irq_mask[PIPE_B] | extra_ier);
|
|
|
+ if (pipe_mask & 1 << PIPE_C)
|
|
|
+ GEN8_IRQ_INIT_NDX(DE_PIPE, PIPE_C,
|
|
|
+ dev_priv->de_irq_mask[PIPE_C],
|
|
|
+ ~dev_priv->de_irq_mask[PIPE_C] | extra_ier);
|
|
|
spin_unlock_irq(&dev_priv->irq_lock);
|
|
|
}
|
|
|
|