#include <linux/of_gpio.h>
 #include <linux/of_net.h>
 #include <linux/pinctrl/consumer.h>
+#include <linux/regulator/consumer.h>
 
 #include <asm/cacheflush.h>
 
        const struct of_device_id *of_id;
        static int dev_id;
        struct pinctrl *pinctrl;
+       struct regulator *reg_phy;
 
        of_id = of_match_device(fec_dt_ids, &pdev->dev);
        if (of_id)
        clk_prepare_enable(fep->clk_ahb);
        clk_prepare_enable(fep->clk_ipg);
 
+       reg_phy = devm_regulator_get(&pdev->dev, "phy");
+       if (!IS_ERR(reg_phy)) {
+               ret = regulator_enable(reg_phy);
+               if (ret) {
+                       dev_err(&pdev->dev,
+                               "Failed to enable phy regulator: %d\n", ret);
+                       goto failed_regulator;
+               }
+       }
+
        fec_reset_phy(pdev);
 
        ret = fec_enet_init(ndev);
        fec_enet_mii_remove(fep);
 failed_mii_init:
 failed_init:
+failed_regulator:
        clk_disable_unprepare(fep->clk_ahb);
        clk_disable_unprepare(fep->clk_ipg);
 failed_pin: