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

Cavitt, Jonathan jonathan.cavitt at intel.com
Mon Oct 7 21:14:37 UTC 2024


-----Original Message-----
From: Intel-gfx <intel-gfx-bounces at lists.freedesktop.org> On Behalf Of Rodrigo Vivi
Sent: Tuesday, September 24, 2024 1:36 PM
To: intel-gfx at lists.freedesktop.org; intel-xe at lists.freedesktop.org
Cc: Deak, Imre <imre.deak at intel.com>; Vivi, Rodrigo <rodrigo.vivi at 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 at 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 at 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
> 
> 


More information about the Intel-gfx mailing list