xref: /linux/Documentation/devicetree/bindings/net/mscc,vsc7514-switch.yaml (revision 0ea5c948cb64bab5bc7a5516774eb8536f05aa0d)
1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/net/mscc,vsc7514-switch.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Microchip VSC7514 Ethernet switch controller
8
9maintainers:
10  - Vladimir Oltean <vladimir.oltean@nxp.com>
11  - Claudiu Manoil <claudiu.manoil@nxp.com>
12  - Alexandre Belloni <alexandre.belloni@bootlin.com>
13
14description: |
15  Bindings for the Microchip VSC7514 switch driver
16
17  The VSC7514 switch driver handles up to 11 ports and can inject/extract
18  packets using CPU. Additionally, PTP is supported as well as FDMA for faster
19  packet extraction/injection.
20
21allOf:
22  - if:
23      properties:
24        compatible:
25          const: mscc,vsc7514-switch
26    then:
27      $ref: ethernet-switch.yaml#/$defs/ethernet-ports
28      required:
29        - interrupts
30        - interrupt-names
31      properties:
32        reg:
33          minItems: 21
34        reg-names:
35          minItems: 21
36
37  - if:
38      properties:
39        compatible:
40          const: mscc,vsc7512-switch
41    then:
42      $ref: /schemas/net/dsa/dsa.yaml#/$defs/ethernet-ports
43      properties:
44        reg:
45          maxItems: 20
46        reg-names:
47          maxItems: 20
48
49properties:
50  compatible:
51    enum:
52      - mscc,vsc7512-switch
53      - mscc,vsc7514-switch
54
55  reg:
56    minItems: 20
57    items:
58      - description: system target
59      - description: rewriter target
60      - description: qs target
61      - description: PTP target
62      - description: Port0 target
63      - description: Port1 target
64      - description: Port2 target
65      - description: Port3 target
66      - description: Port4 target
67      - description: Port5 target
68      - description: Port6 target
69      - description: Port7 target
70      - description: Port8 target
71      - description: Port9 target
72      - description: Port10 target
73      - description: QSystem target
74      - description: Analyzer target
75      - description: S0 target
76      - description: S1 target
77      - description: S2 target
78      - description: fdma target
79
80  reg-names:
81    minItems: 20
82    items:
83      - const: sys
84      - const: rew
85      - const: qs
86      - const: ptp
87      - const: port0
88      - const: port1
89      - const: port2
90      - const: port3
91      - const: port4
92      - const: port5
93      - const: port6
94      - const: port7
95      - const: port8
96      - const: port9
97      - const: port10
98      - const: qsys
99      - const: ana
100      - const: s0
101      - const: s1
102      - const: s2
103      - const: fdma
104
105  interrupts:
106    minItems: 1
107    items:
108      - description: PTP ready
109      - description: register based extraction
110      - description: frame dma based extraction
111
112  interrupt-names:
113    minItems: 1
114    items:
115      - const: ptp_rdy
116      - const: xtr
117      - const: fdma
118
119required:
120  - compatible
121  - reg
122  - reg-names
123  - ethernet-ports
124
125unevaluatedProperties: false
126
127examples:
128  # VSC7514 (Switchdev)
129  - |
130    switch@1010000 {
131      compatible = "mscc,vsc7514-switch";
132      reg = <0x1010000 0x10000>,
133            <0x1030000 0x10000>,
134            <0x1080000 0x100>,
135            <0x10e0000 0x10000>,
136            <0x11e0000 0x100>,
137            <0x11f0000 0x100>,
138            <0x1200000 0x100>,
139            <0x1210000 0x100>,
140            <0x1220000 0x100>,
141            <0x1230000 0x100>,
142            <0x1240000 0x100>,
143            <0x1250000 0x100>,
144            <0x1260000 0x100>,
145            <0x1270000 0x100>,
146            <0x1280000 0x100>,
147            <0x1800000 0x80000>,
148            <0x1880000 0x10000>,
149            <0x1040000 0x10000>,
150            <0x1050000 0x10000>,
151            <0x1060000 0x10000>,
152            <0x1a0 0x1c4>;
153      reg-names = "sys", "rew", "qs", "ptp", "port0", "port1",
154            "port2", "port3", "port4", "port5", "port6",
155            "port7", "port8", "port9", "port10", "qsys",
156            "ana", "s0", "s1", "s2", "fdma";
157      interrupts = <18 21 16>;
158      interrupt-names = "ptp_rdy", "xtr", "fdma";
159
160      ethernet-ports {
161        #address-cells = <1>;
162        #size-cells = <0>;
163
164        port0: port@0 {
165          reg = <0>;
166          phy-handle = <&phy0>;
167          phy-mode = "internal";
168        };
169        port1: port@1 {
170          reg = <1>;
171          phy-handle = <&phy1>;
172          phy-mode = "internal";
173        };
174      };
175    };
176  # VSC7512 (DSA)
177  - |
178    ethernet-switch@1 {
179      compatible = "mscc,vsc7512-switch";
180      reg = <0x71010000 0x10000>,
181            <0x71030000 0x10000>,
182            <0x71080000 0x100>,
183            <0x710e0000 0x10000>,
184            <0x711e0000 0x100>,
185            <0x711f0000 0x100>,
186            <0x71200000 0x100>,
187            <0x71210000 0x100>,
188            <0x71220000 0x100>,
189            <0x71230000 0x100>,
190            <0x71240000 0x100>,
191            <0x71250000 0x100>,
192            <0x71260000 0x100>,
193            <0x71270000 0x100>,
194            <0x71280000 0x100>,
195            <0x71800000 0x80000>,
196            <0x71880000 0x10000>,
197            <0x71040000 0x10000>,
198            <0x71050000 0x10000>,
199            <0x71060000 0x10000>;
200            reg-names = "sys", "rew", "qs", "ptp", "port0", "port1",
201            "port2", "port3", "port4", "port5", "port6",
202            "port7", "port8", "port9", "port10", "qsys",
203            "ana", "s0", "s1", "s2";
204
205      ethernet-ports {
206        #address-cells = <1>;
207        #size-cells = <0>;
208
209        port@0 {
210          reg = <0>;
211          ethernet = <&mac_sw>;
212          phy-handle = <&phy0>;
213          phy-mode = "internal";
214        };
215        port@1 {
216          reg = <1>;
217          phy-handle = <&phy1>;
218          phy-mode = "internal";
219        };
220      };
221    };
222
223...
224