2021-06-24 09:07:49 +02:00
# 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
2022-03-04 12:08:53 +01:00
- description : ptp interrupt
2021-06-24 09:07:49 +02:00
interrupt-names :
minItems : 1
items :
- const : xtr
- const : fdma
2022-03-04 12:08:53 +01:00
- const : ptp
2021-06-24 09:07:49 +02:00
resets :
items :
- description : Reset controller used for switch core reset (soft reset)
reset-names :
items :
- const : switch
mac-address : true
ethernet-ports :
type : object
2022-08-25 14:26:07 -05:00
additionalProperties : false
properties :
'#address-cells' :
const : 1
'#size-cells' :
const : 0
2021-06-24 09:07:49 +02:00
patternProperties :
"^port@[0-9a-f]+$" :
2022-08-25 14:26:07 -05:00
$ref : /schemas/net/ethernet-controller.yaml#
unevaluatedProperties : false
2021-06-24 09:07:49 +02:00
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.
2023-03-20 18:37:54 -05:00
$ref : /schemas/types.yaml#/definitions/uint32
2021-06-24 09:07:49 +02:00
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.
2023-03-20 18:37:54 -05:00
$ref : /schemas/types.yaml#/definitions/uint32
2021-06-24 09:07:49 +02:00
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 :