drm/stm: drv: fix suspend/resume [Linux 5.3]

This Linux kernel change "drm/stm: drv: fix suspend/resume" is included in the Linux 5.3 release. This change is authored by Yannick Fertré <yannick.fertre [at] st.com> on Mon Jun 17 09:18:17 2019 +0200. The commit for this change in Linux stable tree is 2b5d74f (patch).

drm/stm: drv: fix suspend/resume

Without this fix, the system can not go in "suspend" mode
due to an error in drv_suspend function.

Fixes: 35ab6cfbf211 ("drm/stm: support runtime power management")

Signed-off-by: Yannick Fertré <yannick.fertre@st.com>
Acked-by: Philippe Cornu <philippe.cornu@st.com>
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/1560755897-5002-1-git-send-email-yannick.fertre@st.com

There are 15 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 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)

Leave a Reply

Your email address will not be published. Required fields are marked *