diff mbox series

[13/31] drm/{i915,xe}: Consolidate display suspend functions

Message ID 20240924204222.246862-14-rodrigo.vivi@intel.com (mailing list archive)
State New, archived
Headers show
Series Reconcile i915's and xe's display power mgt sequences | expand

Commit Message

Rodrigo Vivi Sept. 24, 2024, 8:35 p.m. UTC
Same sequences are currently executed by i915 and xe during
system suspend. Consolidate them in the intel_display_driver
side.

Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 .../gpu/drm/i915/display/intel_display_driver.c   |  9 +++++++++
 drivers/gpu/drm/i915/i915_driver.c                | 12 ------------
 drivers/gpu/drm/xe/display/xe_display.c           | 15 ++-------------
 3 files changed, 11 insertions(+), 25 deletions(-)

Comments

Cavitt, Jonathan Oct. 7, 2024, 9:14 p.m. UTC | #1
-----Original Message-----
From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Rodrigo Vivi
Sent: Tuesday, September 24, 2024 1:36 PM
To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
Cc: Deak, Imre <imre.deak@intel.com>; Vivi, Rodrigo <rodrigo.vivi@intel.com>
Subject: [PATCH 13/31] drm/{i915,xe}: Consolidate display suspend functions
> 
> Same sequences are currently executed by i915 and xe during
> system suspend. Consolidate them in the intel_display_driver
> side.
> 
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>

This is the third patch that could or perhaps should be split into
two patches (I forgot to note it in patch 11) by i915 and xe.

I won't block on it, though.
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
-Jonathan Cavitt

> ---
>  .../gpu/drm/i915/display/intel_display_driver.c   |  9 +++++++++
>  drivers/gpu/drm/i915/i915_driver.c                | 12 ------------
>  drivers/gpu/drm/xe/display/xe_display.c           | 15 ++-------------
>  3 files changed, 11 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
> index 86d6ebf0c82f..f509ed1503c1 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_driver.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
> @@ -670,6 +670,15 @@ int intel_display_driver_suspend(struct drm_i915_private *i915)
>  	if (!HAS_DISPLAY(i915))
>  		return 0;
>  
> +	/* We do a lot of poking in a lot of registers, make sure they work properly. */
> +	intel_power_domains_disable(i915);
> +
> +	intel_fbdev_set_suspend(&i915->drm, FBINFO_STATE_SUSPENDED, true);
> +
> +	drm_kms_helper_poll_disable(&i915->drm);
> +
> +	intel_display_driver_disable_user_access(i915);
> +
>  	state = drm_atomic_helper_suspend(&i915->drm);
>  	ret = PTR_ERR_OR_ZERO(state);
>  	if (ret)
> diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
> index 4fc9d8bce1fd..12639fa232b3 100644
> --- a/drivers/gpu/drm/i915/i915_driver.c
> +++ b/drivers/gpu/drm/i915/i915_driver.c
> @@ -43,7 +43,6 @@
>  #include <drm/drm_atomic_helper.h>
>  #include <drm/drm_ioctl.h>
>  #include <drm/drm_managed.h>
> -#include <drm/drm_probe_helper.h>
>  
>  #include "display/i9xx_display_sr.h"
>  #include "display/intel_acpi.h"
> @@ -55,7 +54,6 @@
>  #include "display/intel_dp.h"
>  #include "display/intel_dpt.h"
>  #include "display/intel_encoder.h"
> -#include "display/intel_fbdev.h"
>  #include "display/intel_hotplug.h"
>  #include "display/intel_overlay.h"
>  #include "display/intel_pch_refclk.h"
> @@ -995,19 +993,9 @@ static int i915_drm_suspend(struct drm_device *dev)
>  {
>  	struct drm_i915_private *dev_priv = to_i915(dev);
>  	struct intel_display *display = &dev_priv->display;
> -	struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
>  
>  	disable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
>  
> -	/* We do a lot of poking in a lot of registers, make sure they work
> -	 * properly. */
> -	intel_power_domains_disable(dev_priv);
> -	intel_fbdev_set_suspend(dev, FBINFO_STATE_SUSPENDED, true);
> -	if (HAS_DISPLAY(dev_priv)) {
> -		drm_kms_helper_poll_disable(dev);
> -		intel_display_driver_disable_user_access(dev_priv);
> -	}
> -
>  	intel_display_driver_suspend(dev_priv);
>  
>  	intel_irq_suspend(dev_priv);
> diff --git a/drivers/gpu/drm/xe/display/xe_display.c b/drivers/gpu/drm/xe/display/xe_display.c
> index 98ff603a1f84..45949b095d7e 100644
> --- a/drivers/gpu/drm/xe/display/xe_display.c
> +++ b/drivers/gpu/drm/xe/display/xe_display.c
> @@ -346,22 +346,11 @@ void xe_display_pm_suspend(struct xe_device *xe)
>  {
>  	struct intel_display *display = &xe->display;
>  	bool s2idle = suspend_to_idle();
> +
>  	if (!xe->info.probe_display)
>  		return;
>  
> -	/*
> -	 * We do a lot of poking in a lot of registers, make sure they work
> -	 * properly.
> -	 */
> -	intel_power_domains_disable(xe);
> -
> -	intel_fbdev_set_suspend(&xe->drm, FBINFO_STATE_SUSPENDED, true);
> -
> -	if (has_display(xe)) {
> -		drm_kms_helper_poll_disable(&xe->drm);
> -		intel_display_driver_disable_user_access(xe);
> -		intel_display_driver_suspend(xe);
> -	}
> +	intel_display_driver_suspend(xe);
>  
>  	xe_display_flush_cleanup_work(xe);
>  
> -- 
> 2.46.0
> 
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
index 86d6ebf0c82f..f509ed1503c1 100644
--- a/drivers/gpu/drm/i915/display/intel_display_driver.c
+++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
@@ -670,6 +670,15 @@  int intel_display_driver_suspend(struct drm_i915_private *i915)
 	if (!HAS_DISPLAY(i915))
 		return 0;
 
+	/* We do a lot of poking in a lot of registers, make sure they work properly. */
+	intel_power_domains_disable(i915);
+
+	intel_fbdev_set_suspend(&i915->drm, FBINFO_STATE_SUSPENDED, true);
+
+	drm_kms_helper_poll_disable(&i915->drm);
+
+	intel_display_driver_disable_user_access(i915);
+
 	state = drm_atomic_helper_suspend(&i915->drm);
 	ret = PTR_ERR_OR_ZERO(state);
 	if (ret)
diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
index 4fc9d8bce1fd..12639fa232b3 100644
--- a/drivers/gpu/drm/i915/i915_driver.c
+++ b/drivers/gpu/drm/i915/i915_driver.c
@@ -43,7 +43,6 @@ 
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_ioctl.h>
 #include <drm/drm_managed.h>
-#include <drm/drm_probe_helper.h>
 
 #include "display/i9xx_display_sr.h"
 #include "display/intel_acpi.h"
@@ -55,7 +54,6 @@ 
 #include "display/intel_dp.h"
 #include "display/intel_dpt.h"
 #include "display/intel_encoder.h"
-#include "display/intel_fbdev.h"
 #include "display/intel_hotplug.h"
 #include "display/intel_overlay.h"
 #include "display/intel_pch_refclk.h"
@@ -995,19 +993,9 @@  static int i915_drm_suspend(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = to_i915(dev);
 	struct intel_display *display = &dev_priv->display;
-	struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
 
 	disable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
 
-	/* We do a lot of poking in a lot of registers, make sure they work
-	 * properly. */
-	intel_power_domains_disable(dev_priv);
-	intel_fbdev_set_suspend(dev, FBINFO_STATE_SUSPENDED, true);
-	if (HAS_DISPLAY(dev_priv)) {
-		drm_kms_helper_poll_disable(dev);
-		intel_display_driver_disable_user_access(dev_priv);
-	}
-
 	intel_display_driver_suspend(dev_priv);
 
 	intel_irq_suspend(dev_priv);
diff --git a/drivers/gpu/drm/xe/display/xe_display.c b/drivers/gpu/drm/xe/display/xe_display.c
index 98ff603a1f84..45949b095d7e 100644
--- a/drivers/gpu/drm/xe/display/xe_display.c
+++ b/drivers/gpu/drm/xe/display/xe_display.c
@@ -346,22 +346,11 @@  void xe_display_pm_suspend(struct xe_device *xe)
 {
 	struct intel_display *display = &xe->display;
 	bool s2idle = suspend_to_idle();
+
 	if (!xe->info.probe_display)
 		return;
 
-	/*
-	 * We do a lot of poking in a lot of registers, make sure they work
-	 * properly.
-	 */
-	intel_power_domains_disable(xe);
-
-	intel_fbdev_set_suspend(&xe->drm, FBINFO_STATE_SUSPENDED, true);
-
-	if (has_display(xe)) {
-		drm_kms_helper_poll_disable(&xe->drm);
-		intel_display_driver_disable_user_access(xe);
-		intel_display_driver_suspend(xe);
-	}
+	intel_display_driver_suspend(xe);
 
 	xe_display_flush_cleanup_work(xe);