diff options
author | Peter Chen <peter.chen@freescale.com> | 2015-11-06 15:33:17 +0800 |
---|---|---|
committer | Octavian Purdila <octavian.purdila@nxp.com> | 2017-02-23 14:21:42 +0200 |
commit | 64e3d3d618654475c68d72cb3ad0540709b3ab83 (patch) | |
tree | 5871b269f99e73e3e1b5b9948e67d6ea5f0148cb /drivers/usb/chipidea/ci_hdrc_imx.c | |
parent | 34a4e4e5cec31ec857ade64a65c8b890a279a0fb (diff) |
MLK-11831-2 usb: chipidea: imx: add request{release}_bus_freq
When the usb in idle, it calls release_bus_req.
When the usb is going to use, it calls request_bus_req.
This is a rework patch of ENGR00286459 and ENGR00286926.
Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Li Jun <jun.li@freescale.com>
Diffstat (limited to 'drivers/usb/chipidea/ci_hdrc_imx.c')
-rw-r--r-- | drivers/usb/chipidea/ci_hdrc_imx.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c index 3a0e545b75b3..7055df4fe901 100644 --- a/drivers/usb/chipidea/ci_hdrc_imx.c +++ b/drivers/usb/chipidea/ci_hdrc_imx.c @@ -23,6 +23,7 @@ #include <linux/regmap.h> #include <linux/mfd/syscon.h> #include <linux/regulator/consumer.h> +#include <linux/busfreq-imx.h> #include "ci.h" #include "ci_hdrc_imx.h" @@ -505,9 +506,10 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev) if (ret) return ret; + request_bus_freq(BUS_FREQ_HIGH); ret = imx_prepare_enable_clks(&pdev->dev); if (ret) - return ret; + goto err_bus_freq; data->phy = devm_usb_get_phy_by_phandle(&pdev->dev, "fsl,usbphy", 0); if (IS_ERR(data->phy)) { @@ -626,6 +628,8 @@ disable_hsic_regulator: ret = regulator_disable(data->hsic_pad_regulator); err_clk: imx_disable_unprepare_clks(&pdev->dev); +err_bus_freq: + release_bus_freq(BUS_FREQ_HIGH); return ret; } @@ -640,6 +644,7 @@ static int ci_hdrc_imx_remove(struct platform_device *pdev) } ci_hdrc_remove_device(data->ci_pdev); imx_disable_unprepare_clks(&pdev->dev); + release_bus_freq(BUS_FREQ_HIGH); if (data->hsic_pad_regulator) regulator_disable(data->hsic_pad_regulator); @@ -669,6 +674,7 @@ static int imx_controller_suspend(struct device *dev) } imx_disable_unprepare_clks(dev); + release_bus_freq(BUS_FREQ_HIGH); data->in_lpm = true; return 0; @@ -686,6 +692,7 @@ static int imx_controller_resume(struct device *dev) return 0; } + request_bus_freq(BUS_FREQ_HIGH); ret = imx_prepare_enable_clks(dev); if (ret) return ret; |