bool pll_is_enabled;
        void __iomem *regs;
        void *mux_handle;
-       struct clk *pclk;
        struct clk *pll;
 };
 
 {
        struct device *dev = &pdev->dev;
        struct g12a_mdio_mux *priv;
+       struct clk *pclk;
        int ret;
 
        priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
        if (IS_ERR(priv->regs))
                return PTR_ERR(priv->regs);
 
-       priv->pclk = devm_clk_get(dev, "pclk");
-       if (IS_ERR(priv->pclk))
-               return dev_err_probe(dev, PTR_ERR(priv->pclk),
+       pclk = devm_clk_get_enabled(dev, "pclk");
+       if (IS_ERR(pclk))
+               return dev_err_probe(dev, PTR_ERR(pclk),
                                     "failed to get peripheral clock\n");
 
-       /* Make sure the device registers are clocked */
-       ret = clk_prepare_enable(priv->pclk);
-       if (ret) {
-               dev_err(dev, "failed to enable peripheral clock");
-               return ret;
-       }
-
        /* Register PLL in CCF */
        ret = g12a_ephy_glue_clk_register(dev);
        if (ret)
-               goto err;
+               return ret;
 
        ret = mdio_mux_init(dev, dev->of_node, g12a_mdio_switch_fn,
                            &priv->mux_handle, dev, NULL);
-       if (ret) {
+       if (ret)
                dev_err_probe(dev, ret, "mdio multiplexer init failed\n");
-               goto err;
-       }
 
-       return 0;
-
-err:
-       clk_disable_unprepare(priv->pclk);
        return ret;
 }
 
        if (priv->pll_is_enabled)
                clk_disable_unprepare(priv->pll);
 
-       clk_disable_unprepare(priv->pclk);
-
        return 0;
 }