xref: /linux/Documentation/devicetree/bindings/net/dsa/micrel,ks8995.yaml (revision 8be4d31cb8aaeea27bde4b7ddb26e28a89062ebf)
1*a0f29a07SLinus Walleij# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*a0f29a07SLinus Walleij%YAML 1.2
3*a0f29a07SLinus Walleij---
4*a0f29a07SLinus Walleij$id: http://devicetree.org/schemas/net/dsa/micrel,ks8995.yaml#
5*a0f29a07SLinus Walleij$schema: http://devicetree.org/meta-schemas/core.yaml#
6*a0f29a07SLinus Walleij
7*a0f29a07SLinus Walleijtitle: Micrel KS8995 Family DSA Switches
8*a0f29a07SLinus Walleij
9*a0f29a07SLinus Walleijmaintainers:
10*a0f29a07SLinus Walleij  - Linus Walleij <linus.walleij@linaro.org>
11*a0f29a07SLinus Walleij
12*a0f29a07SLinus Walleijdescription:
13*a0f29a07SLinus Walleij  The Micrel KS8995 DSA Switches are 100 Mbit switches that were produced in
14*a0f29a07SLinus Walleij  the early-to-mid 2000s. The chip features a CPU port and four outgoing ports,
15*a0f29a07SLinus Walleij  each with an internal PHY. The chip itself is managed over SPI, but all the
16*a0f29a07SLinus Walleij  PHYs need to be accessed from an external MDIO channel.
17*a0f29a07SLinus Walleij
18*a0f29a07SLinus Walleij  Further, a fifth PHY is available and can be used separately from the switch
19*a0f29a07SLinus Walleij  fabric, connected to an external MII interface name MII-P5. This is
20*a0f29a07SLinus Walleij  unrelated from the CPU-facing port 5 which is used for DSA MII traffic.
21*a0f29a07SLinus Walleij
22*a0f29a07SLinus Walleijproperties:
23*a0f29a07SLinus Walleij  compatible:
24*a0f29a07SLinus Walleij    enum:
25*a0f29a07SLinus Walleij      - micrel,ks8995
26*a0f29a07SLinus Walleij      - micrel,ksz8795
27*a0f29a07SLinus Walleij      - micrel,ksz8864
28*a0f29a07SLinus Walleij
29*a0f29a07SLinus Walleij  reg:
30*a0f29a07SLinus Walleij    maxItems: 1
31*a0f29a07SLinus Walleij
32*a0f29a07SLinus Walleij  reset-gpios:
33*a0f29a07SLinus Walleij    description: GPIO to be used to reset the whole device
34*a0f29a07SLinus Walleij    maxItems: 1
35*a0f29a07SLinus Walleij
36*a0f29a07SLinus WalleijallOf:
37*a0f29a07SLinus Walleij  - $ref: dsa.yaml#/$defs/ethernet-ports
38*a0f29a07SLinus Walleij  - $ref: /schemas/spi/spi-peripheral-props.yaml#
39*a0f29a07SLinus Walleij
40*a0f29a07SLinus Walleijrequired:
41*a0f29a07SLinus Walleij  - compatible
42*a0f29a07SLinus Walleij  - reg
43*a0f29a07SLinus Walleij
44*a0f29a07SLinus WalleijunevaluatedProperties: false
45*a0f29a07SLinus Walleij
46*a0f29a07SLinus Walleijexamples:
47*a0f29a07SLinus Walleij  - |
48*a0f29a07SLinus Walleij    #include <dt-bindings/gpio/gpio.h>
49*a0f29a07SLinus Walleij
50*a0f29a07SLinus Walleij    spi {
51*a0f29a07SLinus Walleij      #address-cells = <1>;
52*a0f29a07SLinus Walleij      #size-cells = <0>;
53*a0f29a07SLinus Walleij
54*a0f29a07SLinus Walleij      ethernet-switch@0 {
55*a0f29a07SLinus Walleij        compatible = "micrel,ks8995";
56*a0f29a07SLinus Walleij        reg = <0>;
57*a0f29a07SLinus Walleij        spi-max-frequency = <25000000>;
58*a0f29a07SLinus Walleij
59*a0f29a07SLinus Walleij        ethernet-ports {
60*a0f29a07SLinus Walleij          #address-cells = <1>;
61*a0f29a07SLinus Walleij          #size-cells = <0>;
62*a0f29a07SLinus Walleij
63*a0f29a07SLinus Walleij          ethernet-port@0 {
64*a0f29a07SLinus Walleij            reg = <0>;
65*a0f29a07SLinus Walleij            label = "lan1";
66*a0f29a07SLinus Walleij          };
67*a0f29a07SLinus Walleij          ethernet-port@1 {
68*a0f29a07SLinus Walleij            reg = <1>;
69*a0f29a07SLinus Walleij            label = "lan2";
70*a0f29a07SLinus Walleij          };
71*a0f29a07SLinus Walleij          ethernet-port@2 {
72*a0f29a07SLinus Walleij            reg = <2>;
73*a0f29a07SLinus Walleij            label = "lan3";
74*a0f29a07SLinus Walleij          };
75*a0f29a07SLinus Walleij          ethernet-port@3 {
76*a0f29a07SLinus Walleij            reg = <3>;
77*a0f29a07SLinus Walleij            label = "lan4";
78*a0f29a07SLinus Walleij          };
79*a0f29a07SLinus Walleij          ethernet-port@4 {
80*a0f29a07SLinus Walleij            reg = <4>;
81*a0f29a07SLinus Walleij            ethernet = <&mac2>;
82*a0f29a07SLinus Walleij            phy-mode = "mii";
83*a0f29a07SLinus Walleij            fixed-link {
84*a0f29a07SLinus Walleij              speed = <100>;
85*a0f29a07SLinus Walleij              full-duplex;
86*a0f29a07SLinus Walleij            };
87*a0f29a07SLinus Walleij          };
88*a0f29a07SLinus Walleij        };
89*a0f29a07SLinus Walleij      };
90*a0f29a07SLinus Walleij    };
91*a0f29a07SLinus Walleij
92*a0f29a07SLinus Walleij    soc {
93*a0f29a07SLinus Walleij      #address-cells = <1>;
94*a0f29a07SLinus Walleij      #size-cells = <1>;
95*a0f29a07SLinus Walleij
96*a0f29a07SLinus Walleij      /* The WAN port connected on MII-P5 */
97*a0f29a07SLinus Walleij      ethernet-port@1000 {
98*a0f29a07SLinus Walleij        reg = <0x00001000 0x1000>;
99*a0f29a07SLinus Walleij        label = "wan";
100*a0f29a07SLinus Walleij        phy-mode = "mii";
101*a0f29a07SLinus Walleij        phy-handle = <&phy5>;
102*a0f29a07SLinus Walleij      };
103*a0f29a07SLinus Walleij
104*a0f29a07SLinus Walleij      mac2: ethernet-port@2000 {
105*a0f29a07SLinus Walleij        reg = <0x00002000 0x1000>;
106*a0f29a07SLinus Walleij        phy-mode = "mii";
107*a0f29a07SLinus Walleij        fixed-link {
108*a0f29a07SLinus Walleij          speed = <100>;
109*a0f29a07SLinus Walleij          full-duplex;
110*a0f29a07SLinus Walleij        };
111*a0f29a07SLinus Walleij      };
112*a0f29a07SLinus Walleij    };
113*a0f29a07SLinus Walleij
114*a0f29a07SLinus Walleij    mdio {
115*a0f29a07SLinus Walleij      #address-cells = <1>;
116*a0f29a07SLinus Walleij      #size-cells = <0>;
117*a0f29a07SLinus Walleij
118*a0f29a07SLinus Walleij      /* LAN PHYs 1-4 accessible over external MDIO */
119*a0f29a07SLinus Walleij      phy1: ethernet-phy@1 {
120*a0f29a07SLinus Walleij        reg = <1>;
121*a0f29a07SLinus Walleij      };
122*a0f29a07SLinus Walleij      phy2: ethernet-phy@2 {
123*a0f29a07SLinus Walleij        reg = <2>;
124*a0f29a07SLinus Walleij      };
125*a0f29a07SLinus Walleij      phy3: ethernet-phy@3 {
126*a0f29a07SLinus Walleij        reg = <3>;
127*a0f29a07SLinus Walleij      };
128*a0f29a07SLinus Walleij      phy4: ethernet-phy@4 {
129*a0f29a07SLinus Walleij        reg = <4>;
130*a0f29a07SLinus Walleij      };
131*a0f29a07SLinus Walleij      /* WAN PHY accessible over external MDIO */
132*a0f29a07SLinus Walleij      phy5: ethernet-phy@5 {
133*a0f29a07SLinus Walleij        reg = <5>;
134*a0f29a07SLinus Walleij      };
135*a0f29a07SLinus Walleij    };
136