MLK-9786 net: fec: Add busfreq support to the driver
authorFugang Duan <b38611@freescale.com>
Tue, 4 Nov 2014 05:23:34 +0000 (13:23 +0800)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 19:47:20 +0000 (14:47 -0500)
Add request_bus_freq() and release_bus_freq() calls to the
various drivers to ensure that the DDR and AHB are the requested
frequency before the driver starts its task.

Signed-off-by: Fugang Duan <B38611@freescale.com>
drivers/net/ethernet/freescale/fec_main.c

index 0f94494..89e331c 100644 (file)
@@ -59,6 +59,8 @@
 #include <linux/regulator/consumer.h>
 #include <linux/if_vlan.h>
 #include <linux/pinctrl/consumer.h>
+#include <linux/pm_runtime.h>
+#include <linux/busfreq-imx.h>
 #include <linux/prefetch.h>
 #include <soc/imx/cpuidle.h>
 #include <linux/mfd/syscon.h>
@@ -3513,6 +3515,8 @@ fec_probe(struct platform_device *pdev)
                fep->phy_interface = ret;
        }
 
+       request_bus_freq(BUS_FREQ_HIGH);
+
        fep->clk_ipg = devm_clk_get(&pdev->dev, "ipg");
        if (IS_ERR(fep->clk_ipg)) {
                ret = PTR_ERR(fep->clk_ipg);
@@ -3776,6 +3780,7 @@ static int __maybe_unused fec_runtime_suspend(struct device *dev)
        struct fec_enet_private *fep = netdev_priv(ndev);
 
        clk_disable_unprepare(fep->clk_ipg);
+       release_bus_freq(BUS_FREQ_HIGH);
 
        return 0;
 }
@@ -3785,6 +3790,7 @@ static int __maybe_unused fec_runtime_resume(struct device *dev)
        struct net_device *ndev = dev_get_drvdata(dev);
        struct fec_enet_private *fep = netdev_priv(ndev);
 
+       request_bus_freq(BUS_FREQ_HIGH);
        return clk_prepare_enable(fep->clk_ipg);
 }