> + > +/** > + * asix_soft_reset - software reset the PHY via BMCR_RESET bit > + * @phydev: target phy_device struct > + * > + * Description: Perform a software PHY reset using the standard > + * BMCR_RESET bit and poll for the reset bit to be cleared. > + * Toggle BMCR_RESET bit off to accomodate broken PHY implementations > + * such as used on the Individual Computers' X-Surf 100 Zorro card. > + * > + * Returns: 0 on success, < 0 on failure > + */ > +static int asix_soft_reset(struct phy_device *phydev) > +{ > + int ret; > + > + /* Asix PHY won't reset unless reset bit toggles */ > + ret = phy_write(phydev, MII_BMCR, 0); > + if (ret < 0) > + return ret; > + > + phy_write(phydev, MII_BMCR, BMCR_RESET); > + > + return phy_poll_reset(phydev); > +}
Why not simply: static int asix_soft_reset(struct phy_device *phydev) { int ret; /* Asix PHY won't reset unless reset bit toggles */ ret = phy_write(phydev, MII_BMCR, 0); if (ret < 0) return ret; return genphy_soft_reset(phydev); } Andrew