xref: /freebsd-src/sys/contrib/device-tree/Bindings/net/stm32-dwmac.yaml (revision 0e8011faf58b743cc652e3b2ad0f7671227610df)
1c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2c66ec88fSEmmanuel Vadot# Copyright 2019 BayLibre, SAS
3c66ec88fSEmmanuel Vadot%YAML 1.2
4c66ec88fSEmmanuel Vadot---
5fac71e4eSEmmanuel Vadot$id: http://devicetree.org/schemas/net/stm32-dwmac.yaml#
6fac71e4eSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
7c66ec88fSEmmanuel Vadot
8c66ec88fSEmmanuel Vadottitle: STMicroelectronics STM32 / MCU DWMAC glue layer controller
9c66ec88fSEmmanuel Vadot
10c66ec88fSEmmanuel Vadotmaintainers:
118cc087a1SEmmanuel Vadot  - Alexandre Torgue <alexandre.torgue@foss.st.com>
128cc087a1SEmmanuel Vadot  - Christophe Roullier <christophe.roullier@foss.st.com>
13c66ec88fSEmmanuel Vadot
14c66ec88fSEmmanuel Vadotdescription:
15c66ec88fSEmmanuel Vadot  This file documents platform glue layer for stmmac.
16c66ec88fSEmmanuel Vadot
17c66ec88fSEmmanuel Vadot# We need a select here so we don't match all nodes with 'snps,dwmac'
18c66ec88fSEmmanuel Vadotselect:
19c66ec88fSEmmanuel Vadot  properties:
20c66ec88fSEmmanuel Vadot    compatible:
21c66ec88fSEmmanuel Vadot      contains:
22c66ec88fSEmmanuel Vadot        enum:
23c66ec88fSEmmanuel Vadot          - st,stm32-dwmac
24c66ec88fSEmmanuel Vadot          - st,stm32mp1-dwmac
25*0e8011faSEmmanuel Vadot          - st,stm32mp13-dwmac
26*0e8011faSEmmanuel Vadot          - st,stm32mp25-dwmac
27c66ec88fSEmmanuel Vadot  required:
28c66ec88fSEmmanuel Vadot    - compatible
29c66ec88fSEmmanuel Vadot
30c66ec88fSEmmanuel Vadotproperties:
31c66ec88fSEmmanuel Vadot  compatible:
32c66ec88fSEmmanuel Vadot    oneOf:
33c66ec88fSEmmanuel Vadot      - items:
34c66ec88fSEmmanuel Vadot          - enum:
35*0e8011faSEmmanuel Vadot              - st,stm32mp25-dwmac
36*0e8011faSEmmanuel Vadot          - const: snps,dwmac-5.20
37*0e8011faSEmmanuel Vadot      - items:
38*0e8011faSEmmanuel Vadot          - enum:
39c66ec88fSEmmanuel Vadot              - st,stm32mp1-dwmac
40*0e8011faSEmmanuel Vadot              - st,stm32mp13-dwmac
41c66ec88fSEmmanuel Vadot          - const: snps,dwmac-4.20a
42c66ec88fSEmmanuel Vadot      - items:
43c66ec88fSEmmanuel Vadot          - enum:
44c66ec88fSEmmanuel Vadot              - st,stm32-dwmac
45c66ec88fSEmmanuel Vadot          - const: snps,dwmac-4.10a
46c66ec88fSEmmanuel Vadot      - items:
47c66ec88fSEmmanuel Vadot          - enum:
48c66ec88fSEmmanuel Vadot              - st,stm32-dwmac
49c66ec88fSEmmanuel Vadot          - const: snps,dwmac-3.50a
50c66ec88fSEmmanuel Vadot
51e67e8565SEmmanuel Vadot  reg: true
52e67e8565SEmmanuel Vadot
53e67e8565SEmmanuel Vadot  reg-names:
54e67e8565SEmmanuel Vadot    items:
55e67e8565SEmmanuel Vadot      - const: stmmaceth
56e67e8565SEmmanuel Vadot
57c66ec88fSEmmanuel Vadot  clocks:
58c66ec88fSEmmanuel Vadot    minItems: 3
59c66ec88fSEmmanuel Vadot    items:
60c66ec88fSEmmanuel Vadot      - description: GMAC main clock
61c66ec88fSEmmanuel Vadot      - description: MAC TX clock
62c66ec88fSEmmanuel Vadot      - description: MAC RX clock
63c66ec88fSEmmanuel Vadot      - description: For MPU family, used for power mode
64c66ec88fSEmmanuel Vadot      - description: For MPU family, used for PHY without quartz
655956d97fSEmmanuel Vadot      - description: PTP clock
66c66ec88fSEmmanuel Vadot
67c66ec88fSEmmanuel Vadot  clock-names:
68c66ec88fSEmmanuel Vadot    minItems: 3
695956d97fSEmmanuel Vadot    maxItems: 6
70c66ec88fSEmmanuel Vadot    contains:
71c66ec88fSEmmanuel Vadot      enum:
72c66ec88fSEmmanuel Vadot        - stmmaceth
73c66ec88fSEmmanuel Vadot        - mac-clk-tx
74c66ec88fSEmmanuel Vadot        - mac-clk-rx
75c66ec88fSEmmanuel Vadot        - ethstp
76c66ec88fSEmmanuel Vadot        - eth-ck
775956d97fSEmmanuel Vadot        - ptp_ref
78c66ec88fSEmmanuel Vadot
79c66ec88fSEmmanuel Vadot  st,syscon:
80fac71e4eSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/phandle-array
81c9ccf3a3SEmmanuel Vadot    items:
82*0e8011faSEmmanuel Vadot      - minItems: 2
83*0e8011faSEmmanuel Vadot        items:
84c9ccf3a3SEmmanuel Vadot          - description: phandle to the syscon node which encompases the glue register
85c9ccf3a3SEmmanuel Vadot          - description: offset of the control register
86*0e8011faSEmmanuel Vadot          - description: field to set mask in register
87c66ec88fSEmmanuel Vadot    description:
88c66ec88fSEmmanuel Vadot      Should be phandle/offset pair. The phandle to the syscon node which
89*0e8011faSEmmanuel Vadot      encompases the glue register, the offset of the control register and
90*0e8011faSEmmanuel Vadot      the mask to set bitfield in control register
91c66ec88fSEmmanuel Vadot
927d0873ebSEmmanuel Vadot  st,ext-phyclk:
937d0873ebSEmmanuel Vadot    description:
947d0873ebSEmmanuel Vadot      set this property in RMII mode when you have PHY without crystal 50MHz and want to
957d0873ebSEmmanuel Vadot      select RCC clock instead of ETH_REF_CLK. OR in RGMII mode when you want to select
967d0873ebSEmmanuel Vadot      RCC clock instead of ETH_CLK125.
977d0873ebSEmmanuel Vadot    type: boolean
987d0873ebSEmmanuel Vadot
99c66ec88fSEmmanuel Vadot  st,eth-clk-sel:
100c66ec88fSEmmanuel Vadot    description:
101c66ec88fSEmmanuel Vadot      set this property in RGMII PHY when you want to select RCC clock instead of ETH_CLK125.
102c66ec88fSEmmanuel Vadot    type: boolean
103c66ec88fSEmmanuel Vadot
104c66ec88fSEmmanuel Vadot  st,eth-ref-clk-sel:
105c66ec88fSEmmanuel Vadot    description:
106c66ec88fSEmmanuel Vadot      set this property in RMII mode when you have PHY without crystal 50MHz and want to
107c66ec88fSEmmanuel Vadot      select RCC clock instead of ETH_REF_CLK.
108c66ec88fSEmmanuel Vadot    type: boolean
109c66ec88fSEmmanuel Vadot
1107d0873ebSEmmanuel Vadot  access-controllers:
1117d0873ebSEmmanuel Vadot    minItems: 1
1127d0873ebSEmmanuel Vadot    maxItems: 2
1137d0873ebSEmmanuel Vadot
114c66ec88fSEmmanuel Vadotrequired:
115c66ec88fSEmmanuel Vadot  - compatible
116c66ec88fSEmmanuel Vadot  - clocks
117c66ec88fSEmmanuel Vadot  - clock-names
118c66ec88fSEmmanuel Vadot  - st,syscon
119c66ec88fSEmmanuel Vadot
1206be33864SEmmanuel VadotunevaluatedProperties: false
1216be33864SEmmanuel Vadot
122*0e8011faSEmmanuel VadotallOf:
123*0e8011faSEmmanuel Vadot  - $ref: snps,dwmac.yaml#
124*0e8011faSEmmanuel Vadot  - if:
125*0e8011faSEmmanuel Vadot      properties:
126*0e8011faSEmmanuel Vadot        compatible:
127*0e8011faSEmmanuel Vadot          contains:
128*0e8011faSEmmanuel Vadot            enum:
129*0e8011faSEmmanuel Vadot              - st,stm32-dwmac
130*0e8011faSEmmanuel Vadot              - st,stm32mp1-dwmac
131*0e8011faSEmmanuel Vadot              - st,stm32mp25-dwmac
132*0e8011faSEmmanuel Vadot    then:
133*0e8011faSEmmanuel Vadot      properties:
134*0e8011faSEmmanuel Vadot        st,syscon:
135*0e8011faSEmmanuel Vadot          items:
136*0e8011faSEmmanuel Vadot            minItems: 2
137*0e8011faSEmmanuel Vadot            maxItems: 2
138*0e8011faSEmmanuel Vadot
139*0e8011faSEmmanuel Vadot  - if:
140*0e8011faSEmmanuel Vadot      properties:
141*0e8011faSEmmanuel Vadot        compatible:
142*0e8011faSEmmanuel Vadot          contains:
143*0e8011faSEmmanuel Vadot            enum:
144*0e8011faSEmmanuel Vadot              - st,stm32mp13-dwmac
145*0e8011faSEmmanuel Vadot    then:
146*0e8011faSEmmanuel Vadot      properties:
147*0e8011faSEmmanuel Vadot        st,syscon:
148*0e8011faSEmmanuel Vadot          items:
149*0e8011faSEmmanuel Vadot            minItems: 3
150*0e8011faSEmmanuel Vadot            maxItems: 3
151*0e8011faSEmmanuel Vadot
152c66ec88fSEmmanuel Vadotexamples:
153c66ec88fSEmmanuel Vadot  - |
154c66ec88fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
155c66ec88fSEmmanuel Vadot    #include <dt-bindings/clock/stm32mp1-clks.h>
156c66ec88fSEmmanuel Vadot    //Example 1
157c66ec88fSEmmanuel Vadot     ethernet0: ethernet@5800a000 {
158c66ec88fSEmmanuel Vadot           compatible = "st,stm32mp1-dwmac", "snps,dwmac-4.20a";
159c66ec88fSEmmanuel Vadot           reg = <0x5800a000 0x2000>;
160c66ec88fSEmmanuel Vadot           reg-names = "stmmaceth";
161e67e8565SEmmanuel Vadot           interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
162c66ec88fSEmmanuel Vadot           interrupt-names = "macirq";
163c66ec88fSEmmanuel Vadot           clock-names = "stmmaceth",
164c66ec88fSEmmanuel Vadot                     "mac-clk-tx",
165c66ec88fSEmmanuel Vadot                     "mac-clk-rx",
166c66ec88fSEmmanuel Vadot                     "ethstp",
167c66ec88fSEmmanuel Vadot                     "eth-ck";
168c66ec88fSEmmanuel Vadot           clocks = <&rcc ETHMAC>,
169c66ec88fSEmmanuel Vadot                <&rcc ETHTX>,
170c66ec88fSEmmanuel Vadot                <&rcc ETHRX>,
171c66ec88fSEmmanuel Vadot                <&rcc ETHSTP>,
172c66ec88fSEmmanuel Vadot                <&rcc ETHCK_K>;
173c66ec88fSEmmanuel Vadot           st,syscon = <&syscfg 0x4>;
174c66ec88fSEmmanuel Vadot           snps,pbl = <2>;
175c66ec88fSEmmanuel Vadot           snps,axi-config = <&stmmac_axi_config_0>;
176c66ec88fSEmmanuel Vadot           snps,tso;
177c66ec88fSEmmanuel Vadot           phy-mode = "rgmii";
178c66ec88fSEmmanuel Vadot       };
179c66ec88fSEmmanuel Vadot
180e67e8565SEmmanuel Vadot  - |
181c66ec88fSEmmanuel Vadot    //Example 2 (MCU example)
182c66ec88fSEmmanuel Vadot     ethernet1: ethernet@40028000 {
183c66ec88fSEmmanuel Vadot           compatible = "st,stm32-dwmac", "snps,dwmac-3.50a";
184c66ec88fSEmmanuel Vadot           reg = <0x40028000 0x8000>;
185c66ec88fSEmmanuel Vadot           reg-names = "stmmaceth";
186c66ec88fSEmmanuel Vadot           interrupts = <0 61 0>, <0 62 0>;
187c66ec88fSEmmanuel Vadot           interrupt-names = "macirq", "eth_wake_irq";
188c66ec88fSEmmanuel Vadot           clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx";
189c66ec88fSEmmanuel Vadot           clocks = <&rcc 0 25>, <&rcc 0 26>, <&rcc 0 27>;
190c66ec88fSEmmanuel Vadot           st,syscon = <&syscfg 0x4>;
191c66ec88fSEmmanuel Vadot           snps,pbl = <8>;
192c66ec88fSEmmanuel Vadot           snps,mixed-burst;
193c66ec88fSEmmanuel Vadot           phy-mode = "mii";
194c66ec88fSEmmanuel Vadot       };
195c66ec88fSEmmanuel Vadot
196e67e8565SEmmanuel Vadot  - |
197c66ec88fSEmmanuel Vadot    //Example 3
198c66ec88fSEmmanuel Vadot     ethernet2: ethernet@40027000 {
199c66ec88fSEmmanuel Vadot           compatible = "st,stm32-dwmac", "snps,dwmac-4.10a";
200c66ec88fSEmmanuel Vadot           reg = <0x40028000 0x8000>;
201c66ec88fSEmmanuel Vadot           reg-names = "stmmaceth";
202c66ec88fSEmmanuel Vadot           interrupts = <61>;
203c66ec88fSEmmanuel Vadot           interrupt-names = "macirq";
204c66ec88fSEmmanuel Vadot           clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx";
205c66ec88fSEmmanuel Vadot           clocks = <&rcc 62>, <&rcc 61>, <&rcc 60>;
206c66ec88fSEmmanuel Vadot           st,syscon = <&syscfg 0x4>;
207c66ec88fSEmmanuel Vadot           snps,pbl = <8>;
208c66ec88fSEmmanuel Vadot           phy-mode = "mii";
209c66ec88fSEmmanuel Vadot       };
210