summary refs log tree commit diff
path: root/drivers/gpu/drm/msm/mdp/mdp5/mdp5_irq.c
diff options
context:
space:
mode:
authorRob Clark <robdclark@gmail.com>2014-04-22 12:27:28 -0400
committerRob Clark <robdclark@gmail.com>2014-04-25 08:58:23 -0400
commit7d8d9f670513593377cd1442f987ce03a64ba55d (patch)
tree1961f2cd4a040a0525fb806196ddce33360a0ab9 /drivers/gpu/drm/msm/mdp/mdp5/mdp5_irq.c
parent96673ecbd7f638c0865045377a44f53cd8606850 (diff)
downloadlinux-7d8d9f670513593377cd1442f987ce03a64ba55d.tar.gz
drm/msm/mdp4: cure for the cursor blues (v2)
The hw cursor is relatively adept at triggering underflows, which
manifest as a "blue flash" (since blue is configured as the underflow
color).  Juggle a few things around to tighten up the timing for setting
cursor registers in DONE irq.

And most importantly, don't ever disable the hw cursor.  Instead flip it
to a blank/empty cursor.  This seems far more reliable, as even simply
clearing the cursor-enable bit (with no other updates in previous/
following frames) can in some cases cause underflow.

v1: original
v2: add missing locking spotted by Micah

Cc: Micah Richert <richert@braincorporation.com>
Signed-off-by: Rob Clark <robdclark@gmail.com>
Diffstat (limited to 'drivers/gpu/drm/msm/mdp/mdp5/mdp5_irq.c')
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp5/mdp5_irq.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_irq.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_irq.c
index 353d494a497f..f2b985bc2adf 100644
--- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_irq.c
+++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_irq.c
@@ -71,11 +71,11 @@ static void mdp5_irq_mdp(struct mdp_kms *mdp_kms)
 
 	VERB("status=%08x", status);
 
+	mdp_dispatch_irqs(mdp_kms, status);
+
 	for (id = 0; id < priv->num_crtcs; id++)
 		if (status & mdp5_crtc_vblank(priv->crtcs[id]))
 			drm_handle_vblank(dev, id);
-
-	mdp_dispatch_irqs(mdp_kms, status);
 }
 
 irqreturn_t mdp5_irq(struct msm_kms *kms)