• Florian Fainelli's avatar
    net: phy: consolidate PHY reset in phy_init_hw() · 87aa9f9c
    Florian Fainelli authored
    There are quite a lot of drivers touching a PHY device MII_BMCR
    register to reset the PHY without taking care of:
    
    1) ensuring that BMCR_RESET is cleared after a given timeout
    2) the PHY state machine resuming to the proper state and re-applying
    potentially changed settings such as auto-negotiation
    
    Introduce phy_poll_reset() which will take care of polling the MII_BMCR
    for the BMCR_RESET bit to be cleared after a given timeout or return a
    timeout error code.
    
    In order to make sure the PHY is in a correct state, phy_init_hw() first
    issues a software reset through MII_BMCR and then applies any fixups.
    Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    87aa9f9c
phy_device.c 29.4 KB