• Maxim Kochetkov's avatar
    net: dsa: felix: introduce support for Seville VSC9953 switch · 84705fc1
    Maxim Kochetkov authored
    This is another switch from Vitesse / Microsemi / Microchip, that has
    10 ports (8 external, 2 internal) and is integrated into the Freescale /
    NXP T1040 PowerPC SoC. It is very similar to Felix from NXP LS1028A,
    except that this is a platform device and Felix is a PCI device, and it
    doesn't support IEEE 1588 and TSN.
    
    Like Felix, this driver configures its own PCS on the internal MDIO bus
    using a phy_device abstraction for it (yes, it will be refactored to use
    a raw mdio_device, like other phylink drivers do, but let's keep it like
    that for now). But unlike Felix, the MDIO bus and the PCS are not from
    the same vendor. The PCS is the same QorIQ/Layerscape PCS as found in
    Felix/ENETC/DPAA*, but the internal MDIO bus that is used to access it
    is actually an instantiation of drivers/net/phy/mdio-mscc-miim.c. But it
    would be difficult to reuse that driver (it doesn't even use regmap, and
    it's less than 200 lines of code), so we hand-roll here some internal
    MDIO bus accessors within seville_vsc9953.c, which serves the purpose of
    driving the PCS absolutely fine.
    
    Also, same as Felix, the PCS doesn't support dynamic reconfiguration of
    SerDes protocol, so we need to do pre-validation of PHY mode from device
    tree and not let phylink change it.
    Signed-off-by: default avatarMaxim Kochetkov <fido_max@inbox.ru>
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    84705fc1
seville_vsc9953.c 34.1 KB