On Thu, 01 Oct 2020, Ville Syrjala <ville.syrjala@xxxxxxxxxxxxxxx> wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Add a new encoder hook .shutdown() which will get called at the end > of the pci .shutdown() hook. We shall use this to deal with the > panel power cycle delay issues. > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Reviewed-by: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_display_types.h | 5 +++++ > drivers/gpu/drm/i915/i915_drv.c | 13 +++++++++++++ > 2 files changed, 18 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h > index d5dc18cb8c39..6f3e3d756383 100644 > --- a/drivers/gpu/drm/i915/display/intel_display_types.h > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h > @@ -199,6 +199,11 @@ struct intel_encoder { > * device interrupts are disabled. > */ > void (*suspend)(struct intel_encoder *); > + /* > + * Called during system reboot/shutdown after all the > + * encoders have been disabled and suspended. > + */ > + void (*shutdown)(struct intel_encoder *encoder); > enum hpd_pin hpd_pin; > enum intel_display_power_domain power_domain; > /* for communication with audio component; protected by av_mutex */ > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c > index 062b61ebd9c4..d38fceb239ac 100644 > --- a/drivers/gpu/drm/i915/i915_drv.c > +++ b/drivers/gpu/drm/i915/i915_drv.c > @@ -1036,6 +1036,18 @@ static void intel_suspend_encoders(struct drm_i915_private *dev_priv) > drm_modeset_unlock_all(dev); > } > > +static void intel_shutdown_encoders(struct drm_i915_private *dev_priv) > +{ > + struct drm_device *dev = &dev_priv->drm; > + struct intel_encoder *encoder; > + > + drm_modeset_lock_all(dev); > + for_each_intel_encoder(dev, encoder) > + if (encoder->shutdown) > + encoder->shutdown(encoder); > + drm_modeset_unlock_all(dev); > +} > + > void i915_driver_shutdown(struct drm_i915_private *i915) > { > i915_gem_suspend(i915); > @@ -1050,6 +1062,7 @@ void i915_driver_shutdown(struct drm_i915_private *i915) > intel_hpd_cancel_work(i915); > > intel_suspend_encoders(i915); > + intel_shutdown_encoders(i915); > } > > static bool suspend_to_idle(struct drm_i915_private *dev_priv) -- Jani Nikula, Intel Open Source Graphics Center _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx