xref: /linux/Documentation/devicetree/bindings/net/stm32-dwmac.yaml (revision 001821b0e79716c4e17c71d8e053a23599a7a508)
1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2# Copyright 2019 BayLibre, SAS
3%YAML 1.2
4---
5$id: http://devicetree.org/schemas/net/stm32-dwmac.yaml#
6$schema: http://devicetree.org/meta-schemas/core.yaml#
7
8title: STMicroelectronics STM32 / MCU DWMAC glue layer controller
9
10maintainers:
11  - Alexandre Torgue <alexandre.torgue@foss.st.com>
12  - Christophe Roullier <christophe.roullier@foss.st.com>
13
14description:
15  This file documents platform glue layer for stmmac.
16
17# We need a select here so we don't match all nodes with 'snps,dwmac'
18select:
19  properties:
20    compatible:
21      contains:
22        enum:
23          - st,stm32-dwmac
24          - st,stm32mp1-dwmac
25  required:
26    - compatible
27
28allOf:
29  - $ref: snps,dwmac.yaml#
30
31properties:
32  compatible:
33    oneOf:
34      - items:
35          - enum:
36              - st,stm32mp1-dwmac
37          - const: snps,dwmac-4.20a
38      - items:
39          - enum:
40              - st,stm32-dwmac
41          - const: snps,dwmac-4.10a
42      - items:
43          - enum:
44              - st,stm32-dwmac
45          - const: snps,dwmac-3.50a
46
47  reg: true
48
49  reg-names:
50    items:
51      - const: stmmaceth
52
53  clocks:
54    minItems: 3
55    items:
56      - description: GMAC main clock
57      - description: MAC TX clock
58      - description: MAC RX clock
59      - description: For MPU family, used for power mode
60      - description: For MPU family, used for PHY without quartz
61      - description: PTP clock
62
63  clock-names:
64    minItems: 3
65    maxItems: 6
66    contains:
67      enum:
68        - stmmaceth
69        - mac-clk-tx
70        - mac-clk-rx
71        - ethstp
72        - eth-ck
73        - ptp_ref
74
75  st,syscon:
76    $ref: /schemas/types.yaml#/definitions/phandle-array
77    items:
78      - items:
79          - description: phandle to the syscon node which encompases the glue register
80          - description: offset of the control register
81    description:
82      Should be phandle/offset pair. The phandle to the syscon node which
83      encompases the glue register, and the offset of the control register
84
85  st,ext-phyclk:
86    description:
87      set this property in RMII mode when you have PHY without crystal 50MHz and want to
88      select RCC clock instead of ETH_REF_CLK. OR in RGMII mode when you want to select
89      RCC clock instead of ETH_CLK125.
90    type: boolean
91
92  st,eth-clk-sel:
93    description:
94      set this property in RGMII PHY when you want to select RCC clock instead of ETH_CLK125.
95    type: boolean
96
97  st,eth-ref-clk-sel:
98    description:
99      set this property in RMII mode when you have PHY without crystal 50MHz and want to
100      select RCC clock instead of ETH_REF_CLK.
101    type: boolean
102
103  access-controllers:
104    minItems: 1
105    maxItems: 2
106
107required:
108  - compatible
109  - clocks
110  - clock-names
111  - st,syscon
112
113unevaluatedProperties: false
114
115examples:
116  - |
117    #include <dt-bindings/interrupt-controller/arm-gic.h>
118    #include <dt-bindings/clock/stm32mp1-clks.h>
119    #include <dt-bindings/reset/stm32mp1-resets.h>
120    #include <dt-bindings/mfd/stm32h7-rcc.h>
121    //Example 1
122     ethernet0: ethernet@5800a000 {
123           compatible = "st,stm32mp1-dwmac", "snps,dwmac-4.20a";
124           reg = <0x5800a000 0x2000>;
125           reg-names = "stmmaceth";
126           interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
127           interrupt-names = "macirq";
128           clock-names = "stmmaceth",
129                     "mac-clk-tx",
130                     "mac-clk-rx",
131                     "ethstp",
132                     "eth-ck";
133           clocks = <&rcc ETHMAC>,
134                <&rcc ETHTX>,
135                <&rcc ETHRX>,
136                <&rcc ETHSTP>,
137                <&rcc ETHCK_K>;
138           st,syscon = <&syscfg 0x4>;
139           snps,pbl = <2>;
140           snps,axi-config = <&stmmac_axi_config_0>;
141           snps,tso;
142           phy-mode = "rgmii";
143       };
144
145  - |
146    //Example 2 (MCU example)
147     ethernet1: ethernet@40028000 {
148           compatible = "st,stm32-dwmac", "snps,dwmac-3.50a";
149           reg = <0x40028000 0x8000>;
150           reg-names = "stmmaceth";
151           interrupts = <0 61 0>, <0 62 0>;
152           interrupt-names = "macirq", "eth_wake_irq";
153           clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx";
154           clocks = <&rcc 0 25>, <&rcc 0 26>, <&rcc 0 27>;
155           st,syscon = <&syscfg 0x4>;
156           snps,pbl = <8>;
157           snps,mixed-burst;
158           phy-mode = "mii";
159       };
160
161  - |
162    //Example 3
163     ethernet2: ethernet@40027000 {
164           compatible = "st,stm32-dwmac", "snps,dwmac-4.10a";
165           reg = <0x40028000 0x8000>;
166           reg-names = "stmmaceth";
167           interrupts = <61>;
168           interrupt-names = "macirq";
169           clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx";
170           clocks = <&rcc 62>, <&rcc 61>, <&rcc 60>;
171           st,syscon = <&syscfg 0x4>;
172           snps,pbl = <8>;
173           phy-mode = "mii";
174       };
175