Hi folks, I'm working a bit on this. Since DSA is big, complex and hard for a novice I just wanted to throw what I have in my tree out there so you can take a look at how I hacked this up and give me some help how to continue.
I am running it for trials on the D-Link DIR-685 and it looks fun, but my ethernet driver for Gemini is not yet working so I cannot really do proper testing. I'll get there I guess. Example from dmesg: realtek-smi 0.switch: deasserted RESET realtek-smi 0.switch: found an RTL8366RB switch DSA: switch 0 0 parsed DSA: tree 0 parsed realtek-smi 0.switch: RTL5937 ver 3 chip found realtek-smi 0.switch: active low/falling IRQ realtek-smi 0.switch: set MAC: CE:32:3B:FB:58:13 libphy: dsa slave smi: probed RTL8366RB Gigabit Ethernet dsa-0.0:00: attached PHY driver [RTL8366RB Gigabit Ethernet] (mii_bus:phy_addr=dsa-0.0:00, irq=37) RTL8366RB Gigabit Ethernet dsa-0.0:01: attached PHY driver [RTL8366RB Gigabit Ethernet] (mii_bus:phy_addr=dsa-0.0:01, irq=38) RTL8366RB Gigabit Ethernet dsa-0.0:02: attached PHY driver [RTL8366RB Gigabit Ethernet] (mii_bus:phy_addr=dsa-0.0:02, irq=39) RTL8366RB Gigabit Ethernet dsa-0.0:03: attached PHY driver [RTL8366RB Gigabit Ethernet] (mii_bus:phy_addr=dsa-0.0:03, irq=40) RTL8366RB Gigabit Ethernet dsa-0.0:04: attached PHY driver [RTL8366RB Gigabit Ethernet] (mii_bus:phy_addr=dsa-0.0:04, irq=41) realtek-smi 0.switch: adjust link on CPU port gmac-gemini 60000000.ethernet eth0: connected to PHY "fixed-0:00" Generic PHY fixed-0:00: attached PHY driver [Generic PHY] (mii_bus:phy_addr=fixed-0:00, irq=POLL) phy_id=0x00000000, phy_mode=rgmii gmac-gemini 60000000.ethernet: set GMAC0 and GMAC1 to MII/RGMII mode gmac-gemini 60000000.ethernet eth0: connect to RGMII gmac-gemini 60000000.ethernet eth0: opened IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready realtek-smi 0.switch: enable port 0 IPv6: ADDRCONF(NETDEV_UP): lan0: link is not ready realtek-smi 0.switch lan0: Link is Down realtek-smi 0.switch lan0: Link is Up - 1Gbps/Full - flow control rx/tx IPv6: ADDRCONF(NETDEV_CHANGE): lan0: link becomes ready cat /proc/interrupts 36: 6 FTGPIO010 15 Level RTL8366RB 37: 3 RTL8366RB 0 Edge dsa-0.0:00 38: 0 RTL8366RB 1 Edge dsa-0.0:01 39: 2 RTL8366RB 2 Edge dsa-0.0:02 40: 2 RTL8366RB 3 Edge dsa-0.0:03 41: 0 RTL8366RB 4 Edge dsa-0.0:04 Plugged some cables in/out. Hooray, no polling needed. Linus Walleij (4): RFC: net/dsa: Allow DSA PHYs to define link IRQs RFC: net: phy: realtek: Support RTL8366RB variant RFC: net: dsa: Add bindings for Realtek SMI DSAs RFC: net: dsa: realtek-smi: Add Realtek SMI driver .../devicetree/bindings/net/dsa/realtek-smi.txt | 104 ++ drivers/net/dsa/Kconfig | 12 + drivers/net/dsa/Makefile | 2 + drivers/net/dsa/realtek-smi.c | 436 ++++++++ drivers/net/dsa/realtek-smi.h | 145 +++ drivers/net/dsa/rtl8366.c | 493 +++++++++ drivers/net/dsa/rtl8366rb.c | 1103 ++++++++++++++++++++ drivers/net/phy/realtek.c | 32 + net/dsa/slave.c | 8 + 9 files changed, 2335 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/dsa/realtek-smi.txt create mode 100644 drivers/net/dsa/realtek-smi.c create mode 100644 drivers/net/dsa/realtek-smi.h create mode 100644 drivers/net/dsa/rtl8366.c create mode 100644 drivers/net/dsa/rtl8366rb.c -- 2.13.6