On 8/11/19 4:40 PM, Tao Ren wrote: > 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: Tao Ren <tao...@fb.com>
> - reg = bcm_phy_read_shadow(phydev, BCM5482_SHD_MODE); > - bcm_phy_write_shadow(phydev, BCM5482_SHD_MODE, > - reg | BCM5482_SHD_MODE_1000BX); > + reg = bcm_phy_read_shadow(phydev, BCM54XX_SHD_MODE); > + bcm_phy_write_shadow(phydev, BCM54XX_SHD_MODE, > + reg | BCM54XX_SHD_MODE_1000BX); This could have been a separate patch, but this looks reasonable to me and this is correct with the datasheet, thanks Tao. Reviewed-by: Florian Fainelli <f.faine...@gmail.com> -- Florian