net: dm: fec: Support the phy-supply binding

Configure the phy regulator if defined by the "phy-supply" DT phandle.

Signed-off-by: Martin Fuzzey <martin.fuzzey@flowbird.group>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
This commit is contained in:
Martin Fuzzey 2018-10-04 19:59:20 +02:00 committed by Joe Hershberger
parent 331fcabe4f
commit ad8c43cbca
2 changed files with 23 additions and 0 deletions

View file

@ -15,6 +15,7 @@
#include <miiphy.h> #include <miiphy.h>
#include <net.h> #include <net.h>
#include <netdev.h> #include <netdev.h>
#include <power/regulator.h>
#include <asm/io.h> #include <asm/io.h>
#include <linux/errno.h> #include <linux/errno.h>
@ -1272,6 +1273,16 @@ static int fecmxc_probe(struct udevice *dev)
if (ret) if (ret)
return ret; return ret;
#ifdef CONFIG_DM_REGULATOR
if (priv->phy_supply) {
ret = regulator_autoset(priv->phy_supply);
if (ret) {
printf("%s: Error enabling phy supply\n", dev->name);
return ret;
}
}
#endif
#ifdef CONFIG_DM_GPIO #ifdef CONFIG_DM_GPIO
fec_gpio_reset(priv); fec_gpio_reset(priv);
#endif #endif
@ -1327,6 +1338,11 @@ static int fecmxc_remove(struct udevice *dev)
mdio_unregister(priv->bus); mdio_unregister(priv->bus);
mdio_free(priv->bus); mdio_free(priv->bus);
#ifdef CONFIG_DM_REGULATOR
if (priv->phy_supply)
regulator_set_enable(priv->phy_supply, false);
#endif
return 0; return 0;
} }
@ -1350,6 +1366,10 @@ static int fecmxc_ofdata_to_platdata(struct udevice *dev)
return -EINVAL; return -EINVAL;
} }
#ifdef CONFIG_DM_REGULATOR
device_get_supply_regulator(dev, "phy-supply", &priv->phy_supply);
#endif
#ifdef CONFIG_DM_GPIO #ifdef CONFIG_DM_GPIO
ret = gpio_request_by_name(dev, "phy-reset-gpios", 0, ret = gpio_request_by_name(dev, "phy-reset-gpios", 0,
&priv->phy_reset_gpio, GPIOD_IS_OUT); &priv->phy_reset_gpio, GPIOD_IS_OUT);

View file

@ -250,6 +250,9 @@ struct fec_priv {
int phy_id; int phy_id;
int (*mii_postcall)(int); int (*mii_postcall)(int);
#endif #endif
#ifdef CONFIG_DM_REGULATOR
struct udevice *phy_supply;
#endif
#ifdef CONFIG_DM_GPIO #ifdef CONFIG_DM_GPIO
struct gpio_desc phy_reset_gpio; struct gpio_desc phy_reset_gpio;
uint32_t reset_delay; uint32_t reset_delay;