aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_reg.h
diff options
context:
space:
mode:
authorLi Peng <peng.li@linux.intel.com>2010-01-27 06:01:11 -0500
committerEric Anholt <eric@anholt.net>2010-02-22 11:46:50 -0500
commitee980b8003a25fbfed50c3367f2b426c870eaf90 (patch)
tree1753500fd849e4dd68a4878f31baa95743699535 /drivers/gpu/drm/i915/i915_reg.h
parentb397c836eff58cd9a43f7bd8b853a51b3ecc3420 (diff)
drm/i915: enable memory self refresh on 9xx
Enabling memory self refresh (SR) on 9xx needs to set additional register bits. On 945, we need bit 31 of FW_BLC_SELF to enable the write to self refresh bit and bit 16 to enable the write of self refresh watermark. On 915, bit 12 of INSTPM is used to enable SR. SR will take effect when CPU enters C3+ state and its entry/exit should be automatically controlled by H/W, driver only needs to set SR enable bits in wm update. But this isn't safe in my test on 945 because GPU is hung. So this patch explicitly enables SR when GPU is idle, and disables SR when it is busy. In my test on a netbook of 945GSE chipset, it saves about 0.8W idle power. Signed-off-by: Li Peng <peng.li@intel.com> [anholt: rebased against 33c5fd121eabbccc9103daf6cda36941eb3c349f by adding disable of INSTPM SR bit on 915GM for two pipe setup] Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_reg.h')
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index ab1bd2d3d3b6..6defb7f47348 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -306,11 +306,14 @@
306#define I915_ERROR_MEMORY_REFRESH (1<<1) 306#define I915_ERROR_MEMORY_REFRESH (1<<1)
307#define I915_ERROR_INSTRUCTION (1<<0) 307#define I915_ERROR_INSTRUCTION (1<<0)
308#define INSTPM 0x020c0 308#define INSTPM 0x020c0
309#define INSTPM_SELF_EN (1<<12) /* 915GM only */
309#define ACTHD 0x020c8 310#define ACTHD 0x020c8
310#define FW_BLC 0x020d8 311#define FW_BLC 0x020d8
311#define FW_BLC2 0x020dc 312#define FW_BLC2 0x020dc
312#define FW_BLC_SELF 0x020e0 /* 915+ only */ 313#define FW_BLC_SELF 0x020e0 /* 915+ only */
313#define FW_BLC_SELF_EN (1<<15) 314#define FW_BLC_SELF_EN_MASK (1<<31)
315#define FW_BLC_SELF_FIFO_MASK (1<<16) /* 945 only */
316#define FW_BLC_SELF_EN (1<<15) /* 945 only */
314#define MM_BURST_LENGTH 0x00700000 317#define MM_BURST_LENGTH 0x00700000
315#define MM_FIFO_WATERMARK 0x0001F000 318#define MM_FIFO_WATERMARK 0x0001F000
316#define LM_BURST_LENGTH 0x00000700 319#define LM_BURST_LENGTH 0x00000700