Skip to content

Commit

Permalink
drm/exynos: g2d: fix system and runtime pm integration
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Marek Szyprowski authored and Inki Dae committed Sep 18, 2016
1 parent 5b67723 commit b05984e
Showing 1 changed file with 7 additions and 22 deletions.
29 changes: 7 additions & 22 deletions drivers/gpu/drm/exynos/exynos_drm_g2d.c
Original file line number Diff line number Diff line change
Expand Up @@ -1475,8 +1475,8 @@ static int g2d_remove(struct platform_device *pdev)
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);

Expand All @@ -1490,25 +1490,6 @@ static int g2d_suspend(struct device *dev)

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);

return 0;
Expand All @@ -1523,12 +1504,16 @@ static int g2d_runtime_resume(struct device *dev)
if (ret < 0)
dev_warn(dev, "failed to enable clock.\n");

g2d->suspended = false;
g2d_exec_runqueue(g2d);

return ret;
}
#endif

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)
};

Expand Down

0 comments on commit b05984e

Please sign in to comment.