summaryrefslogtreecommitdiffstats
path: root/dts/Bindings/net/dsa/microchip,lan937x.yaml
blob: b34de303966ba4ecdc46cf764f2ae63e5c5af888 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/dsa/microchip,lan937x.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: LAN937x Ethernet Switch Series

maintainers:
  - UNGLinuxDriver@microchip.com

allOf:
  - $ref: dsa.yaml#

properties:
  compatible:
    enum:
      - microchip,lan9370
      - microchip,lan9371
      - microchip,lan9372
      - microchip,lan9373
      - microchip,lan9374

  reg:
    maxItems: 1

  spi-max-frequency:
    maximum: 50000000

  reset-gpios:
    description: Optional gpio specifier for a reset line
    maxItems: 1

  mdio:
    $ref: /schemas/net/mdio.yaml#
    unevaluatedProperties: false

patternProperties:
  "^(ethernet-)?ports$":
    patternProperties:
      "^(ethernet-)?port@[0-9]+$":
        allOf:
          - if:
              properties:
                phy-mode:
                  contains:
                    enum:
                      - rgmii
                      - rgmii-id
                      - rgmii-txid
                      - rgmii-rxid
            then:
              properties:
                rx-internal-delay-ps:
                  enum: [0, 2000]
                  default: 0
                tx-internal-delay-ps:
                  enum: [0, 2000]
                  default: 0

required:
  - compatible
  - reg

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>

    macb0 {
            #address-cells = <1>;
            #size-cells = <0>;

            fixed-link {
                    speed = <1000>;
                    full-duplex;
            };
    };

    spi {
            #address-cells = <1>;
            #size-cells = <0>;

            lan9374: switch@0 {
                    compatible = "microchip,lan9374";
                    reg = <0>;
                    spi-max-frequency = <44000000>;

                    ethernet-ports {
                            #address-cells = <1>;
                            #size-cells = <0>;

                            port@0 {
                                    reg = <0>;
                                    label = "lan1";
                                    phy-mode = "internal";
                                    phy-handle = <&t1phy0>;
                            };

                            port@1 {
                                    reg = <1>;
                                    label = "lan2";
                                    phy-mode = "internal";
                                    phy-handle = <&t1phy1>;
                            };

                            port@2 {
                                    reg = <2>;
                                    label = "lan4";
                                    phy-mode = "internal";
                                    phy-handle = <&t1phy2>;
                            };

                            port@3 {
                                    reg = <3>;
                                    label = "lan6";
                                    phy-mode = "internal";
                                    phy-handle = <&t1phy3>;
                            };

                            port@4 {
                                    reg = <4>;
                                    phy-mode = "rgmii";
                                    tx-internal-delay-ps = <2000>;
                                    rx-internal-delay-ps = <2000>;
                                    ethernet = <&macb0>;

                                    fixed-link {
                                            speed = <1000>;
                                            full-duplex;
                                    };
                            };

                            port@5 {
                                    reg = <5>;
                                    label = "lan7";
                                    phy-mode = "rgmii";
                                    tx-internal-delay-ps = <2000>;
                                    rx-internal-delay-ps = <2000>;

                                    fixed-link {
                                            speed = <1000>;
                                            full-duplex;
                                    };
                            };

                            port@6 {
                                    reg = <6>;
                                    label = "lan5";
                                    phy-mode = "internal";
                                    phy-handle = <&t1phy6>;
                            };

                            port@7 {
                                    reg = <7>;
                                    label = "lan3";
                                    phy-mode = "internal";
                                    phy-handle = <&t1phy7>;
                            };
                    };

                    mdio {
                            #address-cells = <1>;
                            #size-cells = <0>;

                            t1phy0: ethernet-phy@0{
                                    reg = <0x0>;
                            };

                            t1phy1: ethernet-phy@1{
                                    reg = <0x1>;
                            };

                            t1phy2: ethernet-phy@2{
                                    reg = <0x2>;
                            };

                            t1phy3: ethernet-phy@3{
                                    reg = <0x3>;
                            };

                            t1phy6: ethernet-phy@6{
                                    reg = <0x6>;
                            };

                            t1phy7: ethernet-phy@7{
                                    reg = <0x7>;
                            };
                    };
            };
    };