154 lines
3.5 KiB
Plaintext
154 lines
3.5 KiB
Plaintext
|
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>;
|
||
|
};
|
||
|
};
|
||
|
};
|