diff options
author | Hans de Goede <j.w.r.degoede@gmail.com> | 2017-11-14 08:55:17 -0500 |
---|---|---|
committer | Jani Nikula <jani.nikula@intel.com> | 2017-11-21 04:39:31 -0500 |
commit | 294cf1af8cf2eb0d1eced377fdfb9a2d3f0e8b42 (patch) | |
tree | 6f44f2e3c9b5763d3e0ec4b7a51eff5c38d89632 | |
parent | f4359cedfb43b934f38c50d1604db21333abe57b (diff) |
drm/i915: Re-register PMIC bus access notifier on runtime resume
intel_uncore_suspend() unregisters the uncore code's PMIC bus access
notifier and gets called on both normal and runtime suspend.
intel_uncore_resume_early() re-registers the notifier, but only on
normal resume. Add a new intel_uncore_runtime_resume() function which
only re-registers the notifier and call that on runtime resume.
Cc: stable@vger.kernel.org
Reported-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171114135518.15981-2-hdegoede@redhat.com
(cherry picked from commit bedf4d79c3654921839b62246b0965ddb308b201)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_uncore.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_uncore.h | 1 |
3 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 3db5851756f0..34191028bbad 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c | |||
@@ -2618,6 +2618,8 @@ static int intel_runtime_resume(struct device *kdev) | |||
2618 | ret = vlv_resume_prepare(dev_priv, true); | 2618 | ret = vlv_resume_prepare(dev_priv, true); |
2619 | } | 2619 | } |
2620 | 2620 | ||
2621 | intel_uncore_runtime_resume(dev_priv); | ||
2622 | |||
2621 | /* | 2623 | /* |
2622 | * No point of rolling back things in case of an error, as the best | 2624 | * No point of rolling back things in case of an error, as the best |
2623 | * we can do is to hope that things will still work (and disable RPM). | 2625 | * we can do is to hope that things will still work (and disable RPM). |
diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c index cb48c8b92aa3..8c2ce81f01c2 100644 --- a/drivers/gpu/drm/i915/intel_uncore.c +++ b/drivers/gpu/drm/i915/intel_uncore.c | |||
@@ -434,6 +434,12 @@ void intel_uncore_resume_early(struct drm_i915_private *dev_priv) | |||
434 | i915_check_and_clear_faults(dev_priv); | 434 | i915_check_and_clear_faults(dev_priv); |
435 | } | 435 | } |
436 | 436 | ||
437 | void intel_uncore_runtime_resume(struct drm_i915_private *dev_priv) | ||
438 | { | ||
439 | iosf_mbi_register_pmic_bus_access_notifier( | ||
440 | &dev_priv->uncore.pmic_bus_access_nb); | ||
441 | } | ||
442 | |||
437 | void intel_uncore_sanitize(struct drm_i915_private *dev_priv) | 443 | void intel_uncore_sanitize(struct drm_i915_private *dev_priv) |
438 | { | 444 | { |
439 | i915_modparams.enable_rc6 = | 445 | i915_modparams.enable_rc6 = |
diff --git a/drivers/gpu/drm/i915/intel_uncore.h b/drivers/gpu/drm/i915/intel_uncore.h index 582771251b57..9ce079b5dd0d 100644 --- a/drivers/gpu/drm/i915/intel_uncore.h +++ b/drivers/gpu/drm/i915/intel_uncore.h | |||
@@ -134,6 +134,7 @@ bool intel_uncore_arm_unclaimed_mmio_detection(struct drm_i915_private *dev_priv | |||
134 | void intel_uncore_fini(struct drm_i915_private *dev_priv); | 134 | void intel_uncore_fini(struct drm_i915_private *dev_priv); |
135 | void intel_uncore_suspend(struct drm_i915_private *dev_priv); | 135 | void intel_uncore_suspend(struct drm_i915_private *dev_priv); |
136 | void intel_uncore_resume_early(struct drm_i915_private *dev_priv); | 136 | void intel_uncore_resume_early(struct drm_i915_private *dev_priv); |
137 | void intel_uncore_runtime_resume(struct drm_i915_private *dev_priv); | ||
137 | 138 | ||
138 | u64 intel_uncore_edram_size(struct drm_i915_private *dev_priv); | 139 | u64 intel_uncore_edram_size(struct drm_i915_private *dev_priv); |
139 | void assert_forcewakes_inactive(struct drm_i915_private *dev_priv); | 140 | void assert_forcewakes_inactive(struct drm_i915_private *dev_priv); |