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:
		
							parent
							
								
									331fcabe4f
								
							
						
					
					
						commit
						ad8c43cbca
					
				|  | @ -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); | ||||||
|  |  | ||||||
|  | @ -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; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue