diff options
author | Zhenyu Wang <zhenyuw@linux.intel.com> | 2010-04-01 01:07:53 -0400 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2010-04-12 12:30:43 -0400 |
commit | 7f8a85698f5c8a981641ec0bdf9926768786db9d (patch) | |
tree | 3ae3183d2ac3f9816d501afd80e06fbd34d2c683 /drivers/gpu/drm/i915/i915_reg.h | |
parent | d4294342fd4b94a3297867da00c1c5e929c28d4f (diff) |
drm/i915: Add the support of memory self-refresh on Ironlake
Update the self-refresh watermark for display plane/cursor and enable
the memory self-refresh on Ironlake. The watermark is also updated for
the active display plane.
More than 1W idle power is saved on one Ironlake laptop after enabling
memory self-refresh.
Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_reg.h')
-rw-r--r-- | drivers/gpu/drm/i915/i915_reg.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index 6d8bf6220e19..527d30aecda2 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h | |||
@@ -2030,6 +2030,43 @@ | |||
2030 | #define PINEVIEW_CURSOR_DFT_WM 0 | 2030 | #define PINEVIEW_CURSOR_DFT_WM 0 |
2031 | #define PINEVIEW_CURSOR_GUARD_WM 5 | 2031 | #define PINEVIEW_CURSOR_GUARD_WM 5 |
2032 | 2032 | ||
2033 | |||
2034 | /* define the Watermark register on Ironlake */ | ||
2035 | #define WM0_PIPEA_ILK 0x45100 | ||
2036 | #define WM0_PIPE_PLANE_MASK (0x7f<<16) | ||
2037 | #define WM0_PIPE_PLANE_SHIFT 16 | ||
2038 | #define WM0_PIPE_SPRITE_MASK (0x3f<<8) | ||
2039 | #define WM0_PIPE_SPRITE_SHIFT 8 | ||
2040 | #define WM0_PIPE_CURSOR_MASK (0x1f) | ||
2041 | |||
2042 | #define WM0_PIPEB_ILK 0x45104 | ||
2043 | #define WM1_LP_ILK 0x45108 | ||
2044 | #define WM1_LP_SR_EN (1<<31) | ||
2045 | #define WM1_LP_LATENCY_SHIFT 24 | ||
2046 | #define WM1_LP_LATENCY_MASK (0x7f<<24) | ||
2047 | #define WM1_LP_SR_MASK (0x1ff<<8) | ||
2048 | #define WM1_LP_SR_SHIFT 8 | ||
2049 | #define WM1_LP_CURSOR_MASK (0x3f) | ||
2050 | |||
2051 | /* Memory latency timer register */ | ||
2052 | #define MLTR_ILK 0x11222 | ||
2053 | /* the unit of memory self-refresh latency time is 0.5us */ | ||
2054 | #define ILK_SRLT_MASK 0x3f | ||
2055 | |||
2056 | /* define the fifo size on Ironlake */ | ||
2057 | #define ILK_DISPLAY_FIFO 128 | ||
2058 | #define ILK_DISPLAY_MAXWM 64 | ||
2059 | #define ILK_DISPLAY_DFTWM 8 | ||
2060 | |||
2061 | #define ILK_DISPLAY_SR_FIFO 512 | ||
2062 | #define ILK_DISPLAY_MAX_SRWM 0x1ff | ||
2063 | #define ILK_DISPLAY_DFT_SRWM 0x3f | ||
2064 | #define ILK_CURSOR_SR_FIFO 64 | ||
2065 | #define ILK_CURSOR_MAX_SRWM 0x3f | ||
2066 | #define ILK_CURSOR_DFT_SRWM 8 | ||
2067 | |||
2068 | #define ILK_FIFO_LINE_SIZE 64 | ||
2069 | |||
2033 | /* | 2070 | /* |
2034 | * The two pipe frame counter registers are not synchronized, so | 2071 | * The two pipe frame counter registers are not synchronized, so |
2035 | * reading a stable value is somewhat tricky. The following code | 2072 | * reading a stable value is somewhat tricky. The following code |
@@ -2310,8 +2347,15 @@ | |||
2310 | #define GTIIR 0x44018 | 2347 | #define GTIIR 0x44018 |
2311 | #define GTIER 0x4401c | 2348 | #define GTIER 0x4401c |
2312 | 2349 | ||
2350 | #define ILK_DISPLAY_CHICKEN2 0x42004 | ||
2351 | #define ILK_DPARB_GATE (1<<22) | ||
2352 | #define ILK_VSDPFD_FULL (1<<21) | ||
2353 | #define ILK_DSPCLK_GATE 0x42020 | ||
2354 | #define ILK_DPARB_CLK_GATE (1<<5) | ||
2355 | |||
2313 | #define DISP_ARB_CTL 0x45000 | 2356 | #define DISP_ARB_CTL 0x45000 |
2314 | #define DISP_TILE_SURFACE_SWIZZLING (1<<13) | 2357 | #define DISP_TILE_SURFACE_SWIZZLING (1<<13) |
2358 | #define DISP_FBC_WM_DIS (1<<15) | ||
2315 | 2359 | ||
2316 | /* PCH */ | 2360 | /* PCH */ |
2317 | 2361 | ||