From 69fb6b99a6126dfd15c55c0bce2e8d73eb272e35 Mon Sep 17 00:00:00 2001 From: Finley Xiao Date: Fri, 28 Sep 2018 11:42:38 +0800 Subject: [PATCH] drm/rockchip: vop: Use Use pm_runtime_put_sync() in vop_crtc_disable() The procedure of rpm_idle() is as follows. rpm_idle ->rpm_suspend ->pm_genpd_runtime_suspend ->pm_clk_suspend ->clk_disable ->genpd_poweroff Pm_runtime_put(dev) causes rpm_idle() to be queued up, when pm_clk_suspend() is executed, the rockchip dmcfreq lock is released, vop clocks may be closed while changing ddr frequency. Use pm_runtime_put_sync() instead of pm_runtime_put(), so that rpm_idle can be executed before the lock is released. Change-Id: Ibf4ff70b65782427eaf0fe9f7566ebff602d3757 Signed-off-by: Finley Xiao --- drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c index 76610608c723..d12920e8296f 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c @@ -1429,7 +1429,7 @@ static void vop_crtc_disable(struct drm_crtc *crtc) vop->is_iommu_enabled = false; } - pm_runtime_put(vop->dev); + pm_runtime_put_sync(vop->dev); clk_disable_unprepare(vop->dclk); clk_disable_unprepare(vop->aclk); clk_disable_unprepare(vop->hclk);