[PATCH RESEND 1/2] drm/msm: call drm_atomic_helper_suspend() and drm_atomic_helper_resume()

Rob Clark robdclark at gmail.com
Tue Jul 24 11:47:09 UTC 2018


On Tue, Jul 24, 2018 at 3:24 AM, Daniel Mack <daniel at zonque.org> wrote:
> To make suspend and resume work on msm8916 platforms, call into the generic
> helpers and preserve the state across suspends.
>
> Signed-off-by: Daniel Mack <daniel at zonque.org>
> ---
> I've sent these two small patches twice already in May, but I haven't
> gotten any feedback, not sure why.

These two are in msm-next (and will be in my next pull request in the
coming days)

Thanks

BR,
-R

>
> We're using these on a number of prototypes and they seem to do work
> just fine.
>
>  drivers/gpu/drm/msm/msm_drv.c | 9 +++++++++
>  drivers/gpu/drm/msm/msm_drv.h | 1 +
>  2 files changed, 10 insertions(+)
>
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index 0a3ea3034e39..cdbe9249bff2 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -907,16 +907,25 @@ static struct drm_driver msm_driver = {
>  static int msm_pm_suspend(struct device *dev)
>  {
>         struct drm_device *ddev = dev_get_drvdata(dev);
> +       struct msm_drm_private *priv = ddev->dev_private;
>
>         drm_kms_helper_poll_disable(ddev);
>
> +       priv->pm_state = drm_atomic_helper_suspend(ddev);
> +       if (IS_ERR(priv->pm_state)) {
> +               drm_kms_helper_poll_enable(ddev);
> +               return PTR_ERR(priv->pm_state);
> +       }
> +
>         return 0;
>  }
>
>  static int msm_pm_resume(struct device *dev)
>  {
>         struct drm_device *ddev = dev_get_drvdata(dev);
> +       struct msm_drm_private *priv = ddev->dev_private;
>
> +       drm_atomic_helper_resume(ddev, priv->pm_state);
>         drm_kms_helper_poll_enable(ddev);
>
>         return 0;
> diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h
> index 0a653dd2e618..459d06a1ab9f 100644
> --- a/drivers/gpu/drm/msm/msm_drv.h
> +++ b/drivers/gpu/drm/msm/msm_drv.h
> @@ -155,6 +155,7 @@ struct msm_drm_private {
>         struct shrinker shrinker;
>
>         struct msm_vblank_ctrl vblank_ctrl;
> +       struct drm_atomic_state *pm_state;
>  };
>
>  struct msm_format {
> --
> 2.14.3
>


More information about the dri-devel mailing list