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/hirschmann,hellcreek.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Hirschmann Hellcreek TSN Switch Device Tree Bindings
8
9allOf:
10  - $ref: dsa.yaml#
11
12maintainers:
13  - Andrew Lunn <andrew@lunn.ch>
14  - Florian Fainelli <f.fainelli@gmail.com>
15  - Vivien Didelot <vivien.didelot@gmail.com>
16  - Kurt Kanzenbach <kurt@linutronix.de>
17
18description:
19  The Hellcreek TSN Switch IP is a 802.1Q Ethernet compliant switch. It supports
20  the Precision Time Protocol, Hardware Timestamping as well the Time Aware
21  Shaper.
22
23properties:
24  compatible:
25    items:
26      - const: hirschmann,hellcreek-de1soc-r1
27
28  reg:
29    description:
30      The physical base address and size of TSN and PTP memory base
31    minItems: 2
32    maxItems: 2
33
34  reg-names:
35    items:
36      - const: tsn
37      - const: ptp
38
39  leds:
40    type: object
41    properties:
42      '#address-cells':
43        const: 1
44      '#size-cells':
45        const: 0
46
47    patternProperties:
48      "^led@[01]$":
49        type: object
50        description: Hellcreek leds
51        $ref: /schemas/leds/common.yaml#
52
53        properties:
54          reg:
55            items:
56              - enum: [0, 1]
57            description: Led number
58
59          label: true
60
61          default-state: true
62
63        required:
64          - reg
65
66        additionalProperties: false
67
68    additionalProperties: false
69
70required:
71  - compatible
72  - reg
73  - reg-names
74  - ethernet-ports
75  - leds
76
77unevaluatedProperties: false
78
79examples:
80  - |
81        switch0: switch@ff240000 {
82            compatible = "hirschmann,hellcreek-de1soc-r1";
83            reg = <0xff240000 0x1000>,
84                  <0xff250000 0x1000>;
85            reg-names = "tsn", "ptp";
86            dsa,member = <0 0>;
87
88            ethernet-ports {
89                #address-cells = <1>;
90                #size-cells = <0>;
91
92                port@0 {
93                    reg = <0>;
94                    label = "cpu";
95                    ethernet = <&gmac0>;
96                };
97
98                port@2 {
99                    reg = <2>;
100                    label = "lan0";
101                    phy-handle = <&phy1>;
102                };
103
104                port@3 {
105                    reg = <3>;
106                    label = "lan1";
107                    phy-handle = <&phy2>;
108                };
109            };
110
111            leds {
112                #address-cells = <1>;
113                #size-cells = <0>;
114
115                led@0 {
116                    reg = <0>;
117                    label = "sync_good";
118                    default-state = "on";
119                };
120
121                led@1 {
122                    reg = <1>;
123                    label = "is_gm";
124                    default-state = "off";
125                };
126            };
127        };
128