1# SPDX-License-Identifier: GPL-2.0 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/net/snps,dwmac.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Synopsys DesignWare MAC Device Tree Bindings 8 9maintainers: 10 - Alexandre Torgue <alexandre.torgue@st.com> 11 - Giuseppe Cavallaro <peppe.cavallaro@st.com> 12 - Jose Abreu <joabreu@synopsys.com> 13 14# Select every compatible, including the deprecated ones. This way, we 15# will be able to report a warning when we have that compatible, since 16# we will validate the node thanks to the select, but won't report it 17# as a valid value in the compatible property description 18select: 19 properties: 20 compatible: 21 contains: 22 enum: 23 - snps,dwmac 24 - snps,dwmac-3.50a 25 - snps,dwmac-3.610 26 - snps,dwmac-3.70a 27 - snps,dwmac-3.710 28 - snps,dwmac-4.00 29 - snps,dwmac-4.10a 30 - snps,dwmac-4.20a 31 - snps,dwxgmac 32 - snps,dwxgmac-2.10 33 34 # Deprecated 35 - st,spear600-gmac 36 37 required: 38 - compatible 39 40properties: 41 42 # We need to include all the compatibles from schemas that will 43 # include that schemas, otherwise compatible won't validate for 44 # those. 45 compatible: 46 contains: 47 enum: 48 - allwinner,sun7i-a20-gmac 49 - allwinner,sun8i-a83t-emac 50 - allwinner,sun8i-h3-emac 51 - allwinner,sun8i-r40-emac 52 - allwinner,sun8i-v3s-emac 53 - allwinner,sun50i-a64-emac 54 - amlogic,meson6-dwmac 55 - amlogic,meson8b-dwmac 56 - amlogic,meson8m2-dwmac 57 - amlogic,meson-gxbb-dwmac 58 - amlogic,meson-axg-dwmac 59 - rockchip,px30-gmac 60 - rockchip,rk3128-gmac 61 - rockchip,rk3228-gmac 62 - rockchip,rk3288-gmac 63 - rockchip,rk3328-gmac 64 - rockchip,rk3366-gmac 65 - rockchip,rk3368-gmac 66 - rockchip,rk3399-gmac 67 - rockchip,rv1108-gmac 68 - snps,dwmac 69 - snps,dwmac-3.50a 70 - snps,dwmac-3.610 71 - snps,dwmac-3.70a 72 - snps,dwmac-3.710 73 - snps,dwmac-4.00 74 - snps,dwmac-4.10a 75 - snps,dwmac-4.20a 76 - snps,dwxgmac 77 - snps,dwxgmac-2.10 78 79 reg: 80 minItems: 1 81 maxItems: 2 82 83 interrupts: 84 minItems: 1 85 maxItems: 3 86 items: 87 - description: Combined signal for various interrupt events 88 - description: The interrupt to manage the remote wake-up packet detection 89 - description: The interrupt that occurs when Rx exits the LPI state 90 91 interrupt-names: 92 minItems: 1 93 maxItems: 3 94 items: 95 - const: macirq 96 - const: eth_wake_irq 97 - const: eth_lpi 98 99 clocks: 100 minItems: 1 101 maxItems: 8 102 additionalItems: true 103 items: 104 - description: GMAC main clock 105 - description: Peripheral registers interface clock 106 - description: 107 PTP reference clock. This clock is used for programming the 108 Timestamp Addend Register. If not passed then the system 109 clock will be used and this is fine on some platforms. 110 111 clock-names: 112 minItems: 1 113 maxItems: 8 114 additionalItems: true 115 contains: 116 enum: 117 - stmmaceth 118 - pclk 119 - ptp_ref 120 121 resets: 122 maxItems: 1 123 description: 124 MAC Reset signal. 125 126 reset-names: 127 const: stmmaceth 128 129 mac-mode: 130 $ref: ethernet-controller.yaml#/properties/phy-connection-type 131 description: 132 The property is identical to 'phy-mode', and assumes that there is mode 133 converter in-between the MAC & PHY (e.g. GMII-to-RGMII). This converter 134 can be passive (no SW requirement), and requires that the MAC operate 135 in a different mode than the PHY in order to function. 136 137 snps,axi-config: 138 $ref: /schemas/types.yaml#/definitions/phandle 139 description: 140 AXI BUS Mode parameters. Phandle to a node that can contain the 141 following properties 142 * snps,lpi_en, enable Low Power Interface 143 * snps,xit_frm, unlock on WoL 144 * snps,wr_osr_lmt, max write outstanding req. limit 145 * snps,rd_osr_lmt, max read outstanding req. limit 146 * snps,kbbe, do not cross 1KiB boundary. 147 * snps,blen, this is a vector of supported burst length. 148 * snps,fb, fixed-burst 149 * snps,mb, mixed-burst 150 * snps,rb, rebuild INCRx Burst 151 152 snps,mtl-rx-config: 153 $ref: /schemas/types.yaml#/definitions/phandle 154 description: 155 Multiple RX Queues parameters. Phandle to a node that can 156 contain the following properties 157 * snps,rx-queues-to-use, number of RX queues to be used in the 158 driver 159 * Choose one of these RX scheduling algorithms 160 * snps,rx-sched-sp, Strict priority 161 * snps,rx-sched-wsp, Weighted Strict priority 162 * For each RX queue 163 * Choose one of these modes 164 * snps,dcb-algorithm, Queue to be enabled as DCB 165 * snps,avb-algorithm, Queue to be enabled as AVB 166 * snps,map-to-dma-channel, Channel to map 167 * Specifiy specific packet routing 168 * snps,route-avcp, AV Untagged Control packets 169 * snps,route-ptp, PTP Packets 170 * snps,route-dcbcp, DCB Control Packets 171 * snps,route-up, Untagged Packets 172 * snps,route-multi-broad, Multicast & Broadcast Packets 173 * snps,priority, bitmask of the tagged frames priorities assigned to 174 the queue 175 176 snps,mtl-tx-config: 177 $ref: /schemas/types.yaml#/definitions/phandle 178 description: 179 Multiple TX Queues parameters. Phandle to a node that can 180 contain the following properties 181 * snps,tx-queues-to-use, number of TX queues to be used in the 182 driver 183 * Choose one of these TX scheduling algorithms 184 * snps,tx-sched-wrr, Weighted Round Robin 185 * snps,tx-sched-wfq, Weighted Fair Queuing 186 * snps,tx-sched-dwrr, Deficit Weighted Round Robin 187 * snps,tx-sched-sp, Strict priority 188 * For each TX queue 189 * snps,weight, TX queue weight (if using a DCB weight 190 algorithm) 191 * Choose one of these modes 192 * snps,dcb-algorithm, TX queue will be working in DCB 193 * snps,avb-algorithm, TX queue will be working in AVB 194 [Attention] Queue 0 is reserved for legacy traffic 195 and so no AVB is available in this queue. 196 * Configure Credit Base Shaper (if AVB Mode selected) 197 * snps,send_slope, enable Low Power Interface 198 * snps,idle_slope, unlock on WoL 199 * snps,high_credit, max write outstanding req. limit 200 * snps,low_credit, max read outstanding req. limit 201 * snps,priority, bitmask of the priorities assigned to the queue. 202 When a PFC frame is received with priorities matching the bitmask, 203 the queue is blocked from transmitting for the pause time specified 204 in the PFC frame. 205 206 snps,reset-gpio: 207 deprecated: true 208 maxItems: 1 209 description: 210 PHY Reset GPIO 211 212 snps,reset-active-low: 213 deprecated: true 214 $ref: /schemas/types.yaml#/definitions/flag 215 description: 216 Indicates that the PHY Reset is active low 217 218 snps,reset-delays-us: 219 deprecated: true 220 description: 221 Triplet of delays. The 1st cell is reset pre-delay in micro 222 seconds. The 2nd cell is reset pulse in micro seconds. The 3rd 223 cell is reset post-delay in micro seconds. 224 minItems: 3 225 maxItems: 3 226 227 snps,aal: 228 $ref: /schemas/types.yaml#/definitions/flag 229 description: 230 Use Address-Aligned Beats 231 232 snps,fixed-burst: 233 $ref: /schemas/types.yaml#/definitions/flag 234 description: 235 Program the DMA to use the fixed burst mode 236 237 snps,mixed-burst: 238 $ref: /schemas/types.yaml#/definitions/flag 239 description: 240 Program the DMA to use the mixed burst mode 241 242 snps,force_thresh_dma_mode: 243 $ref: /schemas/types.yaml#/definitions/flag 244 description: 245 Force DMA to use the threshold mode for both tx and rx 246 247 snps,force_sf_dma_mode: 248 $ref: /schemas/types.yaml#/definitions/flag 249 description: 250 Force DMA to use the Store and Forward mode for both tx and 251 rx. This flag is ignored if force_thresh_dma_mode is set. 252 253 snps,en-tx-lpi-clockgating: 254 $ref: /schemas/types.yaml#/definitions/flag 255 description: 256 Enable gating of the MAC TX clock during TX low-power mode 257 258 snps,multicast-filter-bins: 259 $ref: /schemas/types.yaml#/definitions/uint32 260 description: 261 Number of multicast filter hash bins supported by this device 262 instance 263 264 snps,perfect-filter-entries: 265 $ref: /schemas/types.yaml#/definitions/uint32 266 description: 267 Number of perfect filter entries supported by this device 268 instance 269 270 snps,ps-speed: 271 $ref: /schemas/types.yaml#/definitions/uint32 272 description: 273 Port selection speed that can be passed to the core when PCS 274 is supported. For example, this is used in case of SGMII and 275 MAC2MAC connection. 276 277 mdio: 278 type: object 279 description: 280 Creates and registers an MDIO bus. 281 282 properties: 283 compatible: 284 const: snps,dwmac-mdio 285 286 required: 287 - compatible 288 289required: 290 - compatible 291 - reg 292 - interrupts 293 - interrupt-names 294 - phy-mode 295 296dependencies: 297 snps,reset-active-low: ["snps,reset-gpio"] 298 snps,reset-delay-us: ["snps,reset-gpio"] 299 300allOf: 301 - $ref: "ethernet-controller.yaml#" 302 - if: 303 properties: 304 compatible: 305 contains: 306 enum: 307 - allwinner,sun7i-a20-gmac 308 - allwinner,sun8i-a83t-emac 309 - allwinner,sun8i-h3-emac 310 - allwinner,sun8i-r40-emac 311 - allwinner,sun8i-v3s-emac 312 - allwinner,sun50i-a64-emac 313 - snps,dwxgmac 314 - snps,dwxgmac-2.10 315 - st,spear600-gmac 316 317 then: 318 properties: 319 snps,pbl: 320 description: 321 Programmable Burst Length (tx and rx) 322 $ref: /schemas/types.yaml#/definitions/uint32 323 enum: [2, 4, 8] 324 325 snps,txpbl: 326 description: 327 Tx Programmable Burst Length. If set, DMA tx will use this 328 value rather than snps,pbl. 329 $ref: /schemas/types.yaml#/definitions/uint32 330 enum: [2, 4, 8] 331 332 snps,rxpbl: 333 description: 334 Rx Programmable Burst Length. If set, DMA rx will use this 335 value rather than snps,pbl. 336 $ref: /schemas/types.yaml#/definitions/uint32 337 enum: [2, 4, 8] 338 339 snps,no-pbl-x8: 340 $ref: /schemas/types.yaml#/definitions/flag 341 description: 342 Don\'t multiply the pbl/txpbl/rxpbl values by 8. For core 343 rev < 3.50, don\'t multiply the values by 4. 344 345 - if: 346 properties: 347 compatible: 348 contains: 349 enum: 350 - allwinner,sun7i-a20-gmac 351 - allwinner,sun8i-a83t-emac 352 - allwinner,sun8i-h3-emac 353 - allwinner,sun8i-r40-emac 354 - allwinner,sun8i-v3s-emac 355 - allwinner,sun50i-a64-emac 356 - snps,dwmac-4.00 357 - snps,dwmac-4.10a 358 - snps,dwmac-4.20a 359 - snps,dwxgmac 360 - snps,dwxgmac-2.10 361 - st,spear600-gmac 362 363 then: 364 properties: 365 snps,tso: 366 $ref: /schemas/types.yaml#/definitions/flag 367 description: 368 Enables the TSO feature otherwise it will be managed by 369 MAC HW capability register. 370 371additionalProperties: true 372 373examples: 374 - | 375 stmmac_axi_setup: stmmac-axi-config { 376 snps,wr_osr_lmt = <0xf>; 377 snps,rd_osr_lmt = <0xf>; 378 snps,blen = <256 128 64 32 0 0 0>; 379 }; 380 381 mtl_rx_setup: rx-queues-config { 382 snps,rx-queues-to-use = <1>; 383 snps,rx-sched-sp; 384 queue0 { 385 snps,dcb-algorithm; 386 snps,map-to-dma-channel = <0x0>; 387 snps,priority = <0x0>; 388 }; 389 }; 390 391 mtl_tx_setup: tx-queues-config { 392 snps,tx-queues-to-use = <2>; 393 snps,tx-sched-wrr; 394 queue0 { 395 snps,weight = <0x10>; 396 snps,dcb-algorithm; 397 snps,priority = <0x0>; 398 }; 399 400 queue1 { 401 snps,avb-algorithm; 402 snps,send_slope = <0x1000>; 403 snps,idle_slope = <0x1000>; 404 snps,high_credit = <0x3E800>; 405 snps,low_credit = <0xFFC18000>; 406 snps,priority = <0x1>; 407 }; 408 }; 409 410 gmac0: ethernet@e0800000 { 411 compatible = "snps,dwxgmac-2.10", "snps,dwxgmac"; 412 reg = <0xe0800000 0x8000>; 413 interrupt-parent = <&vic1>; 414 interrupts = <24 23 22>; 415 interrupt-names = "macirq", "eth_wake_irq", "eth_lpi"; 416 mac-address = [000000000000]; /* Filled in by U-Boot */ 417 max-frame-size = <3800>; 418 phy-mode = "gmii"; 419 snps,multicast-filter-bins = <256>; 420 snps,perfect-filter-entries = <128>; 421 rx-fifo-depth = <16384>; 422 tx-fifo-depth = <16384>; 423 clocks = <&clock>; 424 clock-names = "stmmaceth"; 425 snps,axi-config = <&stmmac_axi_setup>; 426 snps,mtl-rx-config = <&mtl_rx_setup>; 427 snps,mtl-tx-config = <&mtl_tx_setup>; 428 mdio0 { 429 #address-cells = <1>; 430 #size-cells = <0>; 431 compatible = "snps,dwmac-mdio"; 432 phy1: ethernet-phy@0 { 433 reg = <0>; 434 }; 435 }; 436 }; 437 438# FIXME: We should set it, but it would report all the generic 439# properties as additional properties. 440# additionalProperties: false 441 442... 443