|
@@ -0,0 +1,153 @@
|
|
|
|
+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>;
|
|
|
|
+ };
|
|
|
|
+ };
|
|
|
|
+};
|