MLK-11831-2 usb: chipidea: imx: add request{release}_bus_freq
authorPeter Chen <peter.chen@freescale.com>
Fri, 6 Nov 2015 07:33:17 +0000 (15:33 +0800)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 19:49:11 +0000 (14:49 -0500)
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>
drivers/usb/chipidea/ci_hdrc_imx.c

index 3a0e545..7055df4 100644 (file)
@@ -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;