xref: /freebsd/sys/contrib/device-tree/Bindings/net/microchip,sparx5-switch.yaml (revision fac71e4e09885bb2afa3d984a0c239a52e1a7418)
15956d97fSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
25956d97fSEmmanuel Vadot%YAML 1.2
35956d97fSEmmanuel Vadot---
45956d97fSEmmanuel Vadot$id: http://devicetree.org/schemas/net/microchip,sparx5-switch.yaml#
55956d97fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
65956d97fSEmmanuel Vadot
75956d97fSEmmanuel Vadottitle: Microchip Sparx5 Ethernet switch controller
85956d97fSEmmanuel Vadot
95956d97fSEmmanuel Vadotmaintainers:
105956d97fSEmmanuel Vadot  - Steen Hegelund <steen.hegelund@microchip.com>
115956d97fSEmmanuel Vadot  - Lars Povlsen <lars.povlsen@microchip.com>
125956d97fSEmmanuel Vadot
135956d97fSEmmanuel Vadotdescription: |
145956d97fSEmmanuel Vadot  The SparX-5 Enterprise Ethernet switch family provides a rich set of
155956d97fSEmmanuel Vadot  Enterprise switching features such as advanced TCAM-based VLAN and
165956d97fSEmmanuel Vadot  QoS processing enabling delivery of differentiated services, and
175956d97fSEmmanuel Vadot  security through TCAM-based frame processing using versatile content
185956d97fSEmmanuel Vadot  aware processor (VCAP).
195956d97fSEmmanuel Vadot
205956d97fSEmmanuel Vadot  IPv4/IPv6 Layer 3 (L3) unicast and multicast routing is supported
215956d97fSEmmanuel Vadot  with up to 18K IPv4/9K IPv6 unicast LPM entries and up to 9K IPv4/3K
225956d97fSEmmanuel Vadot  IPv6 (S,G) multicast groups.
235956d97fSEmmanuel Vadot
245956d97fSEmmanuel Vadot  L3 security features include source guard and reverse path
255956d97fSEmmanuel Vadot  forwarding (uRPF) tasks. Additional L3 features include VRF-Lite and
265956d97fSEmmanuel Vadot  IP tunnels (IP over GRE/IP).
275956d97fSEmmanuel Vadot
285956d97fSEmmanuel Vadot  The SparX-5 switch family targets managed Layer 2 and Layer 3
295956d97fSEmmanuel Vadot  equipment in SMB, SME, and Enterprise where high port count
305956d97fSEmmanuel Vadot  1G/2.5G/5G/10G switching with 10G/25G aggregation links is required.
315956d97fSEmmanuel Vadot
325956d97fSEmmanuel Vadotproperties:
335956d97fSEmmanuel Vadot  $nodename:
345956d97fSEmmanuel Vadot    pattern: "^switch@[0-9a-f]+$"
355956d97fSEmmanuel Vadot
365956d97fSEmmanuel Vadot  compatible:
375956d97fSEmmanuel Vadot    const: microchip,sparx5-switch
385956d97fSEmmanuel Vadot
395956d97fSEmmanuel Vadot  reg:
405956d97fSEmmanuel Vadot    items:
415956d97fSEmmanuel Vadot      - description: cpu target
425956d97fSEmmanuel Vadot      - description: devices target
435956d97fSEmmanuel Vadot      - description: general control block target
445956d97fSEmmanuel Vadot
455956d97fSEmmanuel Vadot  reg-names:
465956d97fSEmmanuel Vadot    items:
475956d97fSEmmanuel Vadot      - const: cpu
485956d97fSEmmanuel Vadot      - const: devices
495956d97fSEmmanuel Vadot      - const: gcb
505956d97fSEmmanuel Vadot
515956d97fSEmmanuel Vadot  interrupts:
525956d97fSEmmanuel Vadot    minItems: 1
535956d97fSEmmanuel Vadot    items:
545956d97fSEmmanuel Vadot      - description: register based extraction
555956d97fSEmmanuel Vadot      - description: frame dma based extraction
56c9ccf3a3SEmmanuel Vadot      - description: ptp interrupt
575956d97fSEmmanuel Vadot
585956d97fSEmmanuel Vadot  interrupt-names:
595956d97fSEmmanuel Vadot    minItems: 1
605956d97fSEmmanuel Vadot    items:
615956d97fSEmmanuel Vadot      - const: xtr
625956d97fSEmmanuel Vadot      - const: fdma
63c9ccf3a3SEmmanuel Vadot      - const: ptp
645956d97fSEmmanuel Vadot
655956d97fSEmmanuel Vadot  resets:
665956d97fSEmmanuel Vadot    items:
675956d97fSEmmanuel Vadot      - description: Reset controller used for switch core reset (soft reset)
685956d97fSEmmanuel Vadot
695956d97fSEmmanuel Vadot  reset-names:
705956d97fSEmmanuel Vadot    items:
715956d97fSEmmanuel Vadot      - const: switch
725956d97fSEmmanuel Vadot
735956d97fSEmmanuel Vadot  mac-address: true
745956d97fSEmmanuel Vadot
755956d97fSEmmanuel Vadot  ethernet-ports:
765956d97fSEmmanuel Vadot    type: object
777ef62cebSEmmanuel Vadot    additionalProperties: false
785956d97fSEmmanuel Vadot
795956d97fSEmmanuel Vadot    properties:
805956d97fSEmmanuel Vadot      '#address-cells':
815956d97fSEmmanuel Vadot        const: 1
825956d97fSEmmanuel Vadot      '#size-cells':
835956d97fSEmmanuel Vadot        const: 0
845956d97fSEmmanuel Vadot
857ef62cebSEmmanuel Vadot    patternProperties:
867ef62cebSEmmanuel Vadot      "^port@[0-9a-f]+$":
877ef62cebSEmmanuel Vadot        $ref: /schemas/net/ethernet-controller.yaml#
887ef62cebSEmmanuel Vadot        unevaluatedProperties: false
897ef62cebSEmmanuel Vadot
907ef62cebSEmmanuel Vadot        properties:
915956d97fSEmmanuel Vadot          reg:
925956d97fSEmmanuel Vadot            description: Switch port number
935956d97fSEmmanuel Vadot
945956d97fSEmmanuel Vadot          phys:
955956d97fSEmmanuel Vadot            maxItems: 1
965956d97fSEmmanuel Vadot            description:
975956d97fSEmmanuel Vadot              phandle of a Ethernet SerDes PHY.  This defines which SerDes
985956d97fSEmmanuel Vadot              instance will handle the Ethernet traffic.
995956d97fSEmmanuel Vadot
1005956d97fSEmmanuel Vadot          microchip,bandwidth:
1015956d97fSEmmanuel Vadot            description: Specifies bandwidth in Mbit/s allocated to the port.
102*fac71e4eSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/uint32
1035956d97fSEmmanuel Vadot            maximum: 25000
1045956d97fSEmmanuel Vadot
1055956d97fSEmmanuel Vadot          microchip,sd-sgpio:
1065956d97fSEmmanuel Vadot            description:
1075956d97fSEmmanuel Vadot              Index of the ports Signal Detect SGPIO in the set of 384 SGPIOs
1085956d97fSEmmanuel Vadot              This is optional, and only needed if the default used index is
1095956d97fSEmmanuel Vadot              is not correct.
110*fac71e4eSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/uint32
1115956d97fSEmmanuel Vadot            minimum: 0
1125956d97fSEmmanuel Vadot            maximum: 383
1135956d97fSEmmanuel Vadot
1145956d97fSEmmanuel Vadot        required:
1155956d97fSEmmanuel Vadot          - reg
1165956d97fSEmmanuel Vadot          - phys
1175956d97fSEmmanuel Vadot          - phy-mode
1185956d97fSEmmanuel Vadot          - microchip,bandwidth
1195956d97fSEmmanuel Vadot
1205956d97fSEmmanuel Vadot        oneOf:
1215956d97fSEmmanuel Vadot          - required:
1225956d97fSEmmanuel Vadot              - phy-handle
1235956d97fSEmmanuel Vadot          - required:
1245956d97fSEmmanuel Vadot              - sfp
1255956d97fSEmmanuel Vadot              - managed
1265956d97fSEmmanuel Vadot
1275956d97fSEmmanuel Vadotrequired:
1285956d97fSEmmanuel Vadot  - compatible
1295956d97fSEmmanuel Vadot  - reg
1305956d97fSEmmanuel Vadot  - reg-names
1315956d97fSEmmanuel Vadot  - interrupts
1325956d97fSEmmanuel Vadot  - interrupt-names
1335956d97fSEmmanuel Vadot  - ethernet-ports
1345956d97fSEmmanuel Vadot
1355956d97fSEmmanuel VadotadditionalProperties: false
1365956d97fSEmmanuel Vadot
1375956d97fSEmmanuel Vadotexamples:
1385956d97fSEmmanuel Vadot  - |
1395956d97fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
1405956d97fSEmmanuel Vadot    switch: switch@600000000 {
1415956d97fSEmmanuel Vadot      compatible = "microchip,sparx5-switch";
1425956d97fSEmmanuel Vadot      reg =  <0 0x401000>,
1435956d97fSEmmanuel Vadot             <0x10004000 0x7fc000>,
1445956d97fSEmmanuel Vadot             <0x11010000 0xaf0000>;
1455956d97fSEmmanuel Vadot      reg-names = "cpu", "devices", "gcb";
1465956d97fSEmmanuel Vadot      interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
1475956d97fSEmmanuel Vadot      interrupt-names = "xtr";
1485956d97fSEmmanuel Vadot      resets = <&reset 0>;
1495956d97fSEmmanuel Vadot      reset-names = "switch";
1505956d97fSEmmanuel Vadot      ethernet-ports {
1515956d97fSEmmanuel Vadot        #address-cells = <1>;
1525956d97fSEmmanuel Vadot        #size-cells = <0>;
1535956d97fSEmmanuel Vadot
1545956d97fSEmmanuel Vadot        port0: port@0 {
1555956d97fSEmmanuel Vadot          reg = <0>;
1565956d97fSEmmanuel Vadot          microchip,bandwidth = <1000>;
1575956d97fSEmmanuel Vadot          phys = <&serdes 13>;
1585956d97fSEmmanuel Vadot          phy-handle = <&phy0>;
1595956d97fSEmmanuel Vadot          phy-mode = "qsgmii";
1605956d97fSEmmanuel Vadot        };
1615956d97fSEmmanuel Vadot        /* ... */
1625956d97fSEmmanuel Vadot        /* Then the 25G interfaces */
1635956d97fSEmmanuel Vadot        port60: port@60 {
1645956d97fSEmmanuel Vadot          reg = <60>;
1655956d97fSEmmanuel Vadot          microchip,bandwidth = <25000>;
1665956d97fSEmmanuel Vadot          phys = <&serdes 29>;
1675956d97fSEmmanuel Vadot          phy-mode = "10gbase-r";
1685956d97fSEmmanuel Vadot          sfp = <&sfp_eth60>;
1695956d97fSEmmanuel Vadot          managed = "in-band-status";
1705956d97fSEmmanuel Vadot          microchip,sd-sgpio = <365>;
1715956d97fSEmmanuel Vadot        };
1725956d97fSEmmanuel Vadot        port61: port@61 {
1735956d97fSEmmanuel Vadot          reg = <61>;
1745956d97fSEmmanuel Vadot          microchip,bandwidth = <25000>;
1755956d97fSEmmanuel Vadot          phys = <&serdes 30>;
1765956d97fSEmmanuel Vadot          phy-mode = "10gbase-r";
1775956d97fSEmmanuel Vadot          sfp = <&sfp_eth61>;
1785956d97fSEmmanuel Vadot          managed = "in-band-status";
1795956d97fSEmmanuel Vadot          microchip,sd-sgpio = <369>;
1805956d97fSEmmanuel Vadot        };
1815956d97fSEmmanuel Vadot        port62: port@62 {
1825956d97fSEmmanuel Vadot          reg = <62>;
1835956d97fSEmmanuel Vadot          microchip,bandwidth = <25000>;
1845956d97fSEmmanuel Vadot          phys = <&serdes 31>;
1855956d97fSEmmanuel Vadot          phy-mode = "10gbase-r";
1865956d97fSEmmanuel Vadot          sfp = <&sfp_eth62>;
1875956d97fSEmmanuel Vadot          managed = "in-band-status";
1885956d97fSEmmanuel Vadot          microchip,sd-sgpio = <373>;
1895956d97fSEmmanuel Vadot        };
1905956d97fSEmmanuel Vadot        port63: port@63 {
1915956d97fSEmmanuel Vadot          reg = <63>;
1925956d97fSEmmanuel Vadot          microchip,bandwidth = <25000>;
1935956d97fSEmmanuel Vadot          phys = <&serdes 32>;
1945956d97fSEmmanuel Vadot          phy-mode = "10gbase-r";
1955956d97fSEmmanuel Vadot          sfp = <&sfp_eth63>;
1965956d97fSEmmanuel Vadot          managed = "in-band-status";
1975956d97fSEmmanuel Vadot          microchip,sd-sgpio = <377>;
1985956d97fSEmmanuel Vadot        };
1995956d97fSEmmanuel Vadot        /* Finally the Management interface */
2005956d97fSEmmanuel Vadot        port64: port@64 {
2015956d97fSEmmanuel Vadot          reg = <64>;
2025956d97fSEmmanuel Vadot          microchip,bandwidth = <1000>;
2035956d97fSEmmanuel Vadot          phys = <&serdes 0>;
2045956d97fSEmmanuel Vadot          phy-handle = <&phy64>;
2055956d97fSEmmanuel Vadot          phy-mode = "sgmii";
2065956d97fSEmmanuel Vadot          mac-address = [ 00 00 00 01 02 03 ];
2075956d97fSEmmanuel Vadot        };
2085956d97fSEmmanuel Vadot      };
2095956d97fSEmmanuel Vadot    };
2105956d97fSEmmanuel Vadot
2115956d97fSEmmanuel Vadot...
2125956d97fSEmmanuel Vadot#  vim: set ts=2 sw=2 sts=2 tw=80 et cc=80 ft=yaml :
213