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#
28      required:
29        - interrupts
30        - interrupt-names
31      properties:
32        reg:
33          minItems: 21
34        reg-names:
35          minItems: 21
36        ethernet-ports:
37          patternProperties:
38            "^port@[0-9a-f]+$":
39              $ref: ethernet-switch-port.yaml#
40              unevaluatedProperties: false
41
42  - if:
43      properties:
44        compatible:
45          const: mscc,vsc7512-switch
46    then:
47      $ref: /schemas/net/dsa/dsa.yaml#
48      properties:
49        reg:
50          maxItems: 20
51        reg-names:
52          maxItems: 20
53        ethernet-ports:
54          patternProperties:
55            "^port@[0-9a-f]+$":
56              $ref: /schemas/net/dsa/dsa-port.yaml#
57              unevaluatedProperties: false
58
59properties:
60  compatible:
61    enum:
62      - mscc,vsc7512-switch
63      - mscc,vsc7514-switch
64
65  reg:
66    minItems: 20
67    items:
68      - description: system target
69      - description: rewriter target
70      - description: qs target
71      - description: PTP target
72      - description: Port0 target
73      - description: Port1 target
74      - description: Port2 target
75      - description: Port3 target
76      - description: Port4 target
77      - description: Port5 target
78      - description: Port6 target
79      - description: Port7 target
80      - description: Port8 target
81      - description: Port9 target
82      - description: Port10 target
83      - description: QSystem target
84      - description: Analyzer target
85      - description: S0 target
86      - description: S1 target
87      - description: S2 target
88      - description: fdma target
89
90  reg-names:
91    minItems: 20
92    items:
93      - const: sys
94      - const: rew
95      - const: qs
96      - const: ptp
97      - const: port0
98      - const: port1
99      - const: port2
100      - const: port3
101      - const: port4
102      - const: port5
103      - const: port6
104      - const: port7
105      - const: port8
106      - const: port9
107      - const: port10
108      - const: qsys
109      - const: ana
110      - const: s0
111      - const: s1
112      - const: s2
113      - const: fdma
114
115  interrupts:
116    minItems: 1
117    items:
118      - description: PTP ready
119      - description: register based extraction
120      - description: frame dma based extraction
121
122  interrupt-names:
123    minItems: 1
124    items:
125      - const: ptp_rdy
126      - const: xtr
127      - const: fdma
128
129required:
130  - compatible
131  - reg
132  - reg-names
133  - ethernet-ports
134
135unevaluatedProperties: false
136
137examples:
138  # VSC7514 (Switchdev)
139  - |
140    switch@1010000 {
141      compatible = "mscc,vsc7514-switch";
142      reg = <0x1010000 0x10000>,
143            <0x1030000 0x10000>,
144            <0x1080000 0x100>,
145            <0x10e0000 0x10000>,
146            <0x11e0000 0x100>,
147            <0x11f0000 0x100>,
148            <0x1200000 0x100>,
149            <0x1210000 0x100>,
150            <0x1220000 0x100>,
151            <0x1230000 0x100>,
152            <0x1240000 0x100>,
153            <0x1250000 0x100>,
154            <0x1260000 0x100>,
155            <0x1270000 0x100>,
156            <0x1280000 0x100>,
157            <0x1800000 0x80000>,
158            <0x1880000 0x10000>,
159            <0x1040000 0x10000>,
160            <0x1050000 0x10000>,
161            <0x1060000 0x10000>,
162            <0x1a0 0x1c4>;
163      reg-names = "sys", "rew", "qs", "ptp", "port0", "port1",
164            "port2", "port3", "port4", "port5", "port6",
165            "port7", "port8", "port9", "port10", "qsys",
166            "ana", "s0", "s1", "s2", "fdma";
167      interrupts = <18 21 16>;
168      interrupt-names = "ptp_rdy", "xtr", "fdma";
169
170      ethernet-ports {
171        #address-cells = <1>;
172        #size-cells = <0>;
173
174        port0: port@0 {
175          reg = <0>;
176          phy-handle = <&phy0>;
177          phy-mode = "internal";
178        };
179        port1: port@1 {
180          reg = <1>;
181          phy-handle = <&phy1>;
182          phy-mode = "internal";
183        };
184      };
185    };
186  # VSC7512 (DSA)
187  - |
188    ethernet-switch@1{
189      compatible = "mscc,vsc7512-switch";
190      reg = <0x71010000 0x10000>,
191            <0x71030000 0x10000>,
192            <0x71080000 0x100>,
193            <0x710e0000 0x10000>,
194            <0x711e0000 0x100>,
195            <0x711f0000 0x100>,
196            <0x71200000 0x100>,
197            <0x71210000 0x100>,
198            <0x71220000 0x100>,
199            <0x71230000 0x100>,
200            <0x71240000 0x100>,
201            <0x71250000 0x100>,
202            <0x71260000 0x100>,
203            <0x71270000 0x100>,
204            <0x71280000 0x100>,
205            <0x71800000 0x80000>,
206            <0x71880000 0x10000>,
207            <0x71040000 0x10000>,
208            <0x71050000 0x10000>,
209            <0x71060000 0x10000>;
210            reg-names = "sys", "rew", "qs", "ptp", "port0", "port1",
211            "port2", "port3", "port4", "port5", "port6",
212            "port7", "port8", "port9", "port10", "qsys",
213            "ana", "s0", "s1", "s2";
214
215            ethernet-ports {
216            #address-cells = <1>;
217            #size-cells = <0>;
218
219           port@0 {
220            reg = <0>;
221            ethernet = <&mac_sw>;
222            phy-handle = <&phy0>;
223            phy-mode = "internal";
224          };
225          port@1 {
226            reg = <1>;
227            phy-handle = <&phy1>;
228            phy-mode = "internal";
229          };
230        };
231      };
232
233...
234