> +static int phy_power_on(struct stm32_dwmac *bsp_priv, bool enable) I find this function name confusing, since 50% of the time it does not actually power the PHY on. You never call it with anything other than a static true/false value. So it might was well be two functions, phy_power_on() and phy_power_off(). > +{ > + int ret; > + struct device *dev = bsp_priv->dev; > + > + if (!bsp_priv->regulator) > + return 0; > + > + if (enable) { > + ret = regulator_enable(bsp_priv->regulator); > + if (ret) > + dev_err(dev, "fail to enable phy-supply\n"); Not all PHYs are usable in 0 picoseconds. You probably want a delay here. Otherwise the first few accesses to it might not work. Andrew