Replace the ad-hoc reimplementation of genphy_soft_reset() and genphy_config_aneg() with the generic functions. Signed-off-by: Marek Vasut <marex@xxxxxxx> Cc: David S. Miller <davem@xxxxxxxxxxxxx> Cc: Nisar Sayed <Nisar.Sayed@xxxxxxxxxxxxx> Cc: Woojung Huh <Woojung.Huh@xxxxxxxxxxxxx> Cc: Andrew Lunn <andrew@xxxxxxx> Cc: Florian Fainelli <f.fainelli@xxxxxxxxx> Cc: linux-usb@xxxxxxxxxxxxxxx To: netdev@xxxxxxxxxxxxxxx --- drivers/net/usb/smsc95xx.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c index c1e59813c1fc..fa33eda61275 100644 --- a/drivers/net/usb/smsc95xx.c +++ b/drivers/net/usb/smsc95xx.c @@ -970,25 +970,16 @@ static void smsc95xx_adjust_link(struct net_device *netdev) static int smsc95xx_phy_initialize(struct usbnet *dev) { struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]); - int bmcr, ret, timeout = 0; + int ret; /* reset phy and wait for reset to complete */ - phy_write(pdata->phydev, MII_BMCR, BMCR_RESET); - - do { - msleep(10); - bmcr = phy_read(pdata->phydev, MII_BMCR); - timeout++; - } while ((bmcr & BMCR_RESET) && (timeout < 100)); - - if (timeout >= 100) { - netdev_warn(dev->net, "timeout on PHY Reset"); - return -EIO; - } + ret = genphy_soft_reset(pdata->phydev); + if (ret) + return ret; - phy_write(pdata->phydev, MII_ADVERTISE, - ADVERTISE_ALL | ADVERTISE_CSMA | ADVERTISE_PAUSE_CAP | - ADVERTISE_PAUSE_ASYM); + ret = genphy_config_aneg(pdata->phydev); + if (ret) + return ret; /* read to clear */ ret = phy_read(pdata->phydev, PHY_INT_SRC); -- 2.19.2