Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec446d09 authored by Daniel Mack's avatar Daniel Mack Committed by Rob Clark
Browse files

drm/msm: call drm_atomic_helper_suspend() and drm_atomic_helper_resume()



To make suspend and resume work on msm8916 platforms, call into the generic
helpers and preserve the state across suspends.

Signed-off-by: default avatarDaniel Mack <daniel@zonque.org>
Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
parent 50077507
Loading
Loading
Loading
Loading
+9 −0
Original line number Original line Diff line number Diff line
@@ -894,16 +894,25 @@ static struct drm_driver msm_driver = {
static int msm_pm_suspend(struct device *dev)
static int msm_pm_suspend(struct device *dev)
{
{
	struct drm_device *ddev = dev_get_drvdata(dev);
	struct drm_device *ddev = dev_get_drvdata(dev);
	struct msm_drm_private *priv = ddev->dev_private;


	drm_kms_helper_poll_disable(ddev);
	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;
	return 0;
}
}


static int msm_pm_resume(struct device *dev)
static int msm_pm_resume(struct device *dev)
{
{
	struct drm_device *ddev = dev_get_drvdata(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);
	drm_kms_helper_poll_enable(ddev);


	return 0;
	return 0;
+1 −0
Original line number Original line Diff line number Diff line
@@ -150,6 +150,7 @@ struct msm_drm_private {
	struct shrinker shrinker;
	struct shrinker shrinker;


	struct msm_vblank_ctrl vblank_ctrl;
	struct msm_vblank_ctrl vblank_ctrl;
	struct drm_atomic_state *pm_state;
};
};


struct msm_format {
struct msm_format {