diff options
author | Jesse Barnes <jbarnes@virtuousgeek.org> | 2011-01-05 15:01:24 -0500 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-01-11 15:43:58 -0500 |
commit | 88271da3f3da75d6eaef5e768c82a1627edf7088 (patch) | |
tree | be417b97f6252786dd0366592d05d1fc0cb8a939 /drivers/gpu/drm/i915/i915_debugfs.c | |
parent | 0dc79fb2a36efcadbb39bd8b28933d8aa40408b1 (diff) |
drm/i915: re-enable rc6 support for Ironlake+
Re-enable rc6 support on Ironlake for power savings. Adds a debugfs
file to check current RC state, adds a missing workaround for Ironlake
MI_SET_CONTEXT instructions, and renames MCHBAR_RENDER_STANDBY to
RSTDBYCTL to match the docs.
Keep RC6 and the power context disabled on pre-ILK. It only seems to
hang and doesn't save any power.
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_debugfs.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_debugfs.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 7243d6418651..9c4cdc143be9 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c | |||
@@ -896,7 +896,7 @@ static int i915_drpc_info(struct seq_file *m, void *unused) | |||
896 | struct drm_device *dev = node->minor->dev; | 896 | struct drm_device *dev = node->minor->dev; |
897 | drm_i915_private_t *dev_priv = dev->dev_private; | 897 | drm_i915_private_t *dev_priv = dev->dev_private; |
898 | u32 rgvmodectl = I915_READ(MEMMODECTL); | 898 | u32 rgvmodectl = I915_READ(MEMMODECTL); |
899 | u32 rstdbyctl = I915_READ(MCHBAR_RENDER_STANDBY); | 899 | u32 rstdbyctl = I915_READ(RSTDBYCTL); |
900 | u16 crstandvid = I915_READ16(CRSTANDVID); | 900 | u16 crstandvid = I915_READ16(CRSTANDVID); |
901 | 901 | ||
902 | seq_printf(m, "HD boost: %s\n", (rgvmodectl & MEMMODE_BOOST_EN) ? | 902 | seq_printf(m, "HD boost: %s\n", (rgvmodectl & MEMMODE_BOOST_EN) ? |
@@ -919,6 +919,30 @@ static int i915_drpc_info(struct seq_file *m, void *unused) | |||
919 | seq_printf(m, "RS2 VID: %d\n", ((crstandvid >> 8) & 0x3f)); | 919 | seq_printf(m, "RS2 VID: %d\n", ((crstandvid >> 8) & 0x3f)); |
920 | seq_printf(m, "Render standby enabled: %s\n", | 920 | seq_printf(m, "Render standby enabled: %s\n", |
921 | (rstdbyctl & RCX_SW_EXIT) ? "no" : "yes"); | 921 | (rstdbyctl & RCX_SW_EXIT) ? "no" : "yes"); |
922 | seq_printf(m, "Current RS state: "); | ||
923 | switch (rstdbyctl & RSX_STATUS_MASK) { | ||
924 | case RSX_STATUS_ON: | ||
925 | seq_printf(m, "on\n"); | ||
926 | break; | ||
927 | case RSX_STATUS_RC1: | ||
928 | seq_printf(m, "RC1\n"); | ||
929 | break; | ||
930 | case RSX_STATUS_RC1E: | ||
931 | seq_printf(m, "RC1E\n"); | ||
932 | break; | ||
933 | case RSX_STATUS_RS1: | ||
934 | seq_printf(m, "RS1\n"); | ||
935 | break; | ||
936 | case RSX_STATUS_RS2: | ||
937 | seq_printf(m, "RS2 (RC6)\n"); | ||
938 | break; | ||
939 | case RSX_STATUS_RS3: | ||
940 | seq_printf(m, "RC3 (RC6+)\n"); | ||
941 | break; | ||
942 | default: | ||
943 | seq_printf(m, "unknown\n"); | ||
944 | break; | ||
945 | } | ||
922 | 946 | ||
923 | return 0; | 947 | return 0; |
924 | } | 948 | } |