1# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mfd/mscc,ocelot.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Ocelot Externally-Controlled Ethernet Switch
8
9maintainers:
10  - Colin Foster <colin.foster@in-advantage.com>
11
12description: |
13  The Ocelot ethernet switch family contains chips that have an internal CPU
14  (VSC7513, VSC7514) and chips that don't (VSC7511, VSC7512). All switches have
15  the option to be controlled externally via external interfaces like SPI or
16  PCIe.
17
18  The switch family is a multi-port networking switch that supports many
19  interfaces. Additionally, the device can perform pin control, MDIO buses, and
20  external GPIO expanders.
21
22properties:
23  compatible:
24    enum:
25      - mscc,vsc7512
26
27  reg:
28    maxItems: 1
29
30  "#address-cells":
31    const: 1
32
33  "#size-cells":
34    const: 1
35
36  spi-max-frequency:
37    maxItems: 1
38
39patternProperties:
40  "^pinctrl@[0-9a-f]+$":
41    type: object
42    $ref: /schemas/pinctrl/mscc,ocelot-pinctrl.yaml
43
44  "^gpio@[0-9a-f]+$":
45    type: object
46    $ref: /schemas/pinctrl/microchip,sparx5-sgpio.yaml
47    properties:
48      compatible:
49        enum:
50          - mscc,ocelot-sgpio
51
52  "^mdio@[0-9a-f]+$":
53    type: object
54    $ref: /schemas/net/mscc,miim.yaml
55    properties:
56      compatible:
57        enum:
58          - mscc,ocelot-miim
59
60required:
61  - compatible
62  - reg
63  - '#address-cells'
64  - '#size-cells'
65
66additionalProperties: false
67
68examples:
69  - |
70    ocelot_clock: ocelot-clock {
71          compatible = "fixed-clock";
72          #clock-cells = <0>;
73          clock-frequency = <125000000>;
74      };
75
76    spi {
77        #address-cells = <1>;
78        #size-cells = <0>;
79
80        soc@0 {
81            compatible = "mscc,vsc7512";
82            spi-max-frequency = <2500000>;
83            reg = <0>;
84            #address-cells = <1>;
85            #size-cells = <1>;
86
87            mdio@7107009c {
88                compatible = "mscc,ocelot-miim";
89                #address-cells = <1>;
90                #size-cells = <0>;
91                reg = <0x7107009c 0x24>;
92
93                sw_phy0: ethernet-phy@0 {
94                    reg = <0x0>;
95                };
96            };
97
98            mdio@710700c0 {
99                compatible = "mscc,ocelot-miim";
100                pinctrl-names = "default";
101                pinctrl-0 = <&miim1_pins>;
102                #address-cells = <1>;
103                #size-cells = <0>;
104                reg = <0x710700c0 0x24>;
105
106                sw_phy4: ethernet-phy@4 {
107                    reg = <0x4>;
108                };
109            };
110
111            gpio: pinctrl@71070034 {
112                compatible = "mscc,ocelot-pinctrl";
113                gpio-controller;
114                #gpio-cells = <2>;
115                gpio-ranges = <&gpio 0 0 22>;
116                reg = <0x71070034 0x6c>;
117
118                sgpio_pins: sgpio-pins {
119                    pins = "GPIO_0", "GPIO_1", "GPIO_2", "GPIO_3";
120                    function = "sg0";
121                };
122
123                miim1_pins: miim1-pins {
124                    pins = "GPIO_14", "GPIO_15";
125                    function = "miim";
126                };
127            };
128
129            gpio@710700f8 {
130                compatible = "mscc,ocelot-sgpio";
131                #address-cells = <1>;
132                #size-cells = <0>;
133                bus-frequency = <12500000>;
134                clocks = <&ocelot_clock>;
135                microchip,sgpio-port-ranges = <0 15>;
136                pinctrl-names = "default";
137                pinctrl-0 = <&sgpio_pins>;
138                reg = <0x710700f8 0x100>;
139
140                sgpio_in0: gpio@0 {
141                    compatible = "microchip,sparx5-sgpio-bank";
142                    reg = <0>;
143                    gpio-controller;
144                    #gpio-cells = <3>;
145                    ngpios = <64>;
146                };
147
148                sgpio_out1: gpio@1 {
149                    compatible = "microchip,sparx5-sgpio-bank";
150                    reg = <1>;
151                    gpio-controller;
152                    #gpio-cells = <3>;
153                    ngpios = <64>;
154                };
155            };
156        };
157    };
158
159...
160
161