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