diff options
Diffstat (limited to 'drivers/net/phy/mdio_bus.c')
| -rw-r--r-- | drivers/net/phy/mdio_bus.c | 19 | 
1 files changed, 16 insertions, 3 deletions
diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c index a898e5c4ef1b..f99c21f78b63 100644 --- a/drivers/net/phy/mdio_bus.c +++ b/drivers/net/phy/mdio_bus.c @@ -364,9 +364,6 @@ int __mdiobus_register(struct mii_bus *bus, struct module *owner)  	mutex_init(&bus->mdio_lock); -	if (bus->reset) -		bus->reset(bus); -  	/* de-assert bus level PHY GPIO resets */  	if (bus->num_reset_gpios > 0) {  		bus->reset_gpiod = devm_kcalloc(&bus->dev, @@ -396,6 +393,9 @@ int __mdiobus_register(struct mii_bus *bus, struct module *owner)  		}  	} +	if (bus->reset) +		bus->reset(bus); +  	for (i = 0; i < PHY_MAX_ADDR; i++) {  		if ((bus->phy_mask & (1 << i)) == 0) {  			struct phy_device *phydev; @@ -658,6 +658,18 @@ static int mdio_bus_match(struct device *dev, struct device_driver *drv)  	return 0;  } +static int mdio_uevent(struct device *dev, struct kobj_uevent_env *env) +{ +	int rc; + +	/* Some devices have extra OF data and an OF-style MODALIAS */ +	rc = of_device_uevent_modalias(dev, env); +	if (rc != -ENODEV) +		return rc; + +	return 0; +} +  #ifdef CONFIG_PM  static int mdio_bus_suspend(struct device *dev)  { @@ -708,6 +720,7 @@ static const struct dev_pm_ops mdio_bus_pm_ops = {  struct bus_type mdio_bus_type = {  	.name		= "mdio_bus",  	.match		= mdio_bus_match, +	.uevent		= mdio_uevent,  	.pm		= MDIO_BUS_PM_OPS,  };  EXPORT_SYMBOL(mdio_bus_type);  | 
