Keep the xe_display_pm_runtime_*() functions together, in
suspend/suspend_late/resume order. Also relocate the dependent d3cold
functions near usage in the runtime pm functions.

Reviewed-by: Michał Grzelak <[email protected]>
Signed-off-by: Jani Nikula <[email protected]>
---
 drivers/gpu/drm/xe/display/xe_display.c | 160 ++++++++++++------------
 1 file changed, 80 insertions(+), 80 deletions(-)

diff --git a/drivers/gpu/drm/xe/display/xe_display.c 
b/drivers/gpu/drm/xe/display/xe_display.c
index aab3ac1b70e1..38ebcc2b712a 100644
--- a/drivers/gpu/drm/xe/display/xe_display.c
+++ b/drivers/gpu/drm/xe/display/xe_display.c
@@ -289,53 +289,6 @@ static bool suspend_to_idle(void)
        return false;
 }
 
-static void xe_display_enable_d3cold(struct xe_device *xe)
-{
-       struct intel_display *display = xe->display;
-
-       if (!xe->info.probe_display)
-               return;
-
-       /*
-        * We do a lot of poking in a lot of registers, make sure they work
-        * properly.
-        */
-       intel_display_power_disable(display);
-
-       intel_display_flush_cleanup_work(display);
-
-       intel_opregion_suspend(display, PCI_D3cold);
-
-       intel_dmc_suspend(display);
-
-       if (intel_display_device_present(display))
-               intel_hpd_poll_enable(display);
-}
-
-static void xe_display_disable_d3cold(struct xe_device *xe)
-{
-       struct intel_display *display = xe->display;
-
-       if (!xe->info.probe_display)
-               return;
-
-       intel_dmc_resume(display);
-
-       if (intel_display_device_present(display))
-               drm_mode_config_reset(&xe->drm);
-
-       intel_display_driver_init_hw(display);
-
-       intel_hpd_init(display);
-
-       if (intel_display_device_present(display))
-               intel_hpd_poll_disable(display);
-
-       intel_opregion_resume(display);
-
-       intel_display_power_enable(display);
-}
-
 void xe_display_pm_suspend(struct xe_device *xe)
 {
        struct intel_display *display = xe->display;
@@ -371,21 +324,6 @@ void xe_display_pm_suspend(struct xe_device *xe)
        intel_dmc_suspend(display);
 }
 
-void xe_display_pm_runtime_suspend(struct xe_device *xe)
-{
-       struct intel_display *display = xe->display;
-
-       if (!xe->info.probe_display)
-               return;
-
-       if (xe->d3cold.allowed) {
-               xe_display_enable_d3cold(xe);
-               return;
-       }
-
-       intel_hpd_poll_enable(display);
-}
-
 void xe_display_pm_suspend_late(struct xe_device *xe)
 {
        struct intel_display *display = xe->display;
@@ -397,24 +335,6 @@ void xe_display_pm_suspend_late(struct xe_device *xe)
        intel_display_power_suspend_late(display, s2idle);
 }
 
-void xe_display_pm_runtime_suspend_late(struct xe_device *xe)
-{
-       struct intel_display *display = xe->display;
-
-       if (!xe->info.probe_display)
-               return;
-
-       if (xe->d3cold.allowed)
-               xe_display_pm_suspend_late(xe);
-
-       /*
-        * If xe_display_pm_suspend_late() is not called, it is likely
-        * that we will be on dynamic DC states with DMC wakelock enabled. We
-        * need to flush the release work in that case.
-        */
-       intel_dmc_wl_flush_release_work(display);
-}
-
 void xe_display_pm_resume_early(struct xe_device *xe)
 {
        struct intel_display *display = xe->display;
@@ -462,6 +382,86 @@ void xe_display_pm_resume(struct xe_device *xe)
        intel_display_power_enable(display);
 }
 
+static void xe_display_enable_d3cold(struct xe_device *xe)
+{
+       struct intel_display *display = xe->display;
+
+       if (!xe->info.probe_display)
+               return;
+
+       /*
+        * We do a lot of poking in a lot of registers, make sure they work
+        * properly.
+        */
+       intel_display_power_disable(display);
+
+       intel_display_flush_cleanup_work(display);
+
+       intel_opregion_suspend(display, PCI_D3cold);
+
+       intel_dmc_suspend(display);
+
+       if (intel_display_device_present(display))
+               intel_hpd_poll_enable(display);
+}
+
+static void xe_display_disable_d3cold(struct xe_device *xe)
+{
+       struct intel_display *display = xe->display;
+
+       if (!xe->info.probe_display)
+               return;
+
+       intel_dmc_resume(display);
+
+       if (intel_display_device_present(display))
+               drm_mode_config_reset(&xe->drm);
+
+       intel_display_driver_init_hw(display);
+
+       intel_hpd_init(display);
+
+       if (intel_display_device_present(display))
+               intel_hpd_poll_disable(display);
+
+       intel_opregion_resume(display);
+
+       intel_display_power_enable(display);
+}
+
+void xe_display_pm_runtime_suspend(struct xe_device *xe)
+{
+       struct intel_display *display = xe->display;
+
+       if (!xe->info.probe_display)
+               return;
+
+       if (xe->d3cold.allowed) {
+               xe_display_enable_d3cold(xe);
+               return;
+       }
+
+       intel_hpd_poll_enable(display);
+}
+
+void xe_display_pm_runtime_suspend_late(struct xe_device *xe)
+{
+       struct intel_display *display = xe->display;
+
+       if (!xe->info.probe_display)
+               return;
+
+       if (xe->d3cold.allowed)
+               xe_display_pm_suspend_late(xe);
+
+       /*
+        * If xe_display_pm_suspend_late() is not called, it is likely
+        * that we will be on dynamic DC states with DMC wakelock enabled. We
+        * need to flush the release work in that case.
+        */
+       intel_dmc_wl_flush_release_work(display);
+}
+
 void xe_display_pm_runtime_resume(struct xe_device *xe)
 {
        struct intel_display *display = xe->display;
-- 
2.47.3

Reply via email to