• Quentin Schulz's avatar
    net: phy: mscc: add support for VSC8584 PHY · a5afc167
    Quentin Schulz authored
    The VSC8584 PHY is a 4-ports PHY that is 10/100/1000BASE-T, 100BASE-FX,
    1000BASE-X and triple-speed copper SFP capable, can communicate with the
    MAC via SGMII, QSGMII or 1000BASE-X, supports downshifting and can set
    the blinking pattern of each of its 4 LEDs, supports hardware offloading
    of MACsec and supports SyncE as well as HP Auto-MDIX detection.
    
    This adds support for 10/100/1000BASE-T, SGMII/QSGMII link with the MAC,
    downshifting, HP Auto-MDIX detection and blinking pattern for its 4
    LEDs.
    
    The VSC8584 has also an internal Intel 8051 microcontroller whose
    firmware needs to be patched when the PHY is reset. If the 8051's
    firmware has the expected CRC, its patching can be skipped. The
    microcontroller can be accessed from any port of the PHY, though the CRC
    function can only be done through the PHY that is the base PHY of the
    package (internal address 0) due to a limitation of the firmware.
    
    The GPIO register bank is a set of registers that are common to all PHYs
    in the package. So any modification in any register of this bank affects
    all PHYs of the package.
    
    If the PHYs haven't been reset before booting the Linux kernel and were
    configured to use interrupts for e.g. link status updates, it is
    required to clear the interrupts mask register of all PHYs before being
    able to use interrupts with any PHY. The first PHY of the package that
    will be init will take care of clearing all PHYs interrupts mask
    registers. Thus, we need to keep track of the init sequence in the
    package, if it's already been done or if it's to be done.
    
    Most of the init sequence of a PHY of the package is common to all PHYs
    in the package, thus we use the SMI broadcast feature which enables us
    to propagate a write in one register of one PHY to all PHYs in the same
    package.
    
    The revA of the VSC8584 PHY (which is not and will not be publicly
    released) should NOT patch the firmware of the microcontroller or it'll
    make things worse, the easiest way is just to not support it.
    Signed-off-by: default avatarQuentin Schulz <quentin.schulz@bootlin.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a5afc167
mscc.c 46 KB