Re: [PATCH 1/3] drm/stm: drv: fix suspend/resume

From: Philippe CORNU
Date: Tue Jun 18 2019 - 06:02:38 EST


Hi Yannick,

Thank you for your patch.

Acked-by: Philippe Cornu <philippe.cornu@xxxxxx>

Philippe :-)

On 6/17/19 9:18 AM, Yannick Fertrà wrote:
> Without this fix, the system can not go in "suspend" mode
> due to an error in drv_suspend function.
>
> Fixes: 35ab6cf ("drm/stm: support runtime power management")
>
> Signed-off-by: Yannick Fertrà <yannick.fertre@xxxxxx>
> ---
> drivers/gpu/drm/stm/drv.c | 15 ++++++++-------
> 1 file changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> index 5659572..9dee4e4 100644
> --- a/drivers/gpu/drm/stm/drv.c
> +++ b/drivers/gpu/drm/stm/drv.c
> @@ -136,8 +136,7 @@ static __maybe_unused int drv_suspend(struct device *dev)
> struct ltdc_device *ldev = ddev->dev_private;
> struct drm_atomic_state *state;
>
> - if (WARN_ON(!ldev->suspend_state))
> - return -ENOENT;
> + WARN_ON(ldev->suspend_state);
>
> state = drm_atomic_helper_suspend(ddev);
> if (IS_ERR(state))
> @@ -155,15 +154,17 @@ static __maybe_unused int drv_resume(struct device *dev)
> struct ltdc_device *ldev = ddev->dev_private;
> int ret;
>
> + if (WARN_ON(!ldev->suspend_state))
> + return -ENOENT;
> +
> pm_runtime_force_resume(dev);
> ret = drm_atomic_helper_resume(ddev, ldev->suspend_state);
> - if (ret) {
> + if (ret)
> pm_runtime_force_suspend(dev);
> - ldev->suspend_state = NULL;
> - return ret;
> - }
>
> - return 0;
> + ldev->suspend_state = NULL;
> +
> + return ret;
> }
>
> static __maybe_unused int drv_runtime_suspend(struct device *dev)
>