]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/{i915, xe}: Move power_domains suspend/resume to display_power
authorRodrigo Vivi <rodrigo.vivi@intel.com>
Wed, 13 Nov 2024 22:50:16 +0000 (17:50 -0500)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Thu, 14 Nov 2024 15:57:51 +0000 (10:57 -0500)
Move intel_power_domains_{suspend,resume} to inside
intel_display_power_{suspend_late, resume_early}.

With this also change the VLV suspend failure to call
the intel_display_power_resume_early. In the end, the only
function executed there for VLV is the intel_power_domains_resume.
Besides make the code more consistency give the call that was
immediately before: intel_display_power_suspend_late.

Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241113225016.208673-7-rodrigo.vivi@intel.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/i915/display/intel_display_power.c
drivers/gpu/drm/i915/display/intel_display_power.h
drivers/gpu/drm/i915/i915_driver.c
drivers/gpu/drm/xe/display/xe_display.c

index 2766fd9208b0642c91e3d6c16c1f8466c8f263b3..59dee2dc05528e2882dd8696a71d28936e69227e 100644 (file)
@@ -2232,10 +2232,12 @@ static void intel_power_domains_verify_state(struct drm_i915_private *i915)
 
 #endif
 
-void intel_display_power_suspend_late(struct drm_i915_private *i915)
+void intel_display_power_suspend_late(struct drm_i915_private *i915, bool s2idle)
 {
        struct intel_display *display = &i915->display;
 
+       intel_power_domains_suspend(i915, s2idle);
+
        if (DISPLAY_VER(i915) >= 11 || IS_GEMINILAKE(i915) ||
            IS_BROXTON(i915)) {
                bxt_enable_dc9(display);
@@ -2263,6 +2265,8 @@ void intel_display_power_resume_early(struct drm_i915_private *i915)
        /* Tweaked Wa_14010685332:cnp,icp,jsp,mcc,tgp,adp */
        if (INTEL_PCH_TYPE(i915) >= PCH_CNP && INTEL_PCH_TYPE(i915) < PCH_DG1)
                intel_de_rmw(i915, SOUTH_CHICKEN1, SBCLK_RUN_REFCLK_DIS, 0);
+
+       intel_power_domains_resume(i915);
 }
 
 void intel_display_power_suspend(struct drm_i915_private *i915)
index 3f8f84df47334b3dd1e4a5fcaf9841946497e9dc..688f3b60b5c5e600630c39ae24812fd57b708468 100644 (file)
@@ -176,7 +176,7 @@ void intel_power_domains_suspend(struct drm_i915_private *dev_priv, bool s2idle)
 void intel_power_domains_resume(struct drm_i915_private *dev_priv);
 void intel_power_domains_sanitize_state(struct drm_i915_private *dev_priv);
 
-void intel_display_power_suspend_late(struct drm_i915_private *i915);
+void intel_display_power_suspend_late(struct drm_i915_private *i915, bool s2idle);
 void intel_display_power_resume_early(struct drm_i915_private *i915);
 void intel_display_power_suspend(struct drm_i915_private *i915);
 void intel_display_power_resume(struct drm_i915_private *i915);
index c9ed69d7fce815e6ceb07ae72e69dfda4c61b4af..b500ccf50410d18618f44b8959dba4df85e167c6 100644 (file)
@@ -1086,14 +1086,12 @@ static int i915_drm_suspend_late(struct drm_device *dev, bool hibernation)
        for_each_gt(gt, dev_priv, i)
                intel_uncore_suspend(gt->uncore);
 
-       intel_power_domains_suspend(dev_priv, s2idle);
-
-       intel_display_power_suspend_late(dev_priv);
+       intel_display_power_suspend_late(dev_priv, s2idle);
 
        ret = vlv_suspend_complete(dev_priv);
        if (ret) {
                drm_err(&dev_priv->drm, "Suspend complete failed: %d\n", ret);
-               intel_power_domains_resume(dev_priv);
+               intel_display_power_resume_early(dev_priv);
 
                goto out;
        }
@@ -1292,8 +1290,6 @@ static int i915_drm_resume_early(struct drm_device *dev)
 
        intel_display_power_resume_early(dev_priv);
 
-       intel_power_domains_resume(dev_priv);
-
        enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
 
        return ret;
index e60eb7c49e5a585569e5643b1326a02b60e931bd..760847959bc1037b7151400b4be24e0805c47edd 100644 (file)
@@ -395,12 +395,11 @@ void xe_display_pm_runtime_suspend(struct xe_device *xe)
 void xe_display_pm_suspend_late(struct xe_device *xe)
 {
        bool s2idle = suspend_to_idle();
+
        if (!xe->info.probe_display)
                return;
 
-       intel_power_domains_suspend(xe, s2idle);
-
-       intel_display_power_suspend_late(xe);
+       intel_display_power_suspend_late(xe, s2idle);
 }
 
 void xe_display_pm_shutdown_late(struct xe_device *xe)
@@ -422,8 +421,6 @@ void xe_display_pm_resume_early(struct xe_device *xe)
                return;
 
        intel_display_power_resume_early(xe);
-
-       intel_power_domains_resume(xe);
 }
 
 static void __xe_display_pm_resume(struct xe_device *xe, bool runtime)