ret = PTR_ERR(fep->clk);
                goto failed_clk;
        }
-       clk_enable(fep->clk);
+       clk_prepare_enable(fep->clk);
 
        ret = fec_enet_init(ndev);
        if (ret)
        fec_enet_mii_remove(fep);
 failed_mii_init:
 failed_init:
-       clk_disable(fep->clk);
+       clk_disable_unprepare(fep->clk);
        clk_put(fep->clk);
 failed_clk:
        for (i = 0; i < FEC_IRQ_NUM; i++) {
 
        fec_stop(ndev);
        fec_enet_mii_remove(fep);
-       clk_disable(fep->clk);
+       clk_disable_unprepare(fep->clk);
        clk_put(fep->clk);
        iounmap(fep->hwp);
        unregister_netdev(ndev);
                fec_stop(ndev);
                netif_device_detach(ndev);
        }
-       clk_disable(fep->clk);
+       clk_disable_unprepare(fep->clk);
 
        return 0;
 }
        struct net_device *ndev = dev_get_drvdata(dev);
        struct fec_enet_private *fep = netdev_priv(ndev);
 
-       clk_enable(fep->clk);
+       clk_prepare_enable(fep->clk);
        if (netif_running(ndev)) {
                fec_restart(ndev, fep->full_duplex);
                netif_device_attach(ndev);