aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorZhao Yakui <yakui.zhao@intel.com>2010-06-12 02:32:24 -0400
committerEric Anholt <eric@anholt.net>2010-08-01 22:03:43 -0400
commit1b07e04e9cd443fc333f4036d129ba7c08d340c4 (patch)
treed516dd5e3894b1268be266b9824e8ee74c101726 /drivers/gpu
parentfa143215b11056b878875f87edac78a1cfb9d1c0 (diff)
drm/i915: Fix fifo size for self-refresh watermark on 965G
The total self-refresh fifo entry size for display plane is 512 instead of 128 for 965G. Also fix WM value mask for 965G. About 1.0W power can be saved on one T61 laptop after the self-refresh watermark is configured correctly. Signed-off-by: Zhao Yakui <yakui.zhao@intel.com> Signed-off-by: Zhenyu wang <zhenyuw@linux.intel.com> Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h3
-rw-r--r--drivers/gpu/drm/i915/intel_display.c4
2 files changed, 4 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index dc7c6f8c6693..b637fbf592ec 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2140,7 +2140,8 @@
2140#define I830_FIFO_LINE_SIZE 32 2140#define I830_FIFO_LINE_SIZE 32
2141 2141
2142#define G4X_FIFO_SIZE 127 2142#define G4X_FIFO_SIZE 127
2143#define I945_FIFO_SIZE 127 /* 945 & 965 */ 2143#define I965_FIFO_SIZE 512
2144#define I945_FIFO_SIZE 127
2144#define I915_FIFO_SIZE 95 2145#define I915_FIFO_SIZE 95
2145#define I855GM_FIFO_SIZE 127 /* In cachelines */ 2146#define I855GM_FIFO_SIZE 127 /* In cachelines */
2146#define I830_FIFO_SIZE 95 2147#define I830_FIFO_SIZE 95
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 274d78d023a1..09e3f02f529e 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2970,10 +2970,10 @@ static void i965_update_wm(struct drm_device *dev, int planea_clock,
2970 pixel_size * sr_hdisplay; 2970 pixel_size * sr_hdisplay;
2971 sr_entries = roundup(sr_entries / I915_FIFO_LINE_SIZE, 1); 2971 sr_entries = roundup(sr_entries / I915_FIFO_LINE_SIZE, 1);
2972 DRM_DEBUG("self-refresh entries: %d\n", sr_entries); 2972 DRM_DEBUG("self-refresh entries: %d\n", sr_entries);
2973 srwm = I945_FIFO_SIZE - sr_entries; 2973 srwm = I965_FIFO_SIZE - sr_entries;
2974 if (srwm < 0) 2974 if (srwm < 0)
2975 srwm = 1; 2975 srwm = 1;
2976 srwm &= 0x3f; 2976 srwm &= 0x1ff;
2977 if (IS_I965GM(dev)) 2977 if (IS_I965GM(dev))
2978 I915_WRITE(FW_BLC_SELF, FW_BLC_SELF_EN); 2978 I915_WRITE(FW_BLC_SELF, FW_BLC_SELF_EN);
2979 } else { 2979 } else {