On Fri, May 29, 2026 at 02:04:00PM +0300, Jani Nikula wrote: > intel_display_driver_shutdown() and intel_display_driver_pm_suspend() > are quite similar. Abstract a shared function to call from both. > > This is intentionally just the first non-functional step. More gradual > changes will follow. > > Signed-off-by: Jani Nikula <[email protected]>
Reviewed-by: Ville Syrjälä <[email protected]> > --- > .../drm/i915/display/intel_display_driver.c | 45 ++++++++++--------- > 1 file changed, 23 insertions(+), 22 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c > b/drivers/gpu/drm/i915/display/intel_display_driver.c > index 90b2a62798c1..0dd0b15641eb 100644 > --- a/drivers/gpu/drm/i915/display/intel_display_driver.c > +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c > @@ -66,6 +66,8 @@ > #include "intel_wm.h" > #include "skl_watermark.h" > > +static int __intel_display_driver_pm_suspend(struct intel_display *display, > bool shutdown); > + > bool intel_display_driver_probe_defer(struct pci_dev *pdev) > { > struct drm_privacy_screen *privacy_screen; > @@ -686,18 +688,7 @@ void intel_display_driver_shutdown(struct intel_display > *display) > if (!HAS_DISPLAY(display)) > return; > > - intel_display_power_disable(display); > - > - drm_client_dev_suspend(display->drm); > - drm_kms_helper_poll_disable(display->drm); > - > - intel_display_driver_disable_user_access(display); > - > - drm_atomic_helper_shutdown(display->drm); > - > - flush_workqueue(display->wq.cleanup); > - > - intel_dp_mst_suspend(display); > + __intel_display_driver_pm_suspend(display, true); > > intel_encoder_block_all_hpds(display); > > @@ -726,10 +717,9 @@ void intel_display_driver_shutdown_late(struct > intel_display *display) > * turn all crtc's off, but do not adjust state > * This has to be paired with a call to intel_modeset_setup_hw_state. > */ > -int intel_display_driver_pm_suspend(struct intel_display *display) > +static int __intel_display_driver_pm_suspend(struct intel_display *display, > bool shutdown) > { > - struct drm_atomic_commit *state; > - int ret; > + int ret = 0; > > if (!HAS_DISPLAY(display)) > return 0; > @@ -745,13 +735,19 @@ int intel_display_driver_pm_suspend(struct > intel_display *display) > drm_kms_helper_poll_disable(display->drm); > intel_display_driver_disable_user_access(display); > > - state = drm_atomic_helper_suspend(display->drm); > - ret = PTR_ERR_OR_ZERO(state); > - if (ret) > - drm_err(display->drm, "Suspending crtc's failed with %i\n", > - ret); > - else > - display->restore.modeset_state = state; > + if (shutdown) { > + drm_atomic_helper_shutdown(display->drm); > + } else { > + struct drm_atomic_commit *state; > + > + state = drm_atomic_helper_suspend(display->drm); > + ret = PTR_ERR_OR_ZERO(state); > + if (ret) > + drm_err(display->drm, "Suspending crtc's failed with > %i\n", > + ret); > + else > + display->restore.modeset_state = state; > + } > > /* ensure all DPT VMAs have been unpinned for intel_dpt_suspend() */ > flush_workqueue(display->wq.cleanup); > @@ -761,6 +757,11 @@ int intel_display_driver_pm_suspend(struct intel_display > *display) > return ret; > } > > +int intel_display_driver_pm_suspend(struct intel_display *display) > +{ > + return __intel_display_driver_pm_suspend(display, false); > +} > + > void intel_display_driver_pm_suspend_late(struct intel_display *display, > bool s2idle) > { > if (!HAS_DISPLAY(display)) > -- > 2.47.3 -- Ville Syrjälä Intel
