# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause %YAML 1.2 --- $id: http://devicetree.org/schemas/net/microchip,sparx5-switch.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Microchip Sparx5 Ethernet switch controller maintainers: - Steen Hegelund <steen.hegelund@microchip.com> - Lars Povlsen <lars.povlsen@microchip.com> description: | The SparX-5 Enterprise Ethernet switch family provides a rich set of Enterprise switching features such as advanced TCAM-based VLAN and QoS processing enabling delivery of differentiated services, and security through TCAM-based frame processing using versatile content aware processor (VCAP). IPv4/IPv6 Layer 3 (L3) unicast and multicast routing is supported with up to 18K IPv4/9K IPv6 unicast LPM entries and up to 9K IPv4/3K IPv6 (S,G) multicast groups. L3 security features include source guard and reverse path forwarding (uRPF) tasks. Additional L3 features include VRF-Lite and IP tunnels (IP over GRE/IP). The SparX-5 switch family targets managed Layer 2 and Layer 3 equipment in SMB, SME, and Enterprise where high port count 1G/2.5G/5G/10G switching with 10G/25G aggregation links is required. properties: $nodename: pattern: "^switch@[0-9a-f]+$" compatible: const: microchip,sparx5-switch reg: items: - description: cpu target - description: devices target - description: general control block target reg-names: items: - const: cpu - const: devices - const: gcb interrupts: minItems: 1 items: - description: register based extraction - description: frame dma based extraction - description: ptp interrupt interrupt-names: minItems: 1 items: - const: xtr - const: fdma - const: ptp resets: items: - description: Reset controller used for switch core reset (soft reset) reset-names: items: - const: switch mac-address: true ethernet-ports: type: object additionalProperties: false properties: '#address-cells': const: 1 '#size-cells': const: 0 patternProperties: "^port@[0-9a-f]+$": $ref: /schemas/net/ethernet-controller.yaml# unevaluatedProperties: false properties: reg: description: Switch port number phys: maxItems: 1 description: phandle of a Ethernet SerDes PHY. This defines which SerDes instance will handle the Ethernet traffic. microchip,bandwidth: description: Specifies bandwidth in Mbit/s allocated to the port. $ref: /schemas/types.yaml#/definitions/uint32 maximum: 25000 microchip,sd-sgpio: description: Index of the ports Signal Detect SGPIO in the set of 384 SGPIOs This is optional, and only needed if the default used index is is not correct. $ref: /schemas/types.yaml#/definitions/uint32 minimum: 0 maximum: 383 required: - reg - phys - phy-mode - microchip,bandwidth oneOf: - required: - phy-handle - required: - sfp - managed required: - compatible - reg - reg-names - interrupts - interrupt-names - ethernet-ports additionalProperties: false examples: - | #include <dt-bindings/interrupt-controller/arm-gic.h> switch: switch@600000000 { compatible = "microchip,sparx5-switch"; reg = <0 0x401000>, <0x10004000 0x7fc000>, <0x11010000 0xaf0000>; reg-names = "cpu", "devices", "gcb"; interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "xtr"; resets = <&reset 0>; reset-names = "switch"; ethernet-ports { #address-cells = <1>; #size-cells = <0>; port0: port@0 { reg = <0>; microchip,bandwidth = <1000>; phys = <&serdes 13>; phy-handle = <&phy0>; phy-mode = "qsgmii"; }; /* ... */ /* Then the 25G interfaces */ port60: port@60 { reg = <60>; microchip,bandwidth = <25000>; phys = <&serdes 29>; phy-mode = "10gbase-r"; sfp = <&sfp_eth60>; managed = "in-band-status"; microchip,sd-sgpio = <365>; }; port61: port@61 { reg = <61>; microchip,bandwidth = <25000>; phys = <&serdes 30>; phy-mode = "10gbase-r"; sfp = <&sfp_eth61>; managed = "in-band-status"; microchip,sd-sgpio = <369>; }; port62: port@62 { reg = <62>; microchip,bandwidth = <25000>; phys = <&serdes 31>; phy-mode = "10gbase-r"; sfp = <&sfp_eth62>; managed = "in-band-status"; microchip,sd-sgpio = <373>; }; port63: port@63 { reg = <63>; microchip,bandwidth = <25000>; phys = <&serdes 32>; phy-mode = "10gbase-r"; sfp = <&sfp_eth63>; managed = "in-band-status"; microchip,sd-sgpio = <377>; }; /* Finally the Management interface */ port64: port@64 { reg = <64>; microchip,bandwidth = <1000>; phys = <&serdes 0>; phy-handle = <&phy64>; phy-mode = "sgmii"; mac-address = [ 00 00 00 01 02 03 ]; }; }; }; ... # vim: set ts=2 sw=2 sts=2 tw=80 et cc=80 ft=yaml :