When enable clk_ref failed, clk_ptp should be disabled rather than
clk_ref itself.

Signed-off-by: Liu Xiang <liuxiang_1...@126.com>
---
 drivers/net/ethernet/freescale/fec_main.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/freescale/fec_main.c 
b/drivers/net/ethernet/freescale/fec_main.c
index dc6f876..ac8d868 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -1986,8 +1986,12 @@ static int fec_enet_clk_enable(struct net_device *ndev, 
bool enable)
        return 0;
 
 failed_clk_ref:
-       if (fep->clk_ref)
-               clk_disable_unprepare(fep->clk_ref);
+       if (fep->clk_ptp) {
+               mutex_lock(&fep->ptp_clk_mutex);
+               clk_disable_unprepare(fep->clk_ptp);
+               fep->ptp_clk_on = false;
+               mutex_unlock(&fep->ptp_clk_mutex);
+       }
 failed_clk_ptp:
        if (fep->clk_enet_out)
                clk_disable_unprepare(fep->clk_enet_out);
-- 
1.9.1

Reply via email to