drm/mediatek: Ensure bridge disable happends before suspend
authorHsin-Yi Wang <hsinyi@chromium.org>
Wed, 29 Jun 2022 19:05:46 +0000 (03:05 +0800)
committerChun-Kuang Hu <chunkuang.hu@kernel.org>
Mon, 4 Jul 2022 13:42:43 +0000 (21:42 +0800)
Make sure bridge_disable will be called before suspend by calling
drm_mode_config_helper_suspend() in .prepare callback.

Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://patchwork.kernel.org/project/linux-mediatek/patch/20220629190545.478113-1-hsinyi@chromium.org/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
drivers/gpu/drm/mediatek/mtk_drm_drv.c

index 0551e1a..e659dc8 100644 (file)
@@ -826,8 +826,7 @@ static int mtk_drm_remove(struct platform_device *pdev)
        return 0;
 }
 
-#ifdef CONFIG_PM_SLEEP
-static int mtk_drm_sys_suspend(struct device *dev)
+static int mtk_drm_sys_prepare(struct device *dev)
 {
        struct mtk_drm_private *private = dev_get_drvdata(dev);
        struct drm_device *drm = private->drm;
@@ -838,20 +837,21 @@ static int mtk_drm_sys_suspend(struct device *dev)
        return ret;
 }
 
-static int mtk_drm_sys_resume(struct device *dev)
+static void mtk_drm_sys_complete(struct device *dev)
 {
        struct mtk_drm_private *private = dev_get_drvdata(dev);
        struct drm_device *drm = private->drm;
        int ret;
 
        ret = drm_mode_config_helper_resume(drm);
-
-       return ret;
+       if (ret)
+               dev_err(dev, "Failed to resume\n");
 }
-#endif
 
-static SIMPLE_DEV_PM_OPS(mtk_drm_pm_ops, mtk_drm_sys_suspend,
-                        mtk_drm_sys_resume);
+static const struct dev_pm_ops mtk_drm_pm_ops = {
+       .prepare = mtk_drm_sys_prepare,
+       .complete = mtk_drm_sys_complete,
+};
 
 static struct platform_driver mtk_drm_platform_driver = {
        .probe  = mtk_drm_probe,