xref: /linux/Documentation/devicetree/bindings/net/ethernet-switch.yaml (revision f45c197465ed92c72c1af7ac773ca5050bd9535a)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/net/ethernet-switch.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Generic Ethernet Switch
8
9maintainers:
10  - Andrew Lunn <andrew@lunn.ch>
11  - Florian Fainelli <f.fainelli@gmail.com>
12  - Vladimir Oltean <olteanv@gmail.com>
13
14description:
15  Ethernet switches are multi-port Ethernet controllers. Each port has
16  its own number and is represented as its own Ethernet controller.
17  The minimum required functionality is to pass packets to software.
18  They may or may not be able to forward packets automonously between
19  ports.
20
21select: false
22
23allOf:
24  # This condition is here to satisfy the case where certain device
25  # nodes have to preserve non-standard names because of
26  # backward-compatibility with boot loaders inspecting certain
27  # node names.
28  - if:
29      properties:
30        compatible:
31          contains:
32            enum:
33              - marvell,turris-mox-mv88e6085
34              - marvell,turris-mox-mv88e6190
35    then:
36      properties:
37        $nodename:
38          pattern: "switch[0-3]@[0-3]+$"
39    else:
40      properties:
41        $nodename:
42          pattern: "^(ethernet-)?switch(@.*)?$"
43
44patternProperties:
45  "^(ethernet-)?ports$":
46    type: object
47    unevaluatedProperties: false
48
49    properties:
50      '#address-cells':
51        const: 1
52      '#size-cells':
53        const: 0
54
55    patternProperties:
56      "^(ethernet-)?port@[0-9a-f]+$":
57        type: object
58        description: Ethernet switch ports
59
60    required:
61      - "#address-cells"
62      - "#size-cells"
63
64oneOf:
65  - required:
66      - ports
67  - required:
68      - ethernet-ports
69
70additionalProperties: true
71
72$defs:
73  ethernet-ports:
74    description: An ethernet switch without any extra port properties
75    $ref: '#'
76
77    patternProperties:
78      "^(ethernet-)?ports$":
79        patternProperties:
80          "^(ethernet-)?port@[0-9a-f]+$":
81            description: Ethernet switch ports
82            $ref: ethernet-switch-port.yaml#
83            unevaluatedProperties: false
84
85...
86