From: Vladimir Oltean <vladimir.olt...@nxp.com> Looking at the Felix and Ocelot drivers, Maxim asked if it would be possible to use them as a base for a new driver for the Seville switch inside NXP T1040. Turns out, it is! The result is that the mscc_felix driver was extended to probe on Seville.
The biggest challenge seems to be getting register read/write API generic enough to cover such wild bitfield variations between hardware generations. Currently, both felix and seville are built under the same kernel config option (NET_DSA_MSCC_FELIX). This has both some advantages (no need to duplicate the Lynx PCS code from felix_vsc9959.c) and some disadvantages (Seville needs to depend on PCI and on ENETC_MDIO). This will be further refined as time progresses. The driver has been completely reviewed. Previous submission was here, it wasn't accepted due to a conflict with Mark Brown's tree, very late in the release cycle: https://patchwork.ozlabs.org/project/netdev/cover/20200531122640.1375715-1-olte...@gmail.com/ So this is more of a repost, with the only changes being related to rebasing on top of the cleanup I had to do in Ocelot. Maxim Kochetkov (4): soc: mscc: ocelot: add MII registers description net: mscc: ocelot: convert SYS_PAUSE_CFG register access to regfield net: mscc: ocelot: extend watermark encoding function net: dsa: felix: introduce support for Seville VSC9953 switch Vladimir Oltean (7): net: mscc: ocelot: convert port registers to regmap net: mscc: ocelot: convert QSYS_SWITCH_PORT_MODE and SYS_PORT_MODE to regfields net: dsa: felix: create a template for the DSA tags on xmit net: mscc: ocelot: split writes to pause frame enable bit and to thresholds net: mscc: ocelot: disable flow control on NPI interface net: dsa: felix: move probing to felix_vsc9959.c docs: devicetree: add bindings for Seville DSA switch inside Felix driver .../devicetree/bindings/net/dsa/ocelot.txt | 105 +- drivers/net/dsa/ocelot/Kconfig | 12 +- drivers/net/dsa/ocelot/Makefile | 3 +- drivers/net/dsa/ocelot/felix.c | 232 +--- drivers/net/dsa/ocelot/felix.h | 28 +- drivers/net/dsa/ocelot/felix_vsc9959.c | 303 ++++- drivers/net/dsa/ocelot/seville_vsc9953.c | 1104 +++++++++++++++++ drivers/net/ethernet/mscc/ocelot.c | 73 +- drivers/net/ethernet/mscc/ocelot.h | 9 +- drivers/net/ethernet/mscc/ocelot_io.c | 18 +- drivers/net/ethernet/mscc/ocelot_net.c | 5 +- drivers/net/ethernet/mscc/ocelot_vsc7514.c | 82 +- include/soc/mscc/ocelot.h | 68 +- include/soc/mscc/ocelot_dev.h | 78 -- include/soc/mscc/ocelot_qsys.h | 13 - include/soc/mscc/ocelot_sys.h | 23 - net/dsa/tag_ocelot.c | 21 +- 17 files changed, 1767 insertions(+), 410 deletions(-) create mode 100644 drivers/net/dsa/ocelot/seville_vsc9953.c -- 2.25.1