xref: /freebsd/sys/contrib/device-tree/Bindings/net/dsa/dsa.yaml (revision 8cc087a1eee9ec1ca9f7ac1e63ad51bdb5a682eb)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/net/dsa/dsa.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Ethernet Switch Device Tree Bindings
8
9maintainers:
10  - Andrew Lunn <andrew@lunn.ch>
11  - Florian Fainelli <f.fainelli@gmail.com>
12  - Vivien Didelot <vivien.didelot@gmail.com>
13
14description:
15  This binding represents Ethernet Switches which have a dedicated CPU
16  port. That port is usually connected to an Ethernet Controller of the
17  SoC. Such setups are typical for embedded devices.
18
19select: false
20
21properties:
22  $nodename:
23    pattern: "^(ethernet-)?switch(@.*)?$"
24
25  dsa,member:
26    minItems: 2
27    maxItems: 2
28    description:
29      A two element list indicates which DSA cluster, and position within the
30      cluster a switch takes. <0 0> is cluster 0, switch 0. <0 1> is cluster 0,
31      switch 1. <1 0> is cluster 1, switch 0. A switch not part of any cluster
32      (single device hanging off a CPU port) must not specify this property
33    $ref: /schemas/types.yaml#/definitions/uint32-array
34
35patternProperties:
36  "^(ethernet-)?ports$":
37    type: object
38    properties:
39      '#address-cells':
40        const: 1
41      '#size-cells':
42        const: 0
43
44    patternProperties:
45      "^(ethernet-)?port@[0-9]+$":
46        type: object
47        description: Ethernet switch ports
48
49        allOf:
50          - $ref: "http://devicetree.org/schemas/net/ethernet-controller.yaml#"
51
52        properties:
53          reg:
54            description: Port number
55
56          label:
57            description:
58              Describes the label associated with this port, which will become
59              the netdev name
60            $ref: /schemas/types.yaml#/definitions/string
61
62          link:
63            description:
64              Should be a list of phandles to other switch's DSA port. This
65              port is used as the outgoing port towards the phandle ports. The
66              full routing information must be given, not just the one hop
67              routes to neighbouring switches
68            $ref: /schemas/types.yaml#/definitions/phandle-array
69
70          ethernet:
71            description:
72              Should be a phandle to a valid Ethernet device node.  This host
73              device is what the switch port is connected to
74            $ref: /schemas/types.yaml#/definitions/phandle
75
76          dsa-tag-protocol:
77            description:
78              Instead of the default, the switch will use this tag protocol if
79              possible. Useful when a device supports multiple protocols and
80              the default is incompatible with the Ethernet device.
81            enum:
82              - dsa
83              - edsa
84              - ocelot
85              - ocelot-8021q
86              - seville
87
88          phy-handle: true
89
90          phy-mode: true
91
92          fixed-link: true
93
94          mac-address: true
95
96          sfp: true
97
98          managed: true
99
100          rx-internal-delay-ps: true
101
102          tx-internal-delay-ps: true
103
104        required:
105          - reg
106
107        additionalProperties: false
108
109oneOf:
110  - required:
111      - ports
112  - required:
113      - ethernet-ports
114
115additionalProperties: true
116
117...
118