xref: /linux/Documentation/devicetree/bindings/net/microchip,sparx5-switch.yaml (revision b8321ed4a40c02054f930ca59d3570caa27bc86c)
1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/net/microchip,sparx5-switch.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Microchip Sparx5 Ethernet switch controller
8
9maintainers:
10  - Steen Hegelund <steen.hegelund@microchip.com>
11  - Lars Povlsen <lars.povlsen@microchip.com>
12
13description: |
14  The SparX-5 Enterprise Ethernet switch family provides a rich set of
15  Enterprise switching features such as advanced TCAM-based VLAN and
16  QoS processing enabling delivery of differentiated services, and
17  security through TCAM-based frame processing using versatile content
18  aware processor (VCAP).
19
20  IPv4/IPv6 Layer 3 (L3) unicast and multicast routing is supported
21  with up to 18K IPv4/9K IPv6 unicast LPM entries and up to 9K IPv4/3K
22  IPv6 (S,G) multicast groups.
23
24  L3 security features include source guard and reverse path
25  forwarding (uRPF) tasks. Additional L3 features include VRF-Lite and
26  IP tunnels (IP over GRE/IP).
27
28  The SparX-5 switch family targets managed Layer 2 and Layer 3
29  equipment in SMB, SME, and Enterprise where high port count
30  1G/2.5G/5G/10G switching with 10G/25G aggregation links is required.
31
32properties:
33  $nodename:
34    pattern: "^switch@[0-9a-f]+$"
35
36  compatible:
37    const: microchip,sparx5-switch
38
39  reg:
40    items:
41      - description: cpu target
42      - description: devices target
43      - description: general control block target
44
45  reg-names:
46    items:
47      - const: cpu
48      - const: devices
49      - const: gcb
50
51  interrupts:
52    minItems: 1
53    items:
54      - description: register based extraction
55      - description: frame dma based extraction
56      - description: ptp interrupt
57
58  interrupt-names:
59    minItems: 1
60    items:
61      - const: xtr
62      - const: fdma
63      - const: ptp
64
65  resets:
66    items:
67      - description: Reset controller used for switch core reset (soft reset)
68
69  reset-names:
70    items:
71      - const: switch
72
73  mac-address: true
74
75  ethernet-ports:
76    type: object
77    patternProperties:
78      "^port@[0-9a-f]+$":
79        type: object
80
81        properties:
82          '#address-cells':
83            const: 1
84          '#size-cells':
85            const: 0
86
87          reg:
88            description: Switch port number
89
90          phys:
91            maxItems: 1
92            description:
93              phandle of a Ethernet SerDes PHY.  This defines which SerDes
94              instance will handle the Ethernet traffic.
95
96          phy-mode:
97            description:
98              This specifies the interface used by the Ethernet SerDes towards
99              the PHY or SFP.
100
101          microchip,bandwidth:
102            description: Specifies bandwidth in Mbit/s allocated to the port.
103            $ref: "/schemas/types.yaml#/definitions/uint32"
104            maximum: 25000
105
106          phy-handle:
107            description:
108              phandle of a Ethernet PHY.  This is optional and if provided it
109              points to the cuPHY used by the Ethernet SerDes.
110
111          sfp:
112            description:
113              phandle of an SFP.  This is optional and used when not specifying
114              a cuPHY.  It points to the SFP node that describes the SFP used by
115              the Ethernet SerDes.
116
117          managed: true
118
119          microchip,sd-sgpio:
120            description:
121              Index of the ports Signal Detect SGPIO in the set of 384 SGPIOs
122              This is optional, and only needed if the default used index is
123              is not correct.
124            $ref: "/schemas/types.yaml#/definitions/uint32"
125            minimum: 0
126            maximum: 383
127
128        required:
129          - reg
130          - phys
131          - phy-mode
132          - microchip,bandwidth
133
134        oneOf:
135          - required:
136              - phy-handle
137          - required:
138              - sfp
139              - managed
140
141required:
142  - compatible
143  - reg
144  - reg-names
145  - interrupts
146  - interrupt-names
147  - resets
148  - reset-names
149  - ethernet-ports
150
151additionalProperties: false
152
153examples:
154  - |
155    #include <dt-bindings/interrupt-controller/arm-gic.h>
156    switch: switch@600000000 {
157      compatible = "microchip,sparx5-switch";
158      reg =  <0 0x401000>,
159             <0x10004000 0x7fc000>,
160             <0x11010000 0xaf0000>;
161      reg-names = "cpu", "devices", "gcb";
162      interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
163      interrupt-names = "xtr";
164      resets = <&reset 0>;
165      reset-names = "switch";
166      ethernet-ports {
167        #address-cells = <1>;
168        #size-cells = <0>;
169
170        port0: port@0 {
171          reg = <0>;
172          microchip,bandwidth = <1000>;
173          phys = <&serdes 13>;
174          phy-handle = <&phy0>;
175          phy-mode = "qsgmii";
176        };
177        /* ... */
178        /* Then the 25G interfaces */
179        port60: port@60 {
180          reg = <60>;
181          microchip,bandwidth = <25000>;
182          phys = <&serdes 29>;
183          phy-mode = "10gbase-r";
184          sfp = <&sfp_eth60>;
185          managed = "in-band-status";
186          microchip,sd-sgpio = <365>;
187        };
188        port61: port@61 {
189          reg = <61>;
190          microchip,bandwidth = <25000>;
191          phys = <&serdes 30>;
192          phy-mode = "10gbase-r";
193          sfp = <&sfp_eth61>;
194          managed = "in-band-status";
195          microchip,sd-sgpio = <369>;
196        };
197        port62: port@62 {
198          reg = <62>;
199          microchip,bandwidth = <25000>;
200          phys = <&serdes 31>;
201          phy-mode = "10gbase-r";
202          sfp = <&sfp_eth62>;
203          managed = "in-band-status";
204          microchip,sd-sgpio = <373>;
205        };
206        port63: port@63 {
207          reg = <63>;
208          microchip,bandwidth = <25000>;
209          phys = <&serdes 32>;
210          phy-mode = "10gbase-r";
211          sfp = <&sfp_eth63>;
212          managed = "in-band-status";
213          microchip,sd-sgpio = <377>;
214        };
215        /* Finally the Management interface */
216        port64: port@64 {
217          reg = <64>;
218          microchip,bandwidth = <1000>;
219          phys = <&serdes 0>;
220          phy-handle = <&phy64>;
221          phy-mode = "sgmii";
222          mac-address = [ 00 00 00 01 02 03 ];
223        };
224      };
225    };
226
227...
228#  vim: set ts=2 sw=2 sts=2 tw=80 et cc=80 ft=yaml :
229