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