USB: msm: Use new clock framework APIs

Clock framework now provides two new APIs: clk_prepare and
clk_unprepare which can be called from non-atomic context only.
Other clk_enable and clk_disable APIs can be called from atomic
context.
To enable a clock drivers need to call both clk_prepare and
clk_enable. Similarly for disabling a clock - clk_disable and
clk_unprepare should be called.

Change-Id: I1ec0764e34619b92d811e1dadd2bb49b5cf36f5c
Signed-off-by: Manu Gautam <mgautam@codeaurora.org>
diff --git a/drivers/usb/otg/msm_otg.c b/drivers/usb/otg/msm_otg.c
index 4e1895f..6964835 100644
--- a/drivers/usb/otg/msm_otg.c
+++ b/drivers/usb/otg/msm_otg.c
@@ -538,7 +538,7 @@
 			motg->reset_counter++;
 	}
 
-	clk_enable(motg->clk);
+	clk_prepare_enable(motg->clk);
 	ret = msm_otg_phy_reset(motg);
 	if (ret) {
 		dev_err(otg->dev, "phy_reset failed\n");
@@ -558,7 +558,7 @@
 	/* Ensure that RESET operation is completed before turning off clock */
 	mb();
 
-	clk_disable(motg->clk);
+	clk_disable_unprepare(motg->clk);
 
 	if (pdata->otg_control == OTG_PHY_CONTROL) {
 		val = readl_relaxed(USB_OTGSC);
@@ -711,8 +711,8 @@
 
 	/* Ensure that above operation is completed before turning off clocks */
 	mb();
-	clk_disable(motg->pclk);
-	clk_disable(motg->core_clk);
+	clk_disable_unprepare(motg->pclk);
+	clk_disable_unprepare(motg->core_clk);
 
 	/* usb phy no more require TCXO clock, hence vote for TCXO disable */
 	clk_disable_unprepare(motg->xo_handle);
@@ -765,9 +765,9 @@
 		dev_err(otg->dev, "%s failed to vote for "
 			"TCXO D0 buffer%d\n", __func__, ret);
 
-	clk_enable(motg->core_clk);
+	clk_prepare_enable(motg->core_clk);
 
-	clk_enable(motg->pclk);
+	clk_prepare_enable(motg->pclk);
 
 	if (motg->lpm_flags & PHY_PWR_COLLAPSED) {
 		msm_hsusb_ldo_enable(motg, 1);
@@ -2529,7 +2529,7 @@
 		goto free_xo_handle;
 	}
 
-	clk_enable(motg->pclk);
+	clk_prepare_enable(motg->pclk);
 
 	ret = msm_hsusb_init_vddcx(motg, 1);
 	if (ret) {
@@ -2554,7 +2554,7 @@
 		dev_err(&pdev->dev, "hsusb vreg enable failed\n");
 		goto free_ldo_init;
 	}
-	clk_enable(motg->core_clk);
+	clk_prepare_enable(motg->core_clk);
 
 	writel(0, USB_USBINTR);
 	writel(0, USB_OTGSC);
@@ -2652,14 +2652,14 @@
 	free_irq(motg->irq, motg);
 destroy_wlock:
 	wake_lock_destroy(&motg->wlock);
-	clk_disable(motg->core_clk);
+	clk_disable_unprepare(motg->core_clk);
 	msm_hsusb_ldo_enable(motg, 0);
 free_ldo_init:
 	msm_hsusb_ldo_init(motg, 0);
 free_init_vddcx:
 	msm_hsusb_init_vddcx(motg, 0);
 devote_xo_handle:
-	clk_disable(motg->pclk);
+	clk_disable_unprepare(motg->pclk);
 	clk_disable_unprepare(motg->xo_handle);
 free_xo_handle:
 	clk_put(motg->xo_handle);
@@ -2726,8 +2726,8 @@
 	if (cnt >= PHY_SUSPEND_TIMEOUT_USEC)
 		dev_err(otg->dev, "Unable to suspend PHY\n");
 
-	clk_disable(motg->pclk);
-	clk_disable(motg->core_clk);
+	clk_disable_unprepare(motg->pclk);
+	clk_disable_unprepare(motg->core_clk);
 	clk_put(motg->xo_handle);
 	msm_hsusb_ldo_enable(motg, 0);
 	msm_hsusb_ldo_init(motg, 0);