diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2014-06-27 19:03:53 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-07-11 10:03:17 -0400 |
commit | 03af20458a57a50735b12c1e3c23abc7ff70c6fa (patch) | |
tree | 4de5b61ff4561c0c2d9acc4c1e8bbf58b6e1b4aa | |
parent | ca2aed6cec9ed3a11a95771d8ef4265247031157 (diff) |
drm/i915: Use the cached min/min/rpe values in the vlv debugfs code
No need to re-read the hardware rps fuses when we already have all the
values tucked away in dev_priv->rps.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Deepak S <deepak.s@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r-- | drivers/gpu/drm/i915/i915_debugfs.c | 19 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_pm.c | 8 |
3 files changed, 14 insertions, 15 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 4a5b0f80e059..981ca4243bd3 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c | |||
@@ -1108,20 +1108,21 @@ static int i915_frequency_info(struct seq_file *m, void *unused) | |||
1108 | seq_printf(m, "Max overclocked frequency: %dMHz\n", | 1108 | seq_printf(m, "Max overclocked frequency: %dMHz\n", |
1109 | dev_priv->rps.max_freq * GT_FREQUENCY_MULTIPLIER); | 1109 | dev_priv->rps.max_freq * GT_FREQUENCY_MULTIPLIER); |
1110 | } else if (IS_VALLEYVIEW(dev)) { | 1110 | } else if (IS_VALLEYVIEW(dev)) { |
1111 | u32 freq_sts, val; | 1111 | u32 freq_sts; |
1112 | 1112 | ||
1113 | mutex_lock(&dev_priv->rps.hw_lock); | 1113 | mutex_lock(&dev_priv->rps.hw_lock); |
1114 | freq_sts = vlv_punit_read(dev_priv, PUNIT_REG_GPU_FREQ_STS); | 1114 | freq_sts = vlv_punit_read(dev_priv, PUNIT_REG_GPU_FREQ_STS); |
1115 | seq_printf(m, "PUNIT_REG_GPU_FREQ_STS: 0x%08x\n", freq_sts); | 1115 | seq_printf(m, "PUNIT_REG_GPU_FREQ_STS: 0x%08x\n", freq_sts); |
1116 | seq_printf(m, "DDR freq: %d MHz\n", dev_priv->mem_freq); | 1116 | seq_printf(m, "DDR freq: %d MHz\n", dev_priv->mem_freq); |
1117 | 1117 | ||
1118 | val = valleyview_rps_max_freq(dev_priv); | ||
1119 | seq_printf(m, "max GPU freq: %d MHz\n", | 1118 | seq_printf(m, "max GPU freq: %d MHz\n", |
1120 | vlv_gpu_freq(dev_priv, val)); | 1119 | dev_priv->rps.max_freq); |
1121 | 1120 | ||
1122 | val = valleyview_rps_min_freq(dev_priv); | ||
1123 | seq_printf(m, "min GPU freq: %d MHz\n", | 1121 | seq_printf(m, "min GPU freq: %d MHz\n", |
1124 | vlv_gpu_freq(dev_priv, val)); | 1122 | dev_priv->rps.min_freq); |
1123 | |||
1124 | seq_printf(m, "efficient (RPe) frequency: %d MHz\n", | ||
1125 | dev_priv->rps.efficient_freq); | ||
1125 | 1126 | ||
1126 | seq_printf(m, "current GPU freq: %d MHz\n", | 1127 | seq_printf(m, "current GPU freq: %d MHz\n", |
1127 | vlv_gpu_freq(dev_priv, (freq_sts >> 8) & 0xff)); | 1128 | vlv_gpu_freq(dev_priv, (freq_sts >> 8) & 0xff)); |
@@ -3632,8 +3633,8 @@ i915_max_freq_set(void *data, u64 val) | |||
3632 | if (IS_VALLEYVIEW(dev)) { | 3633 | if (IS_VALLEYVIEW(dev)) { |
3633 | val = vlv_freq_opcode(dev_priv, val); | 3634 | val = vlv_freq_opcode(dev_priv, val); |
3634 | 3635 | ||
3635 | hw_max = valleyview_rps_max_freq(dev_priv); | 3636 | hw_max = dev_priv->rps.max_freq; |
3636 | hw_min = valleyview_rps_min_freq(dev_priv); | 3637 | hw_min = dev_priv->rps.min_freq; |
3637 | } else { | 3638 | } else { |
3638 | do_div(val, GT_FREQUENCY_MULTIPLIER); | 3639 | do_div(val, GT_FREQUENCY_MULTIPLIER); |
3639 | 3640 | ||
@@ -3713,8 +3714,8 @@ i915_min_freq_set(void *data, u64 val) | |||
3713 | if (IS_VALLEYVIEW(dev)) { | 3714 | if (IS_VALLEYVIEW(dev)) { |
3714 | val = vlv_freq_opcode(dev_priv, val); | 3715 | val = vlv_freq_opcode(dev_priv, val); |
3715 | 3716 | ||
3716 | hw_max = valleyview_rps_max_freq(dev_priv); | 3717 | hw_max = dev_priv->rps.max_freq; |
3717 | hw_min = valleyview_rps_min_freq(dev_priv); | 3718 | hw_min = dev_priv->rps.min_freq; |
3718 | } else { | 3719 | } else { |
3719 | do_div(val, GT_FREQUENCY_MULTIPLIER); | 3720 | do_div(val, GT_FREQUENCY_MULTIPLIER); |
3720 | 3721 | ||
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 263a8799eb59..7031757628ff 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -2684,8 +2684,6 @@ extern bool ironlake_set_drps(struct drm_device *dev, u8 val); | |||
2684 | extern void intel_init_pch_refclk(struct drm_device *dev); | 2684 | extern void intel_init_pch_refclk(struct drm_device *dev); |
2685 | extern void gen6_set_rps(struct drm_device *dev, u8 val); | 2685 | extern void gen6_set_rps(struct drm_device *dev, u8 val); |
2686 | extern void valleyview_set_rps(struct drm_device *dev, u8 val); | 2686 | extern void valleyview_set_rps(struct drm_device *dev, u8 val); |
2687 | extern int valleyview_rps_max_freq(struct drm_i915_private *dev_priv); | ||
2688 | extern int valleyview_rps_min_freq(struct drm_i915_private *dev_priv); | ||
2689 | extern void intel_set_memory_cxsr(struct drm_i915_private *dev_priv, | 2687 | extern void intel_set_memory_cxsr(struct drm_i915_private *dev_priv, |
2690 | bool enable); | 2688 | bool enable); |
2691 | extern void intel_detect_pch(struct drm_device *dev); | 2689 | extern void intel_detect_pch(struct drm_device *dev); |
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 780c3ab26f4f..2bc08a28268e 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c | |||
@@ -3781,7 +3781,7 @@ void gen6_update_ring_freq(struct drm_device *dev) | |||
3781 | mutex_unlock(&dev_priv->rps.hw_lock); | 3781 | mutex_unlock(&dev_priv->rps.hw_lock); |
3782 | } | 3782 | } |
3783 | 3783 | ||
3784 | int cherryview_rps_max_freq(struct drm_i915_private *dev_priv) | 3784 | static int cherryview_rps_max_freq(struct drm_i915_private *dev_priv) |
3785 | { | 3785 | { |
3786 | u32 val, rp0; | 3786 | u32 val, rp0; |
3787 | 3787 | ||
@@ -3801,7 +3801,7 @@ static int cherryview_rps_rpe_freq(struct drm_i915_private *dev_priv) | |||
3801 | return rpe; | 3801 | return rpe; |
3802 | } | 3802 | } |
3803 | 3803 | ||
3804 | int cherryview_rps_min_freq(struct drm_i915_private *dev_priv) | 3804 | static int cherryview_rps_min_freq(struct drm_i915_private *dev_priv) |
3805 | { | 3805 | { |
3806 | u32 val, rpn; | 3806 | u32 val, rpn; |
3807 | 3807 | ||
@@ -3810,7 +3810,7 @@ int cherryview_rps_min_freq(struct drm_i915_private *dev_priv) | |||
3810 | return rpn; | 3810 | return rpn; |
3811 | } | 3811 | } |
3812 | 3812 | ||
3813 | int valleyview_rps_max_freq(struct drm_i915_private *dev_priv) | 3813 | static int valleyview_rps_max_freq(struct drm_i915_private *dev_priv) |
3814 | { | 3814 | { |
3815 | u32 val, rp0; | 3815 | u32 val, rp0; |
3816 | 3816 | ||
@@ -3835,7 +3835,7 @@ static int valleyview_rps_rpe_freq(struct drm_i915_private *dev_priv) | |||
3835 | return rpe; | 3835 | return rpe; |
3836 | } | 3836 | } |
3837 | 3837 | ||
3838 | int valleyview_rps_min_freq(struct drm_i915_private *dev_priv) | 3838 | static int valleyview_rps_min_freq(struct drm_i915_private *dev_priv) |
3839 | { | 3839 | { |
3840 | return vlv_punit_read(dev_priv, PUNIT_REG_GPU_LFM) & 0xff; | 3840 | return vlv_punit_read(dev_priv, PUNIT_REG_GPU_LFM) & 0xff; |
3841 | } | 3841 | } |