xref: /freebsd-src/sys/contrib/device-tree/Bindings/net/microchip,lan966x-switch.yaml (revision fac71e4e09885bb2afa3d984a0c239a52e1a7418)
1e67e8565SEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2e67e8565SEmmanuel Vadot%YAML 1.2
3e67e8565SEmmanuel Vadot---
4e67e8565SEmmanuel Vadot$id: http://devicetree.org/schemas/net/microchip,lan966x-switch.yaml#
5e67e8565SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6e67e8565SEmmanuel Vadot
7e67e8565SEmmanuel Vadottitle: Microchip Lan966x Ethernet switch controller
8e67e8565SEmmanuel Vadot
9e67e8565SEmmanuel Vadotmaintainers:
10e67e8565SEmmanuel Vadot  - Horatiu Vultur <horatiu.vultur@microchip.com>
11e67e8565SEmmanuel Vadot
12e67e8565SEmmanuel Vadotdescription: |
13e67e8565SEmmanuel Vadot  The lan966x switch is a multi-port Gigabit AVB/TSN Ethernet Switch with
14e67e8565SEmmanuel Vadot  two integrated 10/100/1000Base-T PHYs. In addition to the integrated PHYs,
15e67e8565SEmmanuel Vadot  it supports up to 2RGMII/RMII, up to 3BASE-X/SERDES/2.5GBASE-X and up to
16e67e8565SEmmanuel Vadot  2 Quad-SGMII/Quad-USGMII interfaces.
17e67e8565SEmmanuel Vadot
18e67e8565SEmmanuel Vadotproperties:
19e67e8565SEmmanuel Vadot  $nodename:
20e67e8565SEmmanuel Vadot    pattern: "^switch@[0-9a-f]+$"
21e67e8565SEmmanuel Vadot
22e67e8565SEmmanuel Vadot  compatible:
23e67e8565SEmmanuel Vadot    const: microchip,lan966x-switch
24e67e8565SEmmanuel Vadot
25e67e8565SEmmanuel Vadot  reg:
26e67e8565SEmmanuel Vadot    items:
27e67e8565SEmmanuel Vadot      - description: cpu target
28e67e8565SEmmanuel Vadot      - description: general control block target
29e67e8565SEmmanuel Vadot
30e67e8565SEmmanuel Vadot  reg-names:
31e67e8565SEmmanuel Vadot    items:
32e67e8565SEmmanuel Vadot      - const: cpu
33e67e8565SEmmanuel Vadot      - const: gcb
34e67e8565SEmmanuel Vadot
35e67e8565SEmmanuel Vadot  interrupts:
36e67e8565SEmmanuel Vadot    minItems: 1
37e67e8565SEmmanuel Vadot    items:
38e67e8565SEmmanuel Vadot      - description: register based extraction
39e67e8565SEmmanuel Vadot      - description: frame dma based extraction
40e67e8565SEmmanuel Vadot      - description: analyzer interrupt
41c9ccf3a3SEmmanuel Vadot      - description: ptp interrupt
42d5b0e70fSEmmanuel Vadot      - description: ptp external interrupt
43e67e8565SEmmanuel Vadot
44e67e8565SEmmanuel Vadot  interrupt-names:
45e67e8565SEmmanuel Vadot    minItems: 1
46e67e8565SEmmanuel Vadot    items:
47e67e8565SEmmanuel Vadot      - const: xtr
48e67e8565SEmmanuel Vadot      - const: fdma
49e67e8565SEmmanuel Vadot      - const: ana
50c9ccf3a3SEmmanuel Vadot      - const: ptp
51d5b0e70fSEmmanuel Vadot      - const: ptp-ext
52e67e8565SEmmanuel Vadot
53e67e8565SEmmanuel Vadot  resets:
54e67e8565SEmmanuel Vadot    items:
55e67e8565SEmmanuel Vadot      - description: Reset controller used for switch core reset (soft reset)
56e67e8565SEmmanuel Vadot
57e67e8565SEmmanuel Vadot  reset-names:
58e67e8565SEmmanuel Vadot    items:
59e67e8565SEmmanuel Vadot      - const: switch
60e67e8565SEmmanuel Vadot
61e67e8565SEmmanuel Vadot  ethernet-ports:
62e67e8565SEmmanuel Vadot    type: object
63e67e8565SEmmanuel Vadot
64e67e8565SEmmanuel Vadot    properties:
65e67e8565SEmmanuel Vadot      '#address-cells':
66e67e8565SEmmanuel Vadot        const: 1
67e67e8565SEmmanuel Vadot      '#size-cells':
68e67e8565SEmmanuel Vadot        const: 0
69e67e8565SEmmanuel Vadot
70e67e8565SEmmanuel Vadot    additionalProperties: false
71e67e8565SEmmanuel Vadot
72e67e8565SEmmanuel Vadot    patternProperties:
73e67e8565SEmmanuel Vadot      "^port@[0-9a-f]+$":
74e67e8565SEmmanuel Vadot        type: object
75e67e8565SEmmanuel Vadot
76*fac71e4eSEmmanuel Vadot        $ref: /schemas/net/ethernet-controller.yaml#
77e67e8565SEmmanuel Vadot        unevaluatedProperties: false
78e67e8565SEmmanuel Vadot
79e67e8565SEmmanuel Vadot        properties:
80e67e8565SEmmanuel Vadot          '#address-cells':
81e67e8565SEmmanuel Vadot            const: 1
82e67e8565SEmmanuel Vadot          '#size-cells':
83e67e8565SEmmanuel Vadot            const: 0
84e67e8565SEmmanuel Vadot
85e67e8565SEmmanuel Vadot          reg:
86e67e8565SEmmanuel Vadot            description:
87e67e8565SEmmanuel Vadot              Switch port number
88e67e8565SEmmanuel Vadot
89e67e8565SEmmanuel Vadot          phys:
90e67e8565SEmmanuel Vadot            description:
91e67e8565SEmmanuel Vadot              Phandle of a Ethernet SerDes PHY
92e67e8565SEmmanuel Vadot
93e67e8565SEmmanuel Vadot          phy-mode:
94e67e8565SEmmanuel Vadot            description:
95e67e8565SEmmanuel Vadot              This specifies the interface used by the Ethernet SerDes towards
96e67e8565SEmmanuel Vadot              the PHY or SFP.
97e67e8565SEmmanuel Vadot            enum:
98e67e8565SEmmanuel Vadot              - gmii
99e67e8565SEmmanuel Vadot              - sgmii
100e67e8565SEmmanuel Vadot              - qsgmii
101e67e8565SEmmanuel Vadot              - 1000base-x
102e67e8565SEmmanuel Vadot              - 2500base-x
103e67e8565SEmmanuel Vadot
104e67e8565SEmmanuel Vadot          phy-handle:
105e67e8565SEmmanuel Vadot            description:
106e67e8565SEmmanuel Vadot              Phandle of a Ethernet PHY.
107e67e8565SEmmanuel Vadot
108e67e8565SEmmanuel Vadot          sfp:
109e67e8565SEmmanuel Vadot            description:
110e67e8565SEmmanuel Vadot              Phandle of an SFP.
111e67e8565SEmmanuel Vadot
112e67e8565SEmmanuel Vadot          managed: true
113e67e8565SEmmanuel Vadot
114e67e8565SEmmanuel Vadot        required:
115e67e8565SEmmanuel Vadot          - reg
116e67e8565SEmmanuel Vadot          - phys
117e67e8565SEmmanuel Vadot          - phy-mode
118e67e8565SEmmanuel Vadot
119e67e8565SEmmanuel Vadot        oneOf:
120e67e8565SEmmanuel Vadot          - required:
121e67e8565SEmmanuel Vadot              - phy-handle
122e67e8565SEmmanuel Vadot          - required:
123e67e8565SEmmanuel Vadot              - sfp
124e67e8565SEmmanuel Vadot              - managed
125e67e8565SEmmanuel Vadot
126e67e8565SEmmanuel Vadotrequired:
127e67e8565SEmmanuel Vadot  - compatible
128e67e8565SEmmanuel Vadot  - reg
129e67e8565SEmmanuel Vadot  - reg-names
130e67e8565SEmmanuel Vadot  - interrupts
131e67e8565SEmmanuel Vadot  - interrupt-names
132e67e8565SEmmanuel Vadot  - resets
133e67e8565SEmmanuel Vadot  - reset-names
134e67e8565SEmmanuel Vadot  - ethernet-ports
135e67e8565SEmmanuel Vadot
136e67e8565SEmmanuel VadotadditionalProperties: false
137e67e8565SEmmanuel Vadot
138e67e8565SEmmanuel Vadotexamples:
139e67e8565SEmmanuel Vadot  - |
140e67e8565SEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
141e67e8565SEmmanuel Vadot    switch: switch@e0000000 {
142e67e8565SEmmanuel Vadot      compatible = "microchip,lan966x-switch";
143e67e8565SEmmanuel Vadot      reg =  <0xe0000000 0x0100000>,
144e67e8565SEmmanuel Vadot             <0xe2000000 0x0800000>;
145e67e8565SEmmanuel Vadot      reg-names = "cpu", "gcb";
146e67e8565SEmmanuel Vadot      interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
147e67e8565SEmmanuel Vadot      interrupt-names = "xtr";
148d5b0e70fSEmmanuel Vadot      resets = <&switch_reset 0>;
149d5b0e70fSEmmanuel Vadot      reset-names = "switch";
150e67e8565SEmmanuel Vadot      ethernet-ports {
151e67e8565SEmmanuel Vadot        #address-cells = <1>;
152e67e8565SEmmanuel Vadot        #size-cells = <0>;
153e67e8565SEmmanuel Vadot
154e67e8565SEmmanuel Vadot        port0: port@0 {
155e67e8565SEmmanuel Vadot          reg = <0>;
156e67e8565SEmmanuel Vadot          phy-handle = <&phy0>;
157e67e8565SEmmanuel Vadot          phys = <&serdes 0 0>;
158e67e8565SEmmanuel Vadot          phy-mode = "gmii";
159e67e8565SEmmanuel Vadot        };
160e67e8565SEmmanuel Vadot
161e67e8565SEmmanuel Vadot        port1: port@1 {
162e67e8565SEmmanuel Vadot          reg = <1>;
163e67e8565SEmmanuel Vadot          sfp = <&sfp_eth1>;
164e67e8565SEmmanuel Vadot          managed = "in-band-status";
165e67e8565SEmmanuel Vadot          phys = <&serdes 2 4>;
166e67e8565SEmmanuel Vadot          phy-mode = "sgmii";
167e67e8565SEmmanuel Vadot        };
168e67e8565SEmmanuel Vadot      };
169e67e8565SEmmanuel Vadot    };
170e67e8565SEmmanuel Vadot
171e67e8565SEmmanuel Vadot...
172