diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_pm.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_pm.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 1f4b56e273c8..964b28e3c630 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c | |||
@@ -6191,6 +6191,20 @@ void intel_cleanup_gt_powersave(struct drm_device *dev) | |||
6191 | valleyview_cleanup_gt_powersave(dev); | 6191 | valleyview_cleanup_gt_powersave(dev); |
6192 | } | 6192 | } |
6193 | 6193 | ||
6194 | static void gen6_suspend_rps(struct drm_device *dev) | ||
6195 | { | ||
6196 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
6197 | |||
6198 | flush_delayed_work(&dev_priv->rps.delayed_resume_work); | ||
6199 | |||
6200 | /* | ||
6201 | * TODO: disable RPS interrupts on GEN9+ too once RPS support | ||
6202 | * is added for it. | ||
6203 | */ | ||
6204 | if (INTEL_INFO(dev)->gen < 9) | ||
6205 | gen6_disable_rps_interrupts(dev); | ||
6206 | } | ||
6207 | |||
6194 | /** | 6208 | /** |
6195 | * intel_suspend_gt_powersave - suspend PM work and helper threads | 6209 | * intel_suspend_gt_powersave - suspend PM work and helper threads |
6196 | * @dev: drm device | 6210 | * @dev: drm device |
@@ -6206,14 +6220,7 @@ void intel_suspend_gt_powersave(struct drm_device *dev) | |||
6206 | if (INTEL_INFO(dev)->gen < 6) | 6220 | if (INTEL_INFO(dev)->gen < 6) |
6207 | return; | 6221 | return; |
6208 | 6222 | ||
6209 | flush_delayed_work(&dev_priv->rps.delayed_resume_work); | 6223 | gen6_suspend_rps(dev); |
6210 | |||
6211 | /* | ||
6212 | * TODO: disable RPS interrupts on GEN9+ too once RPS support | ||
6213 | * is added for it. | ||
6214 | */ | ||
6215 | if (INTEL_INFO(dev)->gen < 9) | ||
6216 | gen6_disable_rps_interrupts(dev); | ||
6217 | 6224 | ||
6218 | /* Force GPU to min freq during suspend */ | 6225 | /* Force GPU to min freq during suspend */ |
6219 | gen6_rps_idle(dev_priv); | 6226 | gen6_rps_idle(dev_priv); |
@@ -6316,8 +6323,11 @@ void intel_reset_gt_powersave(struct drm_device *dev) | |||
6316 | { | 6323 | { |
6317 | struct drm_i915_private *dev_priv = dev->dev_private; | 6324 | struct drm_i915_private *dev_priv = dev->dev_private; |
6318 | 6325 | ||
6326 | if (INTEL_INFO(dev)->gen < 6) | ||
6327 | return; | ||
6328 | |||
6329 | gen6_suspend_rps(dev); | ||
6319 | dev_priv->rps.enabled = false; | 6330 | dev_priv->rps.enabled = false; |
6320 | intel_enable_gt_powersave(dev); | ||
6321 | } | 6331 | } |
6322 | 6332 | ||
6323 | static void ibx_init_clock_gating(struct drm_device *dev) | 6333 | static void ibx_init_clock_gating(struct drm_device *dev) |