--- /dev/null
+Realtek SMI-based Switches
+==========================
+
+The SMI "Simple Management Interface" is a two-wire protocol using
+bit-banged GPIO that while it reuses the MDIO lines MCK and MDIO does
+not use the MDIO protocol. This binding defines how to specify the
+SMI-based Realtek devices.
+
+Required properties:
+
+- compatible: must be exactly one of:
+      "realtek,rtl8366"
+      "realtek,rtl8366rb" (4+1 ports)
+      "realtek,rtl8366s"  (4+1 ports)
+      "realtek,rtl8367"
+      "realtek,rtl8367b"
+      "realtek,rtl8368s"  (8 port)
+      "realtek,rtl8369"
+      "realtek,rtl8370"   (8 port)
+
+Required properties:
+- mdc-gpios: GPIO line for the MDC clock line.
+- mdio-gpios: GPIO line for the MDIO data line.
+- reset-gpios: GPIO line for the reset signal.
+
+Optional properties:
+- realtek,disable-leds: if the LED drivers are not used in the
+  hardware design this will disable them so they are not turned on
+  and wasting power.
+
+Required subnodes:
+
+- interrupt-controller
+
+  This defines an interrupt controller with an IRQ line (typically
+  a GPIO) that will demultiplex and handle the interrupt from the single
+  interrupt line coming out of one of the SMI-based chips. It most
+  importantly provides link up/down interrupts to the PHY blocks inside
+  the ASIC.
+
+Required properties of interrupt-controller:
+
+- interrupt: parent interrupt, see interrupt-controller/interrupts.txt
+- interrupt-controller: see interrupt-controller/interrupts.txt
+- #address-cells: should be <0>
+- #interrupt-cells: should be <1>
+
+- mdio
+
+  This defines the internal MDIO bus of the SMI device, mostly for the
+  purpose of being able to hook the interrupts to the right PHY and
+  the right PHY to the corresponding port.
+
+Required properties of mdio:
+
+- compatible: should be set to "realtek,smi-mdio" for all SMI devices
+
+See net/mdio.txt for additional MDIO bus properties.
+
+See net/dsa/dsa.txt for a list of additional required and optional properties
+and subnodes of DSA switches.
+
+Examples:
+
+switch {
+       compatible = "realtek,rtl8366rb";
+       /* 22 = MDIO (has input reads), 21 = MDC (clock, output only) */
+       mdc-gpios = <&gpio0 21 GPIO_ACTIVE_HIGH>;
+       mdio-gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>;
+       reset-gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
+
+       switch_intc: interrupt-controller {
+               /* GPIO 15 provides the interrupt */
+               interrupt-parent = <&gpio0>;
+               interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-controller;
+               #address-cells = <0>;
+               #interrupt-cells = <1>;
+       };
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0>;
+               port@0 {
+                       reg = <0>;
+                       label = "lan0";
+                       phy-handle = <&phy0>;
+               };
+               port@1 {
+                       reg = <1>;
+                       label = "lan1";
+                       phy-handle = <&phy1>;
+               };
+               port@2 {
+                       reg = <2>;
+                       label = "lan2";
+                       phy-handle = <&phy2>;
+               };
+               port@3 {
+                       reg = <3>;
+                       label = "lan3";
+                       phy-handle = <&phy3>;
+               };
+               port@4 {
+                       reg = <4>;
+                       label = "wan";
+                       phy-handle = <&phy4>;
+               };
+               port@5 {
+                       reg = <5>;
+                       label = "cpu";
+                       ethernet = <&gmac0>;
+                       phy-mode = "rgmii";
+                       fixed-link {
+                               speed = <1000>;
+                               full-duplex;
+                       };
+               };
+       };
+
+       mdio {
+               compatible = "realtek,smi-mdio", "dsa-mdio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               phy0: phy@0 {
+                       reg = <0>;
+                       interrupt-parent = <&switch_intc>;
+                       interrupts = <0>;
+               };
+               phy1: phy@1 {
+                       reg = <1>;
+                       interrupt-parent = <&switch_intc>;
+                       interrupts = <1>;
+               };
+               phy2: phy@2 {
+                       reg = <2>;
+                       interrupt-parent = <&switch_intc>;
+                       interrupts = <2>;
+               };
+               phy3: phy@3 {
+                       reg = <3>;
+                       interrupt-parent = <&switch_intc>;
+                       interrupts = <3>;
+               };
+               phy4: phy@4 {
+                       reg = <4>;
+                       interrupt-parent = <&switch_intc>;
+                       interrupts = <12>;
+               };
+       };
+};