mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 08:15:07 -04:00
drm/i915: Keep display IRQs enabled for encoder suspend/shutdown
A pending hotplug work or the encoder suspend/shutdown hooks may still require display IRQs at least for AUX accesses, so keep all display IRQs except for hotplug IRQs enabled until after intel_hpd_cancel_work() and the encoder suspend/shutdown hooks are called during system suspend and shutdown. Signed-off-by: Imre Deak <imre.deak@intel.com> Link: https://patch.msgid.link/0b4b4d489f91be9334554e5438d3f2aa79421d42.1780310011.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
@@ -1055,7 +1055,8 @@ void i915_driver_shutdown(struct drm_i915_private *i915)
|
||||
|
||||
intel_dp_mst_suspend(display);
|
||||
|
||||
intel_irq_suspend(i915);
|
||||
intel_encoder_block_all_hpds(display);
|
||||
|
||||
intel_hpd_cancel_work(display);
|
||||
|
||||
if (intel_display_device_present(display))
|
||||
@@ -1064,6 +1065,8 @@ void i915_driver_shutdown(struct drm_i915_private *i915)
|
||||
intel_encoder_suspend_all(display);
|
||||
intel_encoder_shutdown_all(display);
|
||||
|
||||
intel_irq_suspend(i915);
|
||||
|
||||
intel_dmc_suspend(display);
|
||||
|
||||
i915_gem_suspend(i915);
|
||||
@@ -1135,7 +1138,8 @@ static int i915_drm_suspend(struct drm_device *dev)
|
||||
|
||||
intel_display_driver_suspend(display);
|
||||
|
||||
intel_irq_suspend(dev_priv);
|
||||
intel_encoder_block_all_hpds(display);
|
||||
|
||||
intel_hpd_cancel_work(display);
|
||||
|
||||
if (intel_display_device_present(display))
|
||||
@@ -1143,6 +1147,8 @@ static int i915_drm_suspend(struct drm_device *dev)
|
||||
|
||||
intel_encoder_suspend_all(display);
|
||||
|
||||
intel_irq_suspend(dev_priv);
|
||||
|
||||
/* Must be called before GGTT is suspended. */
|
||||
intel_dpt_suspend(display);
|
||||
i915_ggtt_suspend(to_gt(dev_priv)->ggtt);
|
||||
@@ -1314,6 +1320,8 @@ static int i915_drm_resume(struct drm_device *dev)
|
||||
|
||||
intel_hpd_init(display);
|
||||
|
||||
intel_encoder_unblock_all_hpds(display);
|
||||
|
||||
intel_display_driver_resume(display);
|
||||
|
||||
if (intel_display_device_present(display)) {
|
||||
|
||||
Reference in New Issue
Block a user