mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-29 05:46:18 -04:00
drm/xe/display: add xe_display_pm_runtime_resume_early()
Add new display runtime PM hook xe_display_pm_runtime_resume_early(), to be called before IRQ resume. This is initially a no-op placeholder. Add comments on the timing relative to irq suspend/resume to all the runtime PM hooks. v2: Add stub for CONFIG_DRM_XE_DISPLAY=n Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patch.msgid.link/20260702071457.2985893-1-jani.nikula@intel.com Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
@@ -349,6 +349,7 @@ static void xe_display_disable_d3cold(struct xe_device *xe)
|
||||
intel_display_driver_runtime_pm_enable(display);
|
||||
}
|
||||
|
||||
/* before irq suspend */
|
||||
void xe_display_pm_runtime_suspend(struct xe_device *xe)
|
||||
{
|
||||
struct intel_display *display = xe->display;
|
||||
@@ -364,6 +365,7 @@ void xe_display_pm_runtime_suspend(struct xe_device *xe)
|
||||
intel_hpd_poll_enable(display);
|
||||
}
|
||||
|
||||
/* after irq suspend */
|
||||
void xe_display_pm_runtime_suspend_late(struct xe_device *xe)
|
||||
{
|
||||
struct intel_display *display = xe->display;
|
||||
@@ -382,6 +384,17 @@ void xe_display_pm_runtime_suspend_late(struct xe_device *xe)
|
||||
intel_dmc_wl_flush_release_work(display);
|
||||
}
|
||||
|
||||
/* before irq resume */
|
||||
void xe_display_pm_runtime_resume_early(struct xe_device *xe)
|
||||
{
|
||||
if (!xe->info.probe_display)
|
||||
return;
|
||||
|
||||
if (xe->d3cold.allowed)
|
||||
return;
|
||||
}
|
||||
|
||||
/* after irq resume */
|
||||
void xe_display_pm_runtime_resume(struct xe_device *xe)
|
||||
{
|
||||
struct intel_display *display = xe->display;
|
||||
|
||||
@@ -43,6 +43,7 @@ void xe_display_pm_resume_early(struct xe_device *xe);
|
||||
void xe_display_pm_resume(struct xe_device *xe);
|
||||
void xe_display_pm_runtime_suspend(struct xe_device *xe);
|
||||
void xe_display_pm_runtime_suspend_late(struct xe_device *xe);
|
||||
void xe_display_pm_runtime_resume_early(struct xe_device *xe);
|
||||
void xe_display_pm_runtime_resume(struct xe_device *xe);
|
||||
|
||||
#define XE_DISPLAY_DRIVER_FEATURES (DRIVER_MODESET | DRIVER_ATOMIC)
|
||||
@@ -80,6 +81,7 @@ static inline void xe_display_pm_resume_early(struct xe_device *xe) {}
|
||||
static inline void xe_display_pm_resume(struct xe_device *xe) {}
|
||||
static inline void xe_display_pm_runtime_suspend(struct xe_device *xe) {}
|
||||
static inline void xe_display_pm_runtime_suspend_late(struct xe_device *xe) {}
|
||||
static inline void xe_display_pm_runtime_resume_early(struct xe_device *xe) {}
|
||||
static inline void xe_display_pm_runtime_resume(struct xe_device *xe) {}
|
||||
|
||||
#endif /* CONFIG_DRM_XE_DISPLAY */
|
||||
|
||||
@@ -700,6 +700,8 @@ int xe_pm_runtime_resume(struct xe_device *xe)
|
||||
if (xe->d3cold.allowed)
|
||||
xe_sysctrl_pm_resume(xe);
|
||||
|
||||
xe_display_pm_runtime_resume_early(xe);
|
||||
|
||||
xe_irq_resume(xe);
|
||||
|
||||
for_each_gt(gt, xe, id) {
|
||||
|
||||
Reference in New Issue
Block a user