drm/i915: don't enable vblanks on disabled pipes
[sfrench/cifs-2.6.git] / drivers / gpu / drm / i915 / i915_irq.c
index 0cadafbef411ba094d020d1323f66f136ba0d1bd..6290219de6c8e832aa4209d761f7d2be0317211b 100644 (file)
@@ -411,6 +411,12 @@ int i915_enable_vblank(struct drm_device *dev, int pipe)
 {
        drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
        unsigned long irqflags;
+       int pipeconf_reg = (pipe == 0) ? PIPEACONF : PIPEBCONF;
+       u32 pipeconf;
+
+       pipeconf = I915_READ(pipeconf_reg);
+       if (!(pipeconf & PIPEACONF_ENABLE))
+               return -EINVAL;
 
        spin_lock_irqsave(&dev_priv->user_irq_lock, irqflags);
        if (IS_I965G(dev))