diff mbox

drm/i915: flush plane control changes on ILK+ as well

Message ID 1311879165-10396-1-git-send-email-jbarnes@virtuousgeek.org (mailing list archive)
State New, archived
Headers show

Commit Message

Jesse Barnes July 28, 2011, 6:52 p.m. UTC
After writing to the plane control reg we need to write to the surface
reg to trigger the double buffered register latch.  On previous
chipsets, writing to DSPADDR was enough, but on ILK+ DSPSURF is the reg
that triggers the double buffer latch.

v2: write DSPADDR too to cover pre-965 chipsets
v3: use flush_display_plane instead, that's what it's for
v4: send the right patch

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/gpu/drm/i915/intel_display.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

Comments

Keith Packard July 28, 2011, 9:32 p.m. UTC | #1
On Thu, 28 Jul 2011 11:52:45 -0700, Jesse Barnes <jbarnes@virtuousgeek.org> wrote:

> After writing to the plane control reg we need to write to the surface
> reg to trigger the double buffered register latch.  On previous
> chipsets, writing to DSPADDR was enough, but on ILK+ DSPSURF is the reg
> that triggers the double buffer latch.

Yup, that's what the docs say too. And, it fixes the stripey-monitor bug
nicely.

Thanks jbarnes!

Reviewed-by: Keith Packard <keithp@keithp.com>
Tested-by: Keith Packard <keithp@keithp.com>
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 32ffde2..73bf235 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1309,8 +1309,8 @@  static void intel_enable_plane(struct drm_i915_private *dev_priv,
 static void intel_flush_display_plane(struct drm_i915_private *dev_priv,
 				      enum plane plane)
 {
-	u32 reg = DSPADDR(plane);
-	I915_WRITE(reg, I915_READ(reg));
+	I915_WRITE(DSPADDR(plane), I915_READ(DSPADDR(plane)));
+	I915_WRITE(DSPSURF(plane), I915_READ(DSPSURF(plane)));
 }
 
 /**