Add support for configuration and control of the VSC7511, VSC7512, VSC7513, and VSC7514 chips over a SPI interface. The intent is to control these chips from an external CPU. The expectation is to have most of the features of the net/ethernet/mscc/ocelot_vsc7514 driver. RFC history: v1 (accidentally named vN) Initial architecture. Not functional General concepts laid out v2 Near functional. No CPU port communication, but control over all external ports Cleaned up regmap implementation from v1 v3 Functional Shared MDIO transactions routed through mdio-mscc-miim CPU / NPI port enabled by way of vsc7512_enable_npi_port / felix->info->enable_npi_port NPI port tagging functional - Requires a CPU port driver that supports frames of 1520 bytes. Verified with a patch to the cpsw driver Colin Foster (10): net: dsa: ocelot: remove unnecessary pci_bar variables net: mdio: mscc-miim: convert to a regmap implementation net: dsa: ocelot: felix: switch to mdio-mscc-miim driver for indirect mdio access net: dsa: ocelot: felix: Remove requirement for PCS in felix devices net: dsa: ocelot: felix: add interface for custom regmaps net: mscc: ocelot: split register definitions to a separate file net: mscc: ocelot: expose ocelot wm functions net: mscc: ocelot: felix: add ability to enable a CPU / NPI port net: dsa: ocelot: felix: add support for VSC75XX control over SPI docs: devicetree: add documentation for the VSC7512 SPI device .../devicetree/bindings/net/dsa/ocelot.txt | 92 ++ drivers/net/dsa/ocelot/Kconfig | 14 + drivers/net/dsa/ocelot/Makefile | 7 + drivers/net/dsa/ocelot/felix.c | 11 +- drivers/net/dsa/ocelot/felix.h | 5 +- drivers/net/dsa/ocelot/felix_mdio.c | 52 + drivers/net/dsa/ocelot/felix_mdio.h | 12 + drivers/net/dsa/ocelot/felix_vsc9959.c | 11 +- drivers/net/dsa/ocelot/ocelot_vsc7512_spi.c | 1133 +++++++++++++++++ drivers/net/dsa/ocelot/seville_vsc9953.c | 109 +- drivers/net/ethernet/mscc/Makefile | 2 + drivers/net/ethernet/mscc/ocelot.c | 8 + drivers/net/ethernet/mscc/ocelot_regs.c | 309 +++++ drivers/net/ethernet/mscc/ocelot_vsc7514.c | 323 +---- drivers/net/ethernet/mscc/ocelot_wm.c | 39 + drivers/net/mdio/mdio-mscc-miim.c | 137 +- include/linux/mdio/mdio-mscc-miim.h | 19 + include/soc/mscc/ocelot.h | 24 + include/soc/mscc/ocelot_regs.h | 20 + 19 files changed, 1857 insertions(+), 470 deletions(-) create mode 100644 drivers/net/dsa/ocelot/felix_mdio.c create mode 100644 drivers/net/dsa/ocelot/felix_mdio.h create mode 100644 drivers/net/dsa/ocelot/ocelot_vsc7512_spi.c create mode 100644 drivers/net/ethernet/mscc/ocelot_regs.c create mode 100644 drivers/net/ethernet/mscc/ocelot_wm.c create mode 100644 include/linux/mdio/mdio-mscc-miim.h create mode 100644 include/soc/mscc/ocelot_regs.h -- 2.25.1