@@ -1588,6 +1588,7 @@ fec_probe(struct platform_device *pdev)
ret = PTR_ERR(fep->clk);
goto failed_clk;
}
+ clk_prepare(fep->clk);
clk_enable(fep->clk);
ret = fec_enet_init(ndev);
@@ -1612,6 +1613,7 @@ failed_register:
failed_mii_init:
failed_init:
clk_disable(fep->clk);
+ clk_unprepare(fep->clk);
clk_put(fep->clk);
failed_clk:
for (i = 0; i < FEC_IRQ_NUM; i++) {
@@ -1639,6 +1641,7 @@ fec_drv_remove(struct platform_device *pdev)
fec_stop(ndev);
fec_enet_mii_remove(fep);
clk_disable(fep->clk);
+ clk_unprepare(fep->clk);
clk_put(fep->clk);
iounmap(fep->hwp);
unregister_netdev(ndev);
@@ -1665,6 +1668,7 @@ fec_suspend(struct device *dev)
netif_device_detach(ndev);
}
clk_disable(fep->clk);
+ clk_unprepare(fep->clk);
return 0;
}
@@ -1675,6 +1679,7 @@ fec_resume(struct device *dev)
struct net_device *ndev = dev_get_drvdata(dev);
struct fec_enet_private *fep = netdev_priv(ndev);
+ clk_prepare(fep->clk);
clk_enable(fep->clk);
if (netif_running(ndev)) {
fec_restart(ndev, fep->full_duplex);
Signed-off-by: Richard Zhao <richard.zhao@linaro.org> --- drivers/net/ethernet/freescale/fec.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-)