瀏覽代碼

drm/exynos: g2d: fix system and runtime pm integration

Move code from system sleep pm to runtime pm callbacks to ensure proper
driver state preservation when device is under power domain. Then, use
generic helpers for using runtime pm for system sleep pm.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Marek Szyprowski 9 年之前
父節點
當前提交
b05984e21a
共有 1 個文件被更改,包括 7 次插入22 次删除
  1. 7 22
      drivers/gpu/drm/exynos/exynos_drm_g2d.c

+ 7 - 22
drivers/gpu/drm/exynos/exynos_drm_g2d.c

@@ -1475,8 +1475,8 @@ static int g2d_remove(struct platform_device *pdev)
 	return 0;
 	return 0;
 }
 }
 
 
-#ifdef CONFIG_PM_SLEEP
-static int g2d_suspend(struct device *dev)
+#ifdef CONFIG_PM
+static int g2d_runtime_suspend(struct device *dev)
 {
 {
 	struct g2d_data *g2d = dev_get_drvdata(dev);
 	struct g2d_data *g2d = dev_get_drvdata(dev);
 
 
@@ -1490,25 +1490,6 @@ static int g2d_suspend(struct device *dev)
 
 
 	flush_work(&g2d->runqueue_work);
 	flush_work(&g2d->runqueue_work);
 
 
-	return 0;
-}
-
-static int g2d_resume(struct device *dev)
-{
-	struct g2d_data *g2d = dev_get_drvdata(dev);
-
-	g2d->suspended = false;
-	g2d_exec_runqueue(g2d);
-
-	return 0;
-}
-#endif
-
-#ifdef CONFIG_PM
-static int g2d_runtime_suspend(struct device *dev)
-{
-	struct g2d_data *g2d = dev_get_drvdata(dev);
-
 	clk_disable_unprepare(g2d->gate_clk);
 	clk_disable_unprepare(g2d->gate_clk);
 
 
 	return 0;
 	return 0;
@@ -1523,12 +1504,16 @@ static int g2d_runtime_resume(struct device *dev)
 	if (ret < 0)
 	if (ret < 0)
 		dev_warn(dev, "failed to enable clock.\n");
 		dev_warn(dev, "failed to enable clock.\n");
 
 
+	g2d->suspended = false;
+	g2d_exec_runqueue(g2d);
+
 	return ret;
 	return ret;
 }
 }
 #endif
 #endif
 
 
 static const struct dev_pm_ops g2d_pm_ops = {
 static const struct dev_pm_ops g2d_pm_ops = {
-	SET_SYSTEM_SLEEP_PM_OPS(g2d_suspend, g2d_resume)
+	SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
+				pm_runtime_force_resume)
 	SET_RUNTIME_PM_OPS(g2d_runtime_suspend, g2d_runtime_resume, NULL)
 	SET_RUNTIME_PM_OPS(g2d_runtime_suspend, g2d_runtime_resume, NULL)
 };
 };