Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -255,6 +255,7 @@ int mdiobus_register(struct mii_bus *bus)
|
||||
|
||||
bus->dev.parent = bus->parent;
|
||||
bus->dev.class = &mdio_bus_class;
|
||||
bus->dev.driver = bus->parent->driver;
|
||||
bus->dev.groups = NULL;
|
||||
dev_set_name(&bus->dev, "%s", bus->id);
|
||||
|
||||
|
@@ -355,7 +355,7 @@ int phy_device_register(struct phy_device *phydev)
|
||||
phydev->bus->phy_map[phydev->addr] = phydev;
|
||||
|
||||
/* Run all of the fixups for this PHY */
|
||||
err = phy_init_hw(phydev);
|
||||
err = phy_scan_fixups(phydev);
|
||||
if (err) {
|
||||
pr_err("PHY %d failed to initialize\n", phydev->addr);
|
||||
goto out;
|
||||
@@ -575,6 +575,7 @@ int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
|
||||
u32 flags, phy_interface_t interface)
|
||||
{
|
||||
struct device *d = &phydev->dev;
|
||||
struct module *bus_module;
|
||||
int err;
|
||||
|
||||
/* Assume that if there is no driver, that it doesn't
|
||||
@@ -599,6 +600,14 @@ int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
/* Increment the bus module reference count */
|
||||
bus_module = phydev->bus->dev.driver ?
|
||||
phydev->bus->dev.driver->owner : NULL;
|
||||
if (!try_module_get(bus_module)) {
|
||||
dev_err(&dev->dev, "failed to get the bus module\n");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
phydev->attached_dev = dev;
|
||||
dev->phydev = phydev;
|
||||
|
||||
@@ -664,6 +673,10 @@ EXPORT_SYMBOL(phy_attach);
|
||||
void phy_detach(struct phy_device *phydev)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (phydev->bus->dev.driver)
|
||||
module_put(phydev->bus->dev.driver->owner);
|
||||
|
||||
phydev->attached_dev->phydev = NULL;
|
||||
phydev->attached_dev = NULL;
|
||||
phy_suspend(phydev);
|
||||
|
Reference in New Issue
Block a user