diff options
author | Zhenyu Wang <zhenyuw@linux.intel.com> | 2009-09-01 22:57:52 -0400 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2009-09-04 16:05:44 -0400 |
commit | 553bd149bb2de7848b2b84642876f27202421368 (patch) | |
tree | e74d910f9937d61c3128526ad10a8f61ba2649fa /drivers/gpu/drm/i915/intel_display.c | |
parent | 65655d4ab72456c4c3e503fead55fabf8211a79d (diff) |
drm/i915: fix tiling on IGDNG
It seems that on IGDNG the same swizzling setup always applys.
And front buffer tiling needs to set address swizzle in display
arb control too.
Fix plane tricle feed setting in v1 which should be disable bit,
and always setup address swizzle to let hardware care for buffer
tiling in all cases.
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 867a969980ec..d7c7fa489872 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -1064,6 +1064,10 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y, | |||
1064 | dspcntr &= ~DISPPLANE_TILED; | 1064 | dspcntr &= ~DISPPLANE_TILED; |
1065 | } | 1065 | } |
1066 | 1066 | ||
1067 | if (IS_IGDNG(dev)) | ||
1068 | /* must disable */ | ||
1069 | dspcntr |= DISPPLANE_TRICKLE_FEED_DISABLE; | ||
1070 | |||
1067 | I915_WRITE(dspcntr_reg, dspcntr); | 1071 | I915_WRITE(dspcntr_reg, dspcntr); |
1068 | 1072 | ||
1069 | Start = obj_priv->gtt_offset; | 1073 | Start = obj_priv->gtt_offset; |
@@ -2719,6 +2723,12 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc, | |||
2719 | 2723 | ||
2720 | intel_wait_for_vblank(dev); | 2724 | intel_wait_for_vblank(dev); |
2721 | 2725 | ||
2726 | if (IS_IGDNG(dev)) { | ||
2727 | /* enable address swizzle for tiling buffer */ | ||
2728 | temp = I915_READ(DISP_ARB_CTL); | ||
2729 | I915_WRITE(DISP_ARB_CTL, temp | DISP_TILE_SURFACE_SWIZZLING); | ||
2730 | } | ||
2731 | |||
2722 | I915_WRITE(dspcntr_reg, dspcntr); | 2732 | I915_WRITE(dspcntr_reg, dspcntr); |
2723 | 2733 | ||
2724 | /* Flush the plane changes */ | 2734 | /* Flush the plane changes */ |