xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/net/renesas,etheravb.yaml (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*4882a593Smuzhiyun%YAML 1.2
3*4882a593Smuzhiyun---
4*4882a593Smuzhiyun$id: http://devicetree.org/schemas/net/renesas,etheravb.yaml#
5*4882a593Smuzhiyun$schema: http://devicetree.org/meta-schemas/core.yaml#
6*4882a593Smuzhiyun
7*4882a593Smuzhiyuntitle: Renesas Ethernet AVB
8*4882a593Smuzhiyun
9*4882a593Smuzhiyunmaintainers:
10*4882a593Smuzhiyun  - Sergei Shtylyov <sergei.shtylyov@gmail.com>
11*4882a593Smuzhiyun
12*4882a593Smuzhiyunproperties:
13*4882a593Smuzhiyun  compatible:
14*4882a593Smuzhiyun    oneOf:
15*4882a593Smuzhiyun      - items:
16*4882a593Smuzhiyun          - enum:
17*4882a593Smuzhiyun              - renesas,etheravb-r8a7742      # RZ/G1H
18*4882a593Smuzhiyun              - renesas,etheravb-r8a7743      # RZ/G1M
19*4882a593Smuzhiyun              - renesas,etheravb-r8a7744      # RZ/G1N
20*4882a593Smuzhiyun              - renesas,etheravb-r8a7745      # RZ/G1E
21*4882a593Smuzhiyun              - renesas,etheravb-r8a77470     # RZ/G1C
22*4882a593Smuzhiyun              - renesas,etheravb-r8a7790      # R-Car H2
23*4882a593Smuzhiyun              - renesas,etheravb-r8a7791      # R-Car M2-W
24*4882a593Smuzhiyun              - renesas,etheravb-r8a7792      # R-Car V2H
25*4882a593Smuzhiyun              - renesas,etheravb-r8a7793      # R-Car M2-N
26*4882a593Smuzhiyun              - renesas,etheravb-r8a7794      # R-Car E2
27*4882a593Smuzhiyun          - const: renesas,etheravb-rcar-gen2 # R-Car Gen2 and RZ/G1
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun      - items:
30*4882a593Smuzhiyun          - enum:
31*4882a593Smuzhiyun              - renesas,etheravb-r8a774a1     # RZ/G2M
32*4882a593Smuzhiyun              - renesas,etheravb-r8a774b1     # RZ/G2N
33*4882a593Smuzhiyun              - renesas,etheravb-r8a774c0     # RZ/G2E
34*4882a593Smuzhiyun              - renesas,etheravb-r8a774e1     # RZ/G2H
35*4882a593Smuzhiyun              - renesas,etheravb-r8a7795      # R-Car H3
36*4882a593Smuzhiyun              - renesas,etheravb-r8a7796      # R-Car M3-W
37*4882a593Smuzhiyun              - renesas,etheravb-r8a77961     # R-Car M3-W+
38*4882a593Smuzhiyun              - renesas,etheravb-r8a77965     # R-Car M3-N
39*4882a593Smuzhiyun              - renesas,etheravb-r8a77970     # R-Car V3M
40*4882a593Smuzhiyun              - renesas,etheravb-r8a77980     # R-Car V3H
41*4882a593Smuzhiyun              - renesas,etheravb-r8a77990     # R-Car E3
42*4882a593Smuzhiyun              - renesas,etheravb-r8a77995     # R-Car D3
43*4882a593Smuzhiyun          - const: renesas,etheravb-rcar-gen3 # R-Car Gen3 and RZ/G2
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun  reg: true
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun  interrupts: true
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun  interrupt-names: true
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun  clocks:
52*4882a593Smuzhiyun    maxItems: 1
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun  iommus:
55*4882a593Smuzhiyun    maxItems: 1
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun  power-domains:
58*4882a593Smuzhiyun    maxItems: 1
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun  resets:
61*4882a593Smuzhiyun    maxItems: 1
62*4882a593Smuzhiyun
63*4882a593Smuzhiyun  phy-mode: true
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun  phy-handle: true
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun  '#address-cells':
68*4882a593Smuzhiyun    description: Number of address cells for the MDIO bus.
69*4882a593Smuzhiyun    const: 1
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun  '#size-cells':
72*4882a593Smuzhiyun    description: Number of size cells on the MDIO bus.
73*4882a593Smuzhiyun    const: 0
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun  renesas,no-ether-link:
76*4882a593Smuzhiyun    type: boolean
77*4882a593Smuzhiyun    description:
78*4882a593Smuzhiyun      Specify when a board does not provide a proper AVB_LINK signal.
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun  renesas,ether-link-active-low:
81*4882a593Smuzhiyun    type: boolean
82*4882a593Smuzhiyun    description:
83*4882a593Smuzhiyun      Specify when the AVB_LINK signal is active-low instead of normal
84*4882a593Smuzhiyun      active-high.
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun  rx-internal-delay-ps:
87*4882a593Smuzhiyun    enum: [0, 1800]
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun  tx-internal-delay-ps:
90*4882a593Smuzhiyun    enum: [0, 2000]
91*4882a593Smuzhiyun
92*4882a593SmuzhiyunpatternProperties:
93*4882a593Smuzhiyun  "^ethernet-phy@[0-9a-f]$":
94*4882a593Smuzhiyun    type: object
95*4882a593Smuzhiyun    $ref: ethernet-phy.yaml#
96*4882a593Smuzhiyun
97*4882a593Smuzhiyunrequired:
98*4882a593Smuzhiyun  - compatible
99*4882a593Smuzhiyun  - reg
100*4882a593Smuzhiyun  - interrupts
101*4882a593Smuzhiyun  - clocks
102*4882a593Smuzhiyun  - power-domains
103*4882a593Smuzhiyun  - resets
104*4882a593Smuzhiyun  - phy-mode
105*4882a593Smuzhiyun  - phy-handle
106*4882a593Smuzhiyun  - '#address-cells'
107*4882a593Smuzhiyun  - '#size-cells'
108*4882a593Smuzhiyun
109*4882a593SmuzhiyunallOf:
110*4882a593Smuzhiyun  - $ref: ethernet-controller.yaml#
111*4882a593Smuzhiyun
112*4882a593Smuzhiyun  - if:
113*4882a593Smuzhiyun      properties:
114*4882a593Smuzhiyun        compatible:
115*4882a593Smuzhiyun          contains:
116*4882a593Smuzhiyun            enum:
117*4882a593Smuzhiyun              - renesas,etheravb-rcar-gen2
118*4882a593Smuzhiyun              - renesas,etheravb-r8a7795
119*4882a593Smuzhiyun              - renesas,etheravb-r8a7796
120*4882a593Smuzhiyun              - renesas,etheravb-r8a77961
121*4882a593Smuzhiyun              - renesas,etheravb-r8a77965
122*4882a593Smuzhiyun    then:
123*4882a593Smuzhiyun      properties:
124*4882a593Smuzhiyun        reg:
125*4882a593Smuzhiyun          items:
126*4882a593Smuzhiyun            - description: MAC register block
127*4882a593Smuzhiyun            - description: Stream buffer
128*4882a593Smuzhiyun    else:
129*4882a593Smuzhiyun      properties:
130*4882a593Smuzhiyun        reg:
131*4882a593Smuzhiyun          items:
132*4882a593Smuzhiyun            - description: MAC register block
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun  - if:
135*4882a593Smuzhiyun      properties:
136*4882a593Smuzhiyun        compatible:
137*4882a593Smuzhiyun          contains:
138*4882a593Smuzhiyun            const: renesas,etheravb-rcar-gen2
139*4882a593Smuzhiyun    then:
140*4882a593Smuzhiyun      properties:
141*4882a593Smuzhiyun        interrupts:
142*4882a593Smuzhiyun          maxItems: 1
143*4882a593Smuzhiyun        interrupt-names:
144*4882a593Smuzhiyun          items:
145*4882a593Smuzhiyun            - const: mux
146*4882a593Smuzhiyun        rx-internal-delay-ps: false
147*4882a593Smuzhiyun    else:
148*4882a593Smuzhiyun      properties:
149*4882a593Smuzhiyun        interrupts:
150*4882a593Smuzhiyun          minItems: 25
151*4882a593Smuzhiyun          maxItems: 25
152*4882a593Smuzhiyun        interrupt-names:
153*4882a593Smuzhiyun          items:
154*4882a593Smuzhiyun            pattern: '^ch[0-9]+$'
155*4882a593Smuzhiyun      required:
156*4882a593Smuzhiyun        - interrupt-names
157*4882a593Smuzhiyun        - rx-internal-delay-ps
158*4882a593Smuzhiyun
159*4882a593Smuzhiyun  - if:
160*4882a593Smuzhiyun      properties:
161*4882a593Smuzhiyun        compatible:
162*4882a593Smuzhiyun          contains:
163*4882a593Smuzhiyun            enum:
164*4882a593Smuzhiyun              - renesas,etheravb-r8a774a1
165*4882a593Smuzhiyun              - renesas,etheravb-r8a774b1
166*4882a593Smuzhiyun              - renesas,etheravb-r8a774e1
167*4882a593Smuzhiyun              - renesas,etheravb-r8a7795
168*4882a593Smuzhiyun              - renesas,etheravb-r8a7796
169*4882a593Smuzhiyun              - renesas,etheravb-r8a77961
170*4882a593Smuzhiyun              - renesas,etheravb-r8a77965
171*4882a593Smuzhiyun              - renesas,etheravb-r8a77970
172*4882a593Smuzhiyun              - renesas,etheravb-r8a77980
173*4882a593Smuzhiyun    then:
174*4882a593Smuzhiyun      required:
175*4882a593Smuzhiyun        - tx-internal-delay-ps
176*4882a593Smuzhiyun    else:
177*4882a593Smuzhiyun      properties:
178*4882a593Smuzhiyun        tx-internal-delay-ps: false
179*4882a593Smuzhiyun
180*4882a593Smuzhiyun  - if:
181*4882a593Smuzhiyun      properties:
182*4882a593Smuzhiyun        compatible:
183*4882a593Smuzhiyun          contains:
184*4882a593Smuzhiyun            const: renesas,etheravb-r8a77995
185*4882a593Smuzhiyun    then:
186*4882a593Smuzhiyun      properties:
187*4882a593Smuzhiyun        rx-internal-delay-ps:
188*4882a593Smuzhiyun          const: 1800
189*4882a593Smuzhiyun
190*4882a593Smuzhiyun  - if:
191*4882a593Smuzhiyun      properties:
192*4882a593Smuzhiyun        compatible:
193*4882a593Smuzhiyun          contains:
194*4882a593Smuzhiyun            const: renesas,etheravb-r8a77980
195*4882a593Smuzhiyun    then:
196*4882a593Smuzhiyun      properties:
197*4882a593Smuzhiyun        tx-internal-delay-ps:
198*4882a593Smuzhiyun          const: 2000
199*4882a593Smuzhiyun
200*4882a593SmuzhiyunadditionalProperties: false
201*4882a593Smuzhiyun
202*4882a593Smuzhiyunexamples:
203*4882a593Smuzhiyun  - |
204*4882a593Smuzhiyun    #include <dt-bindings/clock/r8a7795-cpg-mssr.h>
205*4882a593Smuzhiyun    #include <dt-bindings/interrupt-controller/arm-gic.h>
206*4882a593Smuzhiyun    #include <dt-bindings/power/r8a7795-sysc.h>
207*4882a593Smuzhiyun    #include <dt-bindings/gpio/gpio.h>
208*4882a593Smuzhiyun    aliases {
209*4882a593Smuzhiyun            ethernet0 = &avb;
210*4882a593Smuzhiyun    };
211*4882a593Smuzhiyun
212*4882a593Smuzhiyun    avb: ethernet@e6800000 {
213*4882a593Smuzhiyun            compatible = "renesas,etheravb-r8a7795",
214*4882a593Smuzhiyun                         "renesas,etheravb-rcar-gen3";
215*4882a593Smuzhiyun            reg = <0xe6800000 0x800>, <0xe6a00000 0x10000>;
216*4882a593Smuzhiyun            interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>,
217*4882a593Smuzhiyun                         <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
218*4882a593Smuzhiyun                         <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
219*4882a593Smuzhiyun                         <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
220*4882a593Smuzhiyun                         <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>,
221*4882a593Smuzhiyun                         <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>,
222*4882a593Smuzhiyun                         <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>,
223*4882a593Smuzhiyun                         <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>,
224*4882a593Smuzhiyun                         <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>,
225*4882a593Smuzhiyun                         <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>,
226*4882a593Smuzhiyun                         <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
227*4882a593Smuzhiyun                         <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>,
228*4882a593Smuzhiyun                         <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
229*4882a593Smuzhiyun                         <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
230*4882a593Smuzhiyun                         <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
231*4882a593Smuzhiyun                         <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
232*4882a593Smuzhiyun                         <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
233*4882a593Smuzhiyun                         <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
234*4882a593Smuzhiyun                         <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
235*4882a593Smuzhiyun                         <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
236*4882a593Smuzhiyun                         <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
237*4882a593Smuzhiyun                         <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
238*4882a593Smuzhiyun                         <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>,
239*4882a593Smuzhiyun                         <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>,
240*4882a593Smuzhiyun                         <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
241*4882a593Smuzhiyun            interrupt-names = "ch0", "ch1", "ch2", "ch3", "ch4", "ch5", "ch6",
242*4882a593Smuzhiyun                              "ch7", "ch8", "ch9", "ch10", "ch11", "ch12",
243*4882a593Smuzhiyun                              "ch13", "ch14", "ch15", "ch16", "ch17", "ch18",
244*4882a593Smuzhiyun                              "ch19", "ch20", "ch21", "ch22", "ch23", "ch24";
245*4882a593Smuzhiyun            clocks = <&cpg CPG_MOD 812>;
246*4882a593Smuzhiyun            iommus = <&ipmmu_ds0 16>;
247*4882a593Smuzhiyun            power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
248*4882a593Smuzhiyun            resets = <&cpg 812>;
249*4882a593Smuzhiyun            phy-mode = "rgmii";
250*4882a593Smuzhiyun            phy-handle = <&phy0>;
251*4882a593Smuzhiyun            rx-internal-delay-ps = <0>;
252*4882a593Smuzhiyun            tx-internal-delay-ps = <2000>;
253*4882a593Smuzhiyun            #address-cells = <1>;
254*4882a593Smuzhiyun            #size-cells = <0>;
255*4882a593Smuzhiyun
256*4882a593Smuzhiyun            phy0: ethernet-phy@0 {
257*4882a593Smuzhiyun                    rxc-skew-ps = <1500>;
258*4882a593Smuzhiyun                    reg = <0>;
259*4882a593Smuzhiyun                    interrupt-parent = <&gpio2>;
260*4882a593Smuzhiyun                    interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
261*4882a593Smuzhiyun                    reset-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>;
262*4882a593Smuzhiyun            };
263*4882a593Smuzhiyun    };
264