• Tao Ren's avatar
    net: phy: broadcom: add 1000Base-X support for BCM54616S · b9bcb953
    Tao Ren authored
    The BCM54616S PHY cannot work properly in RGMII->1000Base-X mode, mainly
    because genphy functions are designed for copper links, and 1000Base-X
    (clause 37) auto negotiation needs to be handled differently.
    
    This patch enables 1000Base-X support for BCM54616S by customizing 3
    driver callbacks, and it's verified to be working on Facebook CMM BMC
    platform (RGMII->1000Base-KX):
    
      - probe: probe callback detects PHY's operation mode based on
        INTERF_SEL[1:0] pins and 1000X/100FX selection bit in SerDES 100-FX
        Control register.
    
      - config_aneg: calls genphy_c37_config_aneg when the PHY is running in
        1000Base-X mode; otherwise, genphy_config_aneg will be called.
    
      - read_status: calls genphy_c37_read_status when the PHY is running in
        1000Base-X mode; otherwise, genphy_read_status will be called.
    
    Note: BCM54616S PHY can also be configured in RGMII->100Base-FX mode, and
    100Base-FX support is not available as of now.
    Signed-off-by: default avatarTao Ren <taoren@fb.com>
    Acked-by: default avatarVladimir Oltean <olteanv@gmail.com>
    Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b9bcb953
broadcom.c 20.1 KB