On Thu, 28 May 2020 at 19:21, Jakub Kicinski <k...@kernel.org> wrote: > > On Thu, 28 May 2020 02:41:13 +0300 Vladimir Oltean wrote: > > From: Maxim Kochetkov <fido_...@inbox.ru> > > > > This is a 10-port (8 external, 2 internal) switch from > > Vitesse/Microsemi/Microchip that is integrated into the Freescale/NXP > > T1040 PowerPC SoC. The situation is very similar to Felix from NXP > > LS1028A, except that this is a platform device and Felix is a PCI > > device. > > > > Extending the Felix driver to probe a PCI as well as a platform device > > would have introduced unnecessary complexity. The 'meat' of both drivers > > is in drivers/net/ethernet/mscc/ocelot*.c anyway, so let's just > > duplicate the Felix driver, s/Felix/Seville/, and define the low-level > > bits in seville_vsc9953.c. > > > > 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: Maxim Kochetkov <fido_...@inbox.ru> > > Signed-off-by: Vladimir Oltean <vladimir.olt...@nxp.com> > > drivers/net/dsa/ocelot/seville_vsc9953.c:636:19: warning: symbol > 'vsc9953_vcap_is2_keys' was not declared. Should it be static? > drivers/net/dsa/ocelot/seville_vsc9953.c:706:19: warning: symbol > 'vsc9953_vcap_is2_actions' was not declared. Should it be static?
Rhetorical question...