diff mbox

[PATCH/RESEND,05/12] msm: iommu: Convert to clk_prepare/unprepare

Message ID 1371490999-15501-6-git-send-email-sboyd@codeaurora.org (mailing list archive)
State New, archived
Headers show

Commit Message

Stephen Boyd June 17, 2013, 5:43 p.m. UTC
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: Stephen Boyd <sboyd@codeaurora.org>
---
 drivers/iommu/msm_iommu_dev.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

Comments

Stephen Boyd June 20, 2013, 4:40 p.m. UTC | #1
Sending to correct Joerg address.

On 06/17, Stephen Boyd wrote:
> 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: Stephen Boyd <sboyd@codeaurora.org>
> ---
>  drivers/iommu/msm_iommu_dev.c | 17 ++++++++++-------
>  1 file changed, 10 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/iommu/msm_iommu_dev.c b/drivers/iommu/msm_iommu_dev.c
> index 8e8fb07..d344f6a 100644
> --- a/drivers/iommu/msm_iommu_dev.c
> +++ b/drivers/iommu/msm_iommu_dev.c
> @@ -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 @@ fail_clk:
>  		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;
>  		}
>  	}
> -- 
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> hosted by The Linux Foundation
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Joerg Roedel June 20, 2013, 5:04 p.m. UTC | #2
On Thu, Jun 20, 2013 at 09:40:51AM -0700, Stephen Boyd wrote:
> Sending to correct Joerg address.
> 
> On 06/17, Stephen Boyd wrote:
> > 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: Stephen Boyd <sboyd@codeaurora.org>

Acked-by: Joerg Roedel <joro@8bytes.org>
diff mbox

Patch

diff --git a/drivers/iommu/msm_iommu_dev.c b/drivers/iommu/msm_iommu_dev.c
index 8e8fb07..d344f6a 100644
--- a/drivers/iommu/msm_iommu_dev.c
+++ b/drivers/iommu/msm_iommu_dev.c
@@ -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 @@  fail_clk:
 		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;
 		}
 	}