This series adds a DSA driver for the Arrow SpeedChips XRS 7000 series of HSR/PRP gigabit switch chips. The chips use Flexibilis IP. More information can be found here: https://www.flexibilis.com/products/speedchips-xrs7000/ The switches have up to three RGMII ports and one MII port and are managed via mdio or i2c. They use a one byte trailing tag to identify the switch port when in managed mode so I've added a tag driver which implements this. This series contains minimal DSA functionality which may be built upon in future patches. The ultimate goal is to add HSR and PRP (IEC 62439-3 Clause 5 & 4) offloading with integration into net/hsr. Changes since v1: * Use central TX reallocation in tag driver. (Andrew Lunn) * Code style fixes. (Andrew Lunn, Vladimir Oltean) * Code simplifications. (Andrew Lunn, Vladimir Oltean) * Verify detected switch matches compatible. (Andrew Lunn) * Add inbound policy to allow BPDUs. (Andrew Lunn) * Move files into their own subdir. (Vladimir Oltean) * Automate regmap field allocation. (Vladimir Oltean) * Move setting link speed to .mac_link_up. (Vladimir Oltean) * Use different compatible strings for e/f variants. Changes since v2: * Export constant xrs700x_info symbols. (Jakub Kicinski) * Report stats via .get_stats64. (Jakub Kicinski, Vladimir Oltean) * Use a 3 second polling rate for counters. Changes since v3: * Builds against net-next now that get_stats64 commit has been merged. * Don't show status in devicetree examples. (Rob Herring) * Use ethernet-port(s) in devicetree examples. (Rob Herring) * Use strscpy() instead of strlcpy(). George McCollister (3): dsa: add support for Arrow XRS700x tag trailer net: dsa: add Arrow SpeedChips XRS700x driver dt-bindings: net: dsa: add bindings for xrs700x switches .../devicetree/bindings/net/dsa/arrow,xrs700x.yaml | 73 +++ drivers/net/dsa/Kconfig | 2 + drivers/net/dsa/Makefile | 1 + drivers/net/dsa/xrs700x/Kconfig | 26 + drivers/net/dsa/xrs700x/Makefile | 4 + drivers/net/dsa/xrs700x/xrs700x.c | 629 +++++++++++++++++++++ drivers/net/dsa/xrs700x/xrs700x.h | 42 ++ drivers/net/dsa/xrs700x/xrs700x_i2c.c | 150 +++++ drivers/net/dsa/xrs700x/xrs700x_mdio.c | 162 ++++++ drivers/net/dsa/xrs700x/xrs700x_reg.h | 205 +++++++ include/net/dsa.h | 2 + net/dsa/Kconfig | 6 + net/dsa/Makefile | 1 + net/dsa/tag_xrs700x.c | 67 +++ 14 files changed, 1370 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/dsa/arrow,xrs700x.yaml create mode 100644 drivers/net/dsa/xrs700x/Kconfig create mode 100644 drivers/net/dsa/xrs700x/Makefile create mode 100644 drivers/net/dsa/xrs700x/xrs700x.c create mode 100644 drivers/net/dsa/xrs700x/xrs700x.h create mode 100644 drivers/net/dsa/xrs700x/xrs700x_i2c.c create mode 100644 drivers/net/dsa/xrs700x/xrs700x_mdio.c create mode 100644 drivers/net/dsa/xrs700x/xrs700x_reg.h create mode 100644 net/dsa/tag_xrs700x.c -- 2.11.0