diff options
Diffstat (limited to 'drivers/net/phy/phy_device.c')
| -rw-r--r-- | drivers/net/phy/phy_device.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 993c52c82aeb..e870c0698bbe 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c | |||
| @@ -442,11 +442,11 @@ static int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, | |||
| 442 | u32 flags, phy_interface_t interface) | 442 | u32 flags, phy_interface_t interface) |
| 443 | { | 443 | { |
| 444 | struct device *d = &phydev->dev; | 444 | struct device *d = &phydev->dev; |
| 445 | int err; | ||
| 445 | 446 | ||
| 446 | /* Assume that if there is no driver, that it doesn't | 447 | /* Assume that if there is no driver, that it doesn't |
| 447 | * exist, and we should use the genphy driver. */ | 448 | * exist, and we should use the genphy driver. */ |
| 448 | if (NULL == d->driver) { | 449 | if (NULL == d->driver) { |
| 449 | int err; | ||
| 450 | d->driver = &genphy_driver.driver; | 450 | d->driver = &genphy_driver.driver; |
| 451 | 451 | ||
| 452 | err = d->driver->probe(d); | 452 | err = d->driver->probe(d); |
| @@ -474,7 +474,11 @@ static int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, | |||
| 474 | /* Do initial configuration here, now that | 474 | /* Do initial configuration here, now that |
| 475 | * we have certain key parameters | 475 | * we have certain key parameters |
| 476 | * (dev_flags and interface) */ | 476 | * (dev_flags and interface) */ |
| 477 | return phy_init_hw(phydev); | 477 | err = phy_init_hw(phydev); |
| 478 | if (err) | ||
| 479 | phy_detach(phydev); | ||
| 480 | |||
| 481 | return err; | ||
| 478 | } | 482 | } |
| 479 | 483 | ||
| 480 | /** | 484 | /** |
