aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2010-08-04 15:22:09 -0400
committerEric Anholt <eric@anholt.net>2010-08-09 14:24:30 -0400
commit69d0b96c095468526009cb3104eee561c9252a84 (patch)
tree4589586a0d5a86174cfe13ee5976ef179dbca037
parent0be555b66a871d711a89c301b37e763058d34d33 (diff)
drm/i915: fixup pageflip ringbuffer commands for i8xx
Add a new path for 2nd gen chips that uses the commands for i81x chips (where public docs do exist) augmented with the plane bits from i915. It seems to work and doesn't result in a black screen like before. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: stable@kernel.org [anholt: resolved against conflict] Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Eric Anholt <eric@anholt.net>
-rw-r--r--drivers/gpu/drm/i915/intel_display.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index f3b014fe3508..ce7a46b6909b 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -5119,12 +5119,18 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
5119 OUT_RING(offset | obj_priv->tiling_mode); 5119 OUT_RING(offset | obj_priv->tiling_mode);
5120 pipesrc = I915_READ(pipesrc_reg); 5120 pipesrc = I915_READ(pipesrc_reg);
5121 OUT_RING(pipesrc & 0x0fff0fff); 5121 OUT_RING(pipesrc & 0x0fff0fff);
5122 } else { 5122 } else if (IS_GEN3(dev)) {
5123 OUT_RING(MI_DISPLAY_FLIP_I915 | 5123 OUT_RING(MI_DISPLAY_FLIP_I915 |
5124 MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); 5124 MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
5125 OUT_RING(fb->pitch); 5125 OUT_RING(fb->pitch);
5126 OUT_RING(offset); 5126 OUT_RING(offset);
5127 OUT_RING(MI_NOOP); 5127 OUT_RING(MI_NOOP);
5128 } else {
5129 OUT_RING(MI_DISPLAY_FLIP |
5130 MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
5131 OUT_RING(fb->pitch);
5132 OUT_RING(offset);
5133 OUT_RING(MI_NOOP);
5128 } 5134 }
5129 ADVANCE_LP_RING(); 5135 ADVANCE_LP_RING();
5130 5136