aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 58a03f863379..97be125992d5 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -3803,6 +3803,16 @@ static int cherryview_rps_rpe_freq(struct drm_i915_private *dev_priv)
3803 return rpe; 3803 return rpe;
3804} 3804}
3805 3805
3806static int cherryview_rps_guar_freq(struct drm_i915_private *dev_priv)
3807{
3808 u32 val, rp1;
3809
3810 val = vlv_punit_read(dev_priv, PUNIT_REG_GPU_FREQ_STS);
3811 rp1 = (val >> PUNIT_GPU_STATUS_MAX_FREQ_SHIFT) & PUNIT_GPU_STATUS_MAX_FREQ_MASK;
3812
3813 return rp1;
3814}
3815
3806static int cherryview_rps_min_freq(struct drm_i915_private *dev_priv) 3816static int cherryview_rps_min_freq(struct drm_i915_private *dev_priv)
3807{ 3817{
3808 u32 val, rpn; 3818 u32 val, rpn;
@@ -4004,6 +4014,11 @@ static void cherryview_init_gt_powersave(struct drm_device *dev)
4004 vlv_gpu_freq(dev_priv, dev_priv->rps.efficient_freq), 4014 vlv_gpu_freq(dev_priv, dev_priv->rps.efficient_freq),
4005 dev_priv->rps.efficient_freq); 4015 dev_priv->rps.efficient_freq);
4006 4016
4017 dev_priv->rps.rp1_freq = cherryview_rps_guar_freq(dev_priv);
4018 DRM_DEBUG_DRIVER("RP1(Guar) GPU freq: %d MHz (%u)\n",
4019 vlv_gpu_freq(dev_priv, dev_priv->rps.rp1_freq),
4020 dev_priv->rps.rp1_freq);
4021
4007 dev_priv->rps.min_freq = cherryview_rps_min_freq(dev_priv); 4022 dev_priv->rps.min_freq = cherryview_rps_min_freq(dev_priv);
4008 DRM_DEBUG_DRIVER("min GPU freq: %d MHz (%u)\n", 4023 DRM_DEBUG_DRIVER("min GPU freq: %d MHz (%u)\n",
4009 vlv_gpu_freq(dev_priv, dev_priv->rps.min_freq), 4024 vlv_gpu_freq(dev_priv, dev_priv->rps.min_freq),