瀏覽代碼

drm/i915: fix flip done interrupt on Ironlake

On Ironlake plane flip interrupt means flip done event already, the
behavior is not like old chips, and perform like other usual interrupt.
So only need to handle flip done event when receiving that interrupt.

Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
Zhenyu Wang 16 年之前
父節點
當前提交
f072d2e771
共有 1 個文件被更改,包括 8 次插入8 次删除
  1. 8 8
      drivers/gpu/drm/i915/i915_irq.c

+ 8 - 8
drivers/gpu/drm/i915/i915_irq.c

@@ -309,21 +309,21 @@ irqreturn_t ironlake_irq_handler(struct drm_device *dev)
 	if (de_iir & DE_GSE)
 		ironlake_opregion_gse_intr(dev);
 
-	if (de_iir & DE_PLANEA_FLIP_DONE)
+	if (de_iir & DE_PLANEA_FLIP_DONE) {
 		intel_prepare_page_flip(dev, 0);
+		intel_finish_page_flip(dev, 0);
+	}
 
-	if (de_iir & DE_PLANEB_FLIP_DONE)
+	if (de_iir & DE_PLANEB_FLIP_DONE) {
 		intel_prepare_page_flip(dev, 1);
+		intel_finish_page_flip(dev, 1);
+	}
 
-	if (de_iir & DE_PIPEA_VBLANK) {
+	if (de_iir & DE_PIPEA_VBLANK)
 		drm_handle_vblank(dev, 0);
-		intel_finish_page_flip(dev, 0);
-	}
 
-	if (de_iir & DE_PIPEB_VBLANK) {
+	if (de_iir & DE_PIPEB_VBLANK)
 		drm_handle_vblank(dev, 1);
-		intel_finish_page_flip(dev, 1);
-	}
 
 	/* check event from PCH */
 	if ((de_iir & DE_PCH_EVENT) &&