Hi, On Mon, Dec 10, 2018 at 10:01:19AM +0200, Laurent Pinchart wrote: > Instead of rolling out custom suspend/resume implementations based on > state information stored in the driver's data structures, use the atomic > suspend/resume helpers that rely on a DRM atomic state object. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > --- Reviewed-by: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxx> -- Sebastian > Changes since v1: > > - Use drm_mode_config_helper_suspend() > --- > drivers/gpu/drm/omapdrm/dss/omapdss.h | 3 -- > drivers/gpu/drm/omapdrm/omap_drv.c | 50 ++------------------------- > 2 files changed, 2 insertions(+), 51 deletions(-) > > diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h > index d3b576e6edf5..149a0f09adbc 100644 > --- a/drivers/gpu/drm/omapdrm/dss/omapdss.h > +++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h > @@ -432,9 +432,6 @@ struct omap_dss_device { > unsigned long ops_flags; > unsigned long bus_flags; > > - /* helper variable for driver suspend/resume */ > - bool activate_after_resume; > - > enum omap_display_caps caps; > > enum omap_dss_display_state state; > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c > index 5e67d58cbc28..8a4dd737d88c 100644 > --- a/drivers/gpu/drm/omapdrm/omap_drv.c > +++ b/drivers/gpu/drm/omapdrm/omap_drv.c > @@ -685,54 +685,12 @@ static int pdev_remove(struct platform_device *pdev) > } > > #ifdef CONFIG_PM_SLEEP > -static int omap_drm_suspend_all_displays(struct drm_device *ddev) > -{ > - struct omap_drm_private *priv = ddev->dev_private; > - int i; > - > - for (i = 0; i < priv->num_pipes; i++) { > - struct omap_dss_device *display = priv->pipes[i].display; > - > - if (display->state == OMAP_DSS_DISPLAY_ACTIVE) { > - display->ops->disable(display); > - display->activate_after_resume = true; > - } else { > - display->activate_after_resume = false; > - } > - } > - > - return 0; > -} > - > -static int omap_drm_resume_all_displays(struct drm_device *ddev) > -{ > - struct omap_drm_private *priv = ddev->dev_private; > - int i; > - > - for (i = 0; i < priv->num_pipes; i++) { > - struct omap_dss_device *display = priv->pipes[i].display; > - > - if (display->activate_after_resume) { > - display->ops->enable(display); > - display->activate_after_resume = false; > - } > - } > - > - return 0; > -} > - > static int omap_drm_suspend(struct device *dev) > { > struct omap_drm_private *priv = dev_get_drvdata(dev); > struct drm_device *drm_dev = priv->ddev; > > - drm_kms_helper_poll_disable(drm_dev); > - > - drm_modeset_lock_all(drm_dev); > - omap_drm_suspend_all_displays(drm_dev); > - drm_modeset_unlock_all(drm_dev); > - > - return 0; > + return drm_mode_config_helper_suspend(drm_dev); > } > > static int omap_drm_resume(struct device *dev) > @@ -740,11 +698,7 @@ static int omap_drm_resume(struct device *dev) > struct omap_drm_private *priv = dev_get_drvdata(dev); > struct drm_device *drm_dev = priv->ddev; > > - drm_modeset_lock_all(drm_dev); > - omap_drm_resume_all_displays(drm_dev); > - drm_modeset_unlock_all(drm_dev); > - > - drm_kms_helper_poll_enable(drm_dev); > + drm_mode_config_helper_resume(drm_dev); > > return omap_gem_resume(drm_dev); > } > -- > Regards, > > Laurent Pinchart > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel