summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhenyu Wang <zhenyuw@linux.intel.com>2010-02-09 01:46:19 (GMT)
committerEric Anholt <eric@anholt.net>2010-02-10 22:34:13 (GMT)
commitf072d2e77128c5b332ce217764cf170b660b99dc (patch)
treeb75ba4302ea5a08e7d2e45e62dd186adffc366cb
parentb1b87f6b65a770a69f3632cf7c1f9182547c1249 (diff)
downloadlinux-fsl-qoriq-f072d2e77128c5b332ce217764cf170b660b99dc.tar.xz
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>
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 50ddf4a..a17d6bd 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/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) &&