• Florian Fainelli's avatar
    net: phy: broadcom: Fix brcm_fet_config_init() · bf8bfc43
    Florian Fainelli authored
    A Broadcom AC201 PHY (same entry as 5241) would be flagged by the
    Broadcom UniMAC MDIO controller as not completing the turn around
    properly since the PHY expects 65 MDC clock cycles to complete a write
    cycle, and the MDIO controller was only sending 64 MDC clock cycles as
    determined by looking at a scope shot.
    
    This would make the subsequent read fail with the UniMAC MDIO controller
    command field having MDIO_READ_FAIL set and we would abort the
    brcm_fet_config_init() function and thus not probe the PHY at all.
    
    After issuing a software reset, wait for at least 1ms which is well
    above the 1us reset delay advertised by the datasheet and issue a dummy
    read to let the PHY turn around the line properly. This read
    specifically ignores -EIO which would be returned by MDIO controllers
    checking for the line being turned around.
    
    If we have a genuine reaad failure, the next read of the interrupt
    status register would pick it up anyway.
    
    Fixes: d7a2ed92 ("broadcom: Add AC131 phy support")
    Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/20220324232438.1156812-1-f.fainelli@gmail.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    bf8bfc43
broadcom.c 28.4 KB