xref: /freebsd/sys/contrib/device-tree/Bindings/net/cdns,macb.yaml (revision 01950c46b8155250f64374fb72fc11faa44bf099)
1e67e8565SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2e67e8565SEmmanuel Vadot%YAML 1.2
3e67e8565SEmmanuel Vadot---
4e67e8565SEmmanuel Vadot$id: http://devicetree.org/schemas/net/cdns,macb.yaml#
5e67e8565SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6e67e8565SEmmanuel Vadot
7e67e8565SEmmanuel Vadottitle: Cadence MACB/GEM Ethernet controller
8e67e8565SEmmanuel Vadot
9e67e8565SEmmanuel Vadotmaintainers:
10e67e8565SEmmanuel Vadot  - Nicolas Ferre <nicolas.ferre@microchip.com>
11e67e8565SEmmanuel Vadot  - Claudiu Beznea <claudiu.beznea@microchip.com>
12e67e8565SEmmanuel Vadot
13e67e8565SEmmanuel Vadotproperties:
14e67e8565SEmmanuel Vadot  compatible:
15e67e8565SEmmanuel Vadot    oneOf:
16e67e8565SEmmanuel Vadot      - items:
17e67e8565SEmmanuel Vadot          - enum:
18e67e8565SEmmanuel Vadot              - cdns,at91rm9200-emac  # Atmel at91rm9200 SoC
19e67e8565SEmmanuel Vadot          - const: cdns,emac          # Generic
20e67e8565SEmmanuel Vadot
21e67e8565SEmmanuel Vadot      - items:
22e67e8565SEmmanuel Vadot          - enum:
23e67e8565SEmmanuel Vadot              - cdns,zynq-gem         # Xilinx Zynq-7xxx SoC
24e67e8565SEmmanuel Vadot              - cdns,zynqmp-gem       # Xilinx Zynq Ultrascale+ MPSoC
25e67e8565SEmmanuel Vadot          - const: cdns,gem           # Generic
26b97ee269SEmmanuel Vadot        deprecated: true
27b97ee269SEmmanuel Vadot
28b97ee269SEmmanuel Vadot      - items:
29b97ee269SEmmanuel Vadot          - enum:
30b97ee269SEmmanuel Vadot              - xlnx,versal-gem       # Xilinx Versal
31b97ee269SEmmanuel Vadot              - xlnx,zynq-gem         # Xilinx Zynq-7xxx SoC
32b97ee269SEmmanuel Vadot              - xlnx,zynqmp-gem       # Xilinx Zynq Ultrascale+ MPSoC
33b97ee269SEmmanuel Vadot          - const: cdns,gem           # Generic
34e67e8565SEmmanuel Vadot
35e67e8565SEmmanuel Vadot      - items:
36e67e8565SEmmanuel Vadot          - enum:
37e67e8565SEmmanuel Vadot              - cdns,at91sam9260-macb # Atmel at91sam9 SoCs
38e67e8565SEmmanuel Vadot              - cdns,sam9x60-macb     # Microchip sam9x60 SoC
39b97ee269SEmmanuel Vadot              - microchip,mpfs-macb   # Microchip PolarFire SoC
40e67e8565SEmmanuel Vadot          - const: cdns,macb          # Generic
41e67e8565SEmmanuel Vadot
42e67e8565SEmmanuel Vadot      - items:
43e67e8565SEmmanuel Vadot          - enum:
44e67e8565SEmmanuel Vadot              - atmel,sama5d3-macb    # 10/100Mbit IP on Atmel sama5d3 SoCs
45e67e8565SEmmanuel Vadot          - enum:
46e67e8565SEmmanuel Vadot              - cdns,at91sam9260-macb # Atmel at91sam9 SoCs.
47e67e8565SEmmanuel Vadot          - const: cdns,macb          # Generic
48e67e8565SEmmanuel Vadot
49e67e8565SEmmanuel Vadot      - enum:
50e67e8565SEmmanuel Vadot          - atmel,sama5d29-gem        # GEM XL IP (10/100) on Atmel sama5d29 SoCs
51e67e8565SEmmanuel Vadot          - atmel,sama5d2-gem         # GEM IP (10/100) on Atmel sama5d2 SoCs
52e67e8565SEmmanuel Vadot          - atmel,sama5d3-gem         # Gigabit IP on Atmel sama5d3 SoCs
53e67e8565SEmmanuel Vadot          - atmel,sama5d4-gem         # GEM IP (10/100) on Atmel sama5d4 SoCs
54e67e8565SEmmanuel Vadot          - cdns,np4-macb             # NP4 SoC devices
55e67e8565SEmmanuel Vadot          - microchip,sama7g5-emac    # Microchip SAMA7G5 ethernet interface
56e67e8565SEmmanuel Vadot          - microchip,sama7g5-gem     # Microchip SAMA7G5 gigabit ethernet interface
57e67e8565SEmmanuel Vadot          - sifive,fu540-c000-gem     # SiFive FU540-C000 SoC
58e67e8565SEmmanuel Vadot          - cdns,emac                 # Generic
59e67e8565SEmmanuel Vadot          - cdns,gem                  # Generic
60e67e8565SEmmanuel Vadot          - cdns,macb                 # Generic
61e67e8565SEmmanuel Vadot
62*01950c46SEmmanuel Vadot      - items:
63*01950c46SEmmanuel Vadot          - enum:
64*01950c46SEmmanuel Vadot              - microchip,sam9x7-gem     # Microchip SAM9X7 gigabit ethernet interface
65*01950c46SEmmanuel Vadot          - const: microchip,sama7g5-gem # Microchip SAMA7G5 gigabit ethernet interface
66*01950c46SEmmanuel Vadot
67e67e8565SEmmanuel Vadot  reg:
68e67e8565SEmmanuel Vadot    minItems: 1
69e67e8565SEmmanuel Vadot    items:
70e67e8565SEmmanuel Vadot      - description: Basic register set
71e67e8565SEmmanuel Vadot      - description: GEMGXL Management block registers on SiFive FU540-C000 SoC
72e67e8565SEmmanuel Vadot
73e67e8565SEmmanuel Vadot  interrupts:
74e67e8565SEmmanuel Vadot    minItems: 1
75e67e8565SEmmanuel Vadot    maxItems: 8
76e67e8565SEmmanuel Vadot    description: One interrupt per available hardware queue
77e67e8565SEmmanuel Vadot
78e67e8565SEmmanuel Vadot  clocks:
79e67e8565SEmmanuel Vadot    minItems: 1
80e67e8565SEmmanuel Vadot    maxItems: 5
81e67e8565SEmmanuel Vadot
82e67e8565SEmmanuel Vadot  clock-names:
83e67e8565SEmmanuel Vadot    minItems: 1
84e67e8565SEmmanuel Vadot    items:
85e67e8565SEmmanuel Vadot      - enum: [ ether_clk, hclk, pclk ]
86e67e8565SEmmanuel Vadot      - enum: [ hclk, pclk ]
87e67e8565SEmmanuel Vadot      - const: tx_clk
88e67e8565SEmmanuel Vadot      - enum: [ rx_clk, tsu_clk ]
89e67e8565SEmmanuel Vadot      - const: tsu_clk
90e67e8565SEmmanuel Vadot
91e67e8565SEmmanuel Vadot  local-mac-address: true
92e67e8565SEmmanuel Vadot
93e67e8565SEmmanuel Vadot  phy-mode: true
94e67e8565SEmmanuel Vadot
95e67e8565SEmmanuel Vadot  phy-handle: true
96e67e8565SEmmanuel Vadot
97c9ccf3a3SEmmanuel Vadot  phys:
98c9ccf3a3SEmmanuel Vadot    maxItems: 1
99c9ccf3a3SEmmanuel Vadot
100c9ccf3a3SEmmanuel Vadot  resets:
101c9ccf3a3SEmmanuel Vadot    maxItems: 1
102c9ccf3a3SEmmanuel Vadot    description:
103c9ccf3a3SEmmanuel Vadot      Recommended with ZynqMP, specify reset control for this
104c9ccf3a3SEmmanuel Vadot      controller instance with zynqmp-reset driver.
105c9ccf3a3SEmmanuel Vadot
106c9ccf3a3SEmmanuel Vadot  reset-names:
107c9ccf3a3SEmmanuel Vadot    maxItems: 1
108c9ccf3a3SEmmanuel Vadot
109e67e8565SEmmanuel Vadot  fixed-link: true
110e67e8565SEmmanuel Vadot
111e67e8565SEmmanuel Vadot  iommus:
112e67e8565SEmmanuel Vadot    maxItems: 1
113e67e8565SEmmanuel Vadot
114e67e8565SEmmanuel Vadot  power-domains:
115e67e8565SEmmanuel Vadot    maxItems: 1
116e67e8565SEmmanuel Vadot
117f126890aSEmmanuel Vadot  cdns,rx-watermark:
118f126890aSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
119f126890aSEmmanuel Vadot    description:
120f126890aSEmmanuel Vadot      When the receive partial store and forward mode is activated,
121f126890aSEmmanuel Vadot      the receiver will only begin to forward the packet to the external
122f126890aSEmmanuel Vadot      AHB or AXI slave when enough packet data is stored in the SRAM packet buffer.
123f126890aSEmmanuel Vadot      rx-watermark corresponds to the number of SRAM buffer locations,
124f126890aSEmmanuel Vadot      that need to be filled, before the forwarding process is activated.
125f126890aSEmmanuel Vadot      Width of the SRAM is platform dependent, and can be 4, 8 or 16 bytes.
126f126890aSEmmanuel Vadot
127e67e8565SEmmanuel Vadot  '#address-cells':
128e67e8565SEmmanuel Vadot    const: 1
129e67e8565SEmmanuel Vadot
130e67e8565SEmmanuel Vadot  '#size-cells':
131e67e8565SEmmanuel Vadot    const: 0
132e67e8565SEmmanuel Vadot
133e67e8565SEmmanuel Vadot  mdio:
134e67e8565SEmmanuel Vadot    type: object
135e67e8565SEmmanuel Vadot    description:
136e67e8565SEmmanuel Vadot      Node containing PHY children. If this node is not present, then PHYs will
137e67e8565SEmmanuel Vadot      be direct children.
138e67e8565SEmmanuel Vadot
139e67e8565SEmmanuel VadotpatternProperties:
140e67e8565SEmmanuel Vadot  "^ethernet-phy@[0-9a-f]$":
141e67e8565SEmmanuel Vadot    type: object
142e67e8565SEmmanuel Vadot    $ref: ethernet-phy.yaml#
143e67e8565SEmmanuel Vadot
144e67e8565SEmmanuel Vadot    properties:
145e67e8565SEmmanuel Vadot      reset-gpios: true
146e67e8565SEmmanuel Vadot
147e67e8565SEmmanuel Vadot      magic-packet:
148d5b0e70fSEmmanuel Vadot        type: boolean
149e67e8565SEmmanuel Vadot        description:
150e67e8565SEmmanuel Vadot          Indicates that the hardware supports waking up via magic packet.
151e67e8565SEmmanuel Vadot
152e67e8565SEmmanuel Vadot    unevaluatedProperties: false
153e67e8565SEmmanuel Vadot
154e67e8565SEmmanuel Vadotrequired:
155e67e8565SEmmanuel Vadot  - compatible
156e67e8565SEmmanuel Vadot  - reg
157e67e8565SEmmanuel Vadot  - interrupts
158e67e8565SEmmanuel Vadot  - clocks
159e67e8565SEmmanuel Vadot  - clock-names
160e67e8565SEmmanuel Vadot  - phy-mode
161e67e8565SEmmanuel Vadot
162e67e8565SEmmanuel VadotallOf:
163e67e8565SEmmanuel Vadot  - $ref: ethernet-controller.yaml#
164e67e8565SEmmanuel Vadot
165e67e8565SEmmanuel Vadot  - if:
166e67e8565SEmmanuel Vadot      not:
167e67e8565SEmmanuel Vadot        properties:
168e67e8565SEmmanuel Vadot          compatible:
169e67e8565SEmmanuel Vadot            contains:
170e67e8565SEmmanuel Vadot              const: sifive,fu540-c000-gem
171e67e8565SEmmanuel Vadot    then:
172e67e8565SEmmanuel Vadot      properties:
173e67e8565SEmmanuel Vadot        reg:
174e67e8565SEmmanuel Vadot          maxItems: 1
175e67e8565SEmmanuel Vadot
176e67e8565SEmmanuel VadotunevaluatedProperties: false
177e67e8565SEmmanuel Vadot
178e67e8565SEmmanuel Vadotexamples:
179e67e8565SEmmanuel Vadot  - |
180e67e8565SEmmanuel Vadot    macb0: ethernet@fffc4000 {
181b97ee269SEmmanuel Vadot            compatible = "cdns,macb";
182e67e8565SEmmanuel Vadot            reg = <0xfffc4000 0x4000>;
183e67e8565SEmmanuel Vadot            interrupts = <21>;
184f126890aSEmmanuel Vadot            cdns,rx-watermark = <0x44>;
185e67e8565SEmmanuel Vadot            phy-mode = "rmii";
186e67e8565SEmmanuel Vadot            local-mac-address = [3a 0e 03 04 05 06];
187e67e8565SEmmanuel Vadot            clock-names = "pclk", "hclk", "tx_clk";
188e67e8565SEmmanuel Vadot            clocks = <&clkc 30>, <&clkc 30>, <&clkc 13>;
189e67e8565SEmmanuel Vadot            #address-cells = <1>;
190e67e8565SEmmanuel Vadot            #size-cells = <0>;
191e67e8565SEmmanuel Vadot
192e67e8565SEmmanuel Vadot            ethernet-phy@1 {
193e67e8565SEmmanuel Vadot                    reg = <0x1>;
194e67e8565SEmmanuel Vadot                    reset-gpios = <&pioE 6 1>;
195e67e8565SEmmanuel Vadot            };
196e67e8565SEmmanuel Vadot    };
197c9ccf3a3SEmmanuel Vadot
198c9ccf3a3SEmmanuel Vadot  - |
199c9ccf3a3SEmmanuel Vadot    #include <dt-bindings/clock/xlnx-zynqmp-clk.h>
200c9ccf3a3SEmmanuel Vadot    #include <dt-bindings/power/xlnx-zynqmp-power.h>
201c9ccf3a3SEmmanuel Vadot    #include <dt-bindings/reset/xlnx-zynqmp-resets.h>
202c9ccf3a3SEmmanuel Vadot    #include <dt-bindings/phy/phy.h>
203c9ccf3a3SEmmanuel Vadot
204c9ccf3a3SEmmanuel Vadot    bus {
205c9ccf3a3SEmmanuel Vadot            #address-cells = <2>;
206c9ccf3a3SEmmanuel Vadot            #size-cells = <2>;
207c9ccf3a3SEmmanuel Vadot            gem1: ethernet@ff0c0000 {
208b97ee269SEmmanuel Vadot                    compatible = "xlnx,zynqmp-gem", "cdns,gem";
209c9ccf3a3SEmmanuel Vadot                    interrupt-parent = <&gic>;
210c9ccf3a3SEmmanuel Vadot                    interrupts = <0 59 4>, <0 59 4>;
211c9ccf3a3SEmmanuel Vadot                    reg = <0x0 0xff0c0000 0x0 0x1000>;
212c9ccf3a3SEmmanuel Vadot                    clocks = <&zynqmp_clk LPD_LSBUS>, <&zynqmp_clk GEM1_REF>,
213c9ccf3a3SEmmanuel Vadot                             <&zynqmp_clk GEM1_TX>, <&zynqmp_clk GEM1_RX>,
214c9ccf3a3SEmmanuel Vadot                             <&zynqmp_clk GEM_TSU>;
215c9ccf3a3SEmmanuel Vadot                    clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk";
216c9ccf3a3SEmmanuel Vadot                    #address-cells = <1>;
217c9ccf3a3SEmmanuel Vadot                    #size-cells = <0>;
218c9ccf3a3SEmmanuel Vadot                    iommus = <&smmu 0x875>;
219c9ccf3a3SEmmanuel Vadot                    power-domains = <&zynqmp_firmware PD_ETH_1>;
220c9ccf3a3SEmmanuel Vadot                    resets = <&zynqmp_reset ZYNQMP_RESET_GEM1>;
221c9ccf3a3SEmmanuel Vadot                    reset-names = "gem1_rst";
222c9ccf3a3SEmmanuel Vadot                    phy-mode = "sgmii";
223c9ccf3a3SEmmanuel Vadot                    phys = <&psgtr 1 PHY_TYPE_SGMII 1 1>;
224c9ccf3a3SEmmanuel Vadot                    fixed-link {
225c9ccf3a3SEmmanuel Vadot                            speed = <1000>;
226c9ccf3a3SEmmanuel Vadot                            full-duplex;
227c9ccf3a3SEmmanuel Vadot                            pause;
228c9ccf3a3SEmmanuel Vadot                    };
229c9ccf3a3SEmmanuel Vadot            };
230c9ccf3a3SEmmanuel Vadot    };
231