提交 41373cd5 编写于 作者: D Daniel Vetter

drm/i915: Call runtime_pm_disable directly

Allows us to mark it static and so forgoe the kerneldoc for it.

Note that intel_power_domains_fini is also called from failure paths
in the driver load sequence. But the call to runtime_pm_disable for
that is harmless since by default runtime pm is already disabled.

v2: Augment the commit message as discussed with Imre on irc.
Reviewed-by: NImre Deak <imre.deak@intel.com>
Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
上级 d9bc89d9
...@@ -1846,12 +1846,10 @@ int i915_driver_unload(struct drm_device *dev) ...@@ -1846,12 +1846,10 @@ int i915_driver_unload(struct drm_device *dev)
return ret; return ret;
} }
intel_runtime_pm_disable(dev_priv); intel_power_domains_fini(dev_priv);
intel_gpu_ips_teardown(); intel_gpu_ips_teardown();
intel_power_domains_fini(dev_priv);
i915_teardown_sysfs(dev); i915_teardown_sysfs(dev);
WARN_ON(unregister_oom_notifier(&dev_priv->mm.oom_notifier)); WARN_ON(unregister_oom_notifier(&dev_priv->mm.oom_notifier));
......
...@@ -1085,7 +1085,6 @@ int intel_power_domains_init(struct drm_i915_private *); ...@@ -1085,7 +1085,6 @@ int intel_power_domains_init(struct drm_i915_private *);
void intel_power_domains_fini(struct drm_i915_private *); void intel_power_domains_fini(struct drm_i915_private *);
void intel_power_domains_init_hw(struct drm_i915_private *dev_priv); void intel_power_domains_init_hw(struct drm_i915_private *dev_priv);
void intel_runtime_pm_enable(struct drm_i915_private *dev_priv); void intel_runtime_pm_enable(struct drm_i915_private *dev_priv);
void intel_runtime_pm_disable(struct drm_i915_private *dev_priv);
bool intel_display_power_is_enabled(struct drm_i915_private *dev_priv, bool intel_display_power_is_enabled(struct drm_i915_private *dev_priv,
enum intel_display_power_domain domain); enum intel_display_power_domain domain);
......
...@@ -995,8 +995,26 @@ int intel_power_domains_init(struct drm_i915_private *dev_priv) ...@@ -995,8 +995,26 @@ int intel_power_domains_init(struct drm_i915_private *dev_priv)
return 0; return 0;
} }
static void intel_runtime_pm_disable(struct drm_i915_private *dev_priv)
{
struct drm_device *dev = dev_priv->dev;
struct device *device = &dev->pdev->dev;
if (!HAS_RUNTIME_PM(dev))
return;
if (!intel_enable_rc6(dev))
return;
/* Make sure we're not suspended first. */
pm_runtime_get_sync(device);
pm_runtime_disable(device);
}
void intel_power_domains_fini(struct drm_i915_private *dev_priv) void intel_power_domains_fini(struct drm_i915_private *dev_priv)
{ {
intel_runtime_pm_disable(dev_priv);
/* The i915.ko module is still not prepared to be loaded when /* The i915.ko module is still not prepared to be loaded when
* the power well is not enabled, so just enable it in case * the power well is not enabled, so just enable it in case
* we're going to unload/reload. */ * we're going to unload/reload. */
...@@ -1142,22 +1160,6 @@ void intel_runtime_pm_enable(struct drm_i915_private *dev_priv) ...@@ -1142,22 +1160,6 @@ void intel_runtime_pm_enable(struct drm_i915_private *dev_priv)
pm_runtime_put_autosuspend(device); pm_runtime_put_autosuspend(device);
} }
void intel_runtime_pm_disable(struct drm_i915_private *dev_priv)
{
struct drm_device *dev = dev_priv->dev;
struct device *device = &dev->pdev->dev;
if (!HAS_RUNTIME_PM(dev))
return;
if (!intel_enable_rc6(dev))
return;
/* Make sure we're not suspended first. */
pm_runtime_get_sync(device);
pm_runtime_disable(device);
}
/* Display audio driver power well request */ /* Display audio driver power well request */
int i915_request_power_well(void) int i915_request_power_well(void)
{ {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册