Commit 1107b171 authored by Stephen Boyd's avatar Stephen Boyd Committed by David Brown

msm: iommu: Convert to clk_prepare/unprepare

Add calls to clk_prepare and unprepare so that MSM can migrate to
the common clock framework. We never unprepare the clocks until
driver remove because the clocks are enabled and disabled in irq
context. Finer grained power management is possible in the future
via runtime power management techniques.

Cc: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
Acked-by: default avatarJoerg Roedel <joro@8bytes.org>
Signed-off-by: default avatarDavid Brown <davidb@codeaurora.org>
parent 7f371b98
......@@ -160,7 +160,7 @@ static int msm_iommu_probe(struct platform_device *pdev)
goto fail;
}
ret = clk_enable(iommu_pclk);
ret = clk_prepare_enable(iommu_pclk);
if (ret)
goto fail_enable;
......@@ -170,7 +170,7 @@ static int msm_iommu_probe(struct platform_device *pdev)
if (clk_get_rate(iommu_clk) == 0)
clk_set_min_rate(iommu_clk, 1);
ret = clk_enable(iommu_clk);
ret = clk_prepare_enable(iommu_clk);
if (ret) {
clk_put(iommu_clk);
goto fail_pclk;
......@@ -261,7 +261,7 @@ static int msm_iommu_probe(struct platform_device *pdev)
clk_put(iommu_clk);
}
fail_pclk:
clk_disable(iommu_pclk);
clk_disable_unprepare(iommu_pclk);
fail_enable:
clk_put(iommu_pclk);
fail:
......@@ -275,8 +275,11 @@ static int msm_iommu_remove(struct platform_device *pdev)
drv = platform_get_drvdata(pdev);
if (drv) {
if (drv->clk)
if (drv->clk) {
clk_unprepare(drv->clk);
clk_put(drv->clk);
}
clk_unprepare(drv->pclk);
clk_put(drv->pclk);
memset(drv, 0, sizeof(*drv));
kfree(drv);
......@@ -314,14 +317,14 @@ static int msm_iommu_ctx_probe(struct platform_device *pdev)
INIT_LIST_HEAD(&ctx_drvdata->attached_elm);
platform_set_drvdata(pdev, ctx_drvdata);
ret = clk_enable(drvdata->pclk);
ret = clk_prepare_enable(drvdata->pclk);
if (ret)
goto fail;
if (drvdata->clk) {
ret = clk_enable(drvdata->clk);
ret = clk_prepare_enable(drvdata->clk);
if (ret) {
clk_disable(drvdata->pclk);
clk_disable_unprepare(drvdata->pclk);
goto fail;
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment