#include "intel_wakeref.h"
-enum i915_drm_suspend_mode {
- I915_DRM_SUSPEND_IDLE,
- I915_DRM_SUSPEND_MEM,
- I915_DRM_SUSPEND_HIBERNATE,
-};
-
#define intel_runtime_pm xe_runtime_pm
static inline void disable_rpm_wakeref_asserts(void *rpm)
void xe_display_pm_suspend(struct xe_device *xe)
{
+ bool s2idle = acpi_target_system_state() < ACPI_STATE_S3;
if (!xe->info.enable_display)
return;
intel_suspend_encoders(xe);
- intel_opregion_suspend(xe, PCI_D3cold);
+ intel_opregion_suspend(xe, s2idle ? PCI_D1 : PCI_D3cold);
intel_fbdev_set_suspend(&xe->drm, FBINFO_STATE_SUSPENDED, true);
void xe_display_pm_suspend_late(struct xe_device *xe)
{
+ bool s2idle = acpi_target_system_state() < ACPI_STATE_S3;
if (!xe->info.enable_display)
return;
- intel_power_domains_suspend(xe, I915_DRM_SUSPEND_MEM);
+ intel_power_domains_suspend(xe, s2idle);
intel_display_power_suspend_late(xe);
}
pci_save_state(pdev);
pci_disable_device(pdev);
- err = pci_set_power_state(pdev, PCI_D3hot);
- if (err)
- return err;
-
return 0;
}
if (err)
return err;
- pci_restore_state(pdev);
-
err = pci_enable_device(pdev);
if (err)
return err;