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 8 9maintainers: 10 - Alexandre Torgue <alexandre.torgue@foss.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.40a 25 - snps,dwmac-3.50a 26 - snps,dwmac-3.610 27 - snps,dwmac-3.70a 28 - snps,dwmac-3.710 29 - snps,dwmac-4.00 30 - snps,dwmac-4.10a 31 - snps,dwmac-4.20a 32 - snps,dwmac-5.10a 33 - snps,dwmac-5.20 34 - snps,dwxgmac 35 - snps,dwxgmac-2.10 36 37 # Deprecated 38 - st,spear600-gmac 39 40 required: 41 - compatible 42 43properties: 44 45 # We need to include all the compatibles from schemas that will 46 # include that schemas, otherwise compatible won't validate for 47 # those. 48 compatible: 49 contains: 50 enum: 51 - allwinner,sun7i-a20-gmac 52 - allwinner,sun8i-a83t-emac 53 - allwinner,sun8i-h3-emac 54 - allwinner,sun8i-r40-gmac 55 - allwinner,sun8i-v3s-emac 56 - allwinner,sun50i-a64-emac 57 - amlogic,meson6-dwmac 58 - amlogic,meson8b-dwmac 59 - amlogic,meson8m2-dwmac 60 - amlogic,meson-gxbb-dwmac 61 - amlogic,meson-axg-dwmac 62 - ingenic,jz4775-mac 63 - ingenic,x1000-mac 64 - ingenic,x1600-mac 65 - ingenic,x1830-mac 66 - ingenic,x2000-mac 67 - loongson,ls2k-dwmac 68 - loongson,ls7a-dwmac 69 - qcom,qcs404-ethqos 70 - qcom,sa8775p-ethqos 71 - qcom,sc8280xp-ethqos 72 - qcom,sm8150-ethqos 73 - renesas,r9a06g032-gmac 74 - renesas,rzn1-gmac 75 - rockchip,px30-gmac 76 - rockchip,rk3128-gmac 77 - rockchip,rk3228-gmac 78 - rockchip,rk3288-gmac 79 - rockchip,rk3328-gmac 80 - rockchip,rk3366-gmac 81 - rockchip,rk3368-gmac 82 - rockchip,rk3588-gmac 83 - rockchip,rk3399-gmac 84 - rockchip,rv1108-gmac 85 - snps,dwmac 86 - snps,dwmac-3.40a 87 - snps,dwmac-3.50a 88 - snps,dwmac-3.610 89 - snps,dwmac-3.70a 90 - snps,dwmac-3.710 91 - snps,dwmac-4.00 92 - snps,dwmac-4.10a 93 - snps,dwmac-4.20a 94 - snps,dwmac-5.10a 95 - snps,dwmac-5.20 96 - snps,dwxgmac 97 - snps,dwxgmac-2.10 98 - starfive,jh7110-dwmac 99 100 reg: 101 minItems: 1 102 maxItems: 2 103 104 interrupts: 105 minItems: 1 106 items: 107 - description: Combined signal for various interrupt events 108 - description: The interrupt to manage the remote wake-up packet detection 109 - description: The interrupt that occurs when Rx exits the LPI state 110 111 interrupt-names: 112 minItems: 1 113 items: 114 - const: macirq 115 - enum: [eth_wake_irq, eth_lpi] 116 - const: eth_lpi 117 118 clocks: 119 minItems: 1 120 maxItems: 8 121 additionalItems: true 122 items: 123 - description: GMAC main clock 124 - description: Peripheral registers interface clock 125 - description: 126 PTP reference clock. This clock is used for programming the 127 Timestamp Addend Register. If not passed then the system 128 clock will be used and this is fine on some platforms. 129 130 clock-names: 131 minItems: 1 132 maxItems: 8 133 additionalItems: true 134 contains: 135 enum: 136 - stmmaceth 137 - pclk 138 - ptp_ref 139 140 resets: 141 minItems: 1 142 items: 143 - description: GMAC stmmaceth reset 144 - description: AHB reset 145 146 reset-names: 147 minItems: 1 148 items: 149 - const: stmmaceth 150 - const: ahb 151 152 power-domains: 153 maxItems: 1 154 155 mac-mode: 156 $ref: ethernet-controller.yaml#/properties/phy-connection-type 157 description: 158 The property is identical to 'phy-mode', and assumes that there is mode 159 converter in-between the MAC & PHY (e.g. GMII-to-RGMII). This converter 160 can be passive (no SW requirement), and requires that the MAC operate 161 in a different mode than the PHY in order to function. 162 163 snps,axi-config: 164 $ref: /schemas/types.yaml#/definitions/phandle 165 description: 166 AXI BUS Mode parameters. Phandle to a node that can contain the 167 following properties 168 * snps,lpi_en, enable Low Power Interface 169 * snps,xit_frm, unlock on WoL 170 * snps,wr_osr_lmt, max write outstanding req. limit 171 * snps,rd_osr_lmt, max read outstanding req. limit 172 * snps,kbbe, do not cross 1KiB boundary. 173 * snps,blen, this is a vector of supported burst length. 174 * snps,fb, fixed-burst 175 * snps,mb, mixed-burst 176 * snps,rb, rebuild INCRx Burst 177 178 snps,mtl-rx-config: 179 $ref: /schemas/types.yaml#/definitions/phandle 180 description: 181 Multiple RX Queues parameters. Phandle to a node that 182 implements the 'rx-queues-config' object described in 183 this binding. 184 185 rx-queues-config: 186 type: object 187 properties: 188 snps,rx-queues-to-use: 189 $ref: /schemas/types.yaml#/definitions/uint32 190 description: number of RX queues to be used in the driver 191 snps,rx-sched-sp: 192 type: boolean 193 description: Strict priority 194 snps,rx-sched-wsp: 195 type: boolean 196 description: Weighted Strict priority 197 allOf: 198 - if: 199 required: 200 - snps,rx-sched-sp 201 then: 202 properties: 203 snps,rx-sched-wsp: false 204 - if: 205 required: 206 - snps,rx-sched-wsp 207 then: 208 properties: 209 snps,rx-sched-sp: false 210 patternProperties: 211 "^queue[0-9]$": 212 description: Each subnode represents a queue. 213 type: object 214 properties: 215 snps,dcb-algorithm: 216 type: boolean 217 description: Queue to be enabled as DCB 218 snps,avb-algorithm: 219 type: boolean 220 description: Queue to be enabled as AVB 221 snps,map-to-dma-channel: 222 $ref: /schemas/types.yaml#/definitions/uint32 223 description: DMA channel id to map 224 snps,route-avcp: 225 type: boolean 226 description: AV Untagged Control packets 227 snps,route-ptp: 228 type: boolean 229 description: PTP Packets 230 snps,route-dcbcp: 231 type: boolean 232 description: DCB Control Packets 233 snps,route-up: 234 type: boolean 235 description: Untagged Packets 236 snps,route-multi-broad: 237 type: boolean 238 description: Multicast & Broadcast Packets 239 snps,priority: 240 $ref: /schemas/types.yaml#/definitions/uint32 241 description: Bitmask of the tagged frames priorities assigned to the queue 242 allOf: 243 - if: 244 required: 245 - snps,dcb-algorithm 246 then: 247 properties: 248 snps,avb-algorithm: false 249 - if: 250 required: 251 - snps,avb-algorithm 252 then: 253 properties: 254 snps,dcb-algorithm: false 255 - if: 256 required: 257 - snps,route-avcp 258 then: 259 properties: 260 snps,route-ptp: false 261 snps,route-dcbcp: false 262 snps,route-up: false 263 snps,route-multi-broad: false 264 - if: 265 required: 266 - snps,route-ptp 267 then: 268 properties: 269 snps,route-avcp: false 270 snps,route-dcbcp: false 271 snps,route-up: false 272 snps,route-multi-broad: false 273 - if: 274 required: 275 - snps,route-dcbcp 276 then: 277 properties: 278 snps,route-avcp: false 279 snps,route-ptp: false 280 snps,route-up: false 281 snps,route-multi-broad: false 282 - if: 283 required: 284 - snps,route-up 285 then: 286 properties: 287 snps,route-avcp: false 288 snps,route-ptp: false 289 snps,route-dcbcp: false 290 snps,route-multi-broad: false 291 - if: 292 required: 293 - snps,route-multi-broad 294 then: 295 properties: 296 snps,route-avcp: false 297 snps,route-ptp: false 298 snps,route-dcbcp: false 299 snps,route-up: false 300 additionalProperties: false 301 additionalProperties: false 302 303 snps,mtl-tx-config: 304 $ref: /schemas/types.yaml#/definitions/phandle 305 description: 306 Multiple TX Queues parameters. Phandle to a node that 307 implements the 'tx-queues-config' object described in 308 this binding. 309 310 tx-queues-config: 311 type: object 312 properties: 313 snps,tx-queues-to-use: 314 $ref: /schemas/types.yaml#/definitions/uint32 315 description: number of TX queues to be used in the driver 316 snps,tx-sched-wrr: 317 type: boolean 318 description: Weighted Round Robin 319 snps,tx-sched-wfq: 320 type: boolean 321 description: Weighted Fair Queuing 322 snps,tx-sched-dwrr: 323 type: boolean 324 description: Deficit Weighted Round Robin 325 snps,tx-sched-sp: 326 type: boolean 327 description: Strict priority 328 allOf: 329 - if: 330 required: 331 - snps,tx-sched-wrr 332 then: 333 properties: 334 snps,tx-sched-wfq: false 335 snps,tx-sched-dwrr: false 336 snps,tx-sched-sp: false 337 - if: 338 required: 339 - snps,tx-sched-wfq 340 then: 341 properties: 342 snps,tx-sched-wrr: false 343 snps,tx-sched-dwrr: false 344 snps,tx-sched-sp: false 345 - if: 346 required: 347 - snps,tx-sched-dwrr 348 then: 349 properties: 350 snps,tx-sched-wrr: false 351 snps,tx-sched-wfq: false 352 snps,tx-sched-sp: false 353 - if: 354 required: 355 - snps,tx-sched-sp 356 then: 357 properties: 358 snps,tx-sched-wrr: false 359 snps,tx-sched-wfq: false 360 snps,tx-sched-dwrr: false 361 patternProperties: 362 "^queue[0-9]$": 363 description: Each subnode represents a queue. 364 type: object 365 properties: 366 snps,weight: 367 $ref: /schemas/types.yaml#/definitions/uint32 368 description: TX queue weight (if using a DCB weight algorithm) 369 snps,dcb-algorithm: 370 type: boolean 371 description: TX queue will be working in DCB 372 snps,avb-algorithm: 373 type: boolean 374 description: 375 TX queue will be working in AVB. 376 Queue 0 is reserved for legacy traffic and so no AVB is 377 available in this queue. 378 snps,send_slope: 379 $ref: /schemas/types.yaml#/definitions/uint32 380 description: enable Low Power Interface 381 snps,idle_slope: 382 $ref: /schemas/types.yaml#/definitions/uint32 383 description: unlock on WoL 384 snps,high_credit: 385 $ref: /schemas/types.yaml#/definitions/uint32 386 description: max write outstanding req. limit 387 snps,low_credit: 388 $ref: /schemas/types.yaml#/definitions/uint32 389 description: max read outstanding req. limit 390 snps,priority: 391 $ref: /schemas/types.yaml#/definitions/uint32 392 description: 393 Bitmask of the tagged frames priorities assigned to the queue. 394 When a PFC frame is received with priorities matching the bitmask, 395 the queue is blocked from transmitting for the pause time specified 396 in the PFC frame. 397 398 snps,coe-unsupported: 399 type: boolean 400 description: TX checksum offload is unsupported by the TX queue. 401 402 allOf: 403 - if: 404 required: 405 - snps,dcb-algorithm 406 then: 407 properties: 408 snps,avb-algorithm: false 409 - if: 410 required: 411 - snps,avb-algorithm 412 then: 413 properties: 414 snps,dcb-algorithm: false 415 snps,weight: false 416 additionalProperties: false 417 additionalProperties: false 418 419 snps,reset-gpio: 420 deprecated: true 421 maxItems: 1 422 description: 423 PHY Reset GPIO 424 425 snps,reset-active-low: 426 deprecated: true 427 $ref: /schemas/types.yaml#/definitions/flag 428 description: 429 Indicates that the PHY Reset is active low 430 431 snps,reset-delays-us: 432 deprecated: true 433 description: 434 Triplet of delays. The 1st cell is reset pre-delay in micro 435 seconds. The 2nd cell is reset pulse in micro seconds. The 3rd 436 cell is reset post-delay in micro seconds. 437 minItems: 3 438 maxItems: 3 439 440 snps,aal: 441 $ref: /schemas/types.yaml#/definitions/flag 442 description: 443 Use Address-Aligned Beats 444 445 snps,fixed-burst: 446 $ref: /schemas/types.yaml#/definitions/flag 447 description: 448 Program the DMA to use the fixed burst mode 449 450 snps,mixed-burst: 451 $ref: /schemas/types.yaml#/definitions/flag 452 description: 453 Program the DMA to use the mixed burst mode 454 455 snps,force_thresh_dma_mode: 456 $ref: /schemas/types.yaml#/definitions/flag 457 description: 458 Force DMA to use the threshold mode for both tx and rx 459 460 snps,force_sf_dma_mode: 461 $ref: /schemas/types.yaml#/definitions/flag 462 description: 463 Force DMA to use the Store and Forward mode for both tx and 464 rx. This flag is ignored if force_thresh_dma_mode is set. 465 466 snps,en-tx-lpi-clockgating: 467 $ref: /schemas/types.yaml#/definitions/flag 468 description: 469 Enable gating of the MAC TX clock during TX low-power mode 470 471 snps,multicast-filter-bins: 472 $ref: /schemas/types.yaml#/definitions/uint32 473 description: 474 Number of multicast filter hash bins supported by this device 475 instance 476 477 snps,perfect-filter-entries: 478 $ref: /schemas/types.yaml#/definitions/uint32 479 description: 480 Number of perfect filter entries supported by this device 481 instance 482 483 snps,ps-speed: 484 $ref: /schemas/types.yaml#/definitions/uint32 485 description: 486 Port selection speed that can be passed to the core when PCS 487 is supported. For example, this is used in case of SGMII and 488 MAC2MAC connection. 489 490 snps,clk-csr: 491 $ref: /schemas/types.yaml#/definitions/uint32 492 description: 493 Frequency division factor for MDC clock. 494 495 mdio: 496 $ref: mdio.yaml# 497 unevaluatedProperties: false 498 description: 499 Creates and registers an MDIO bus. 500 501 properties: 502 compatible: 503 const: snps,dwmac-mdio 504 505 required: 506 - compatible 507 508 stmmac-axi-config: 509 type: object 510 unevaluatedProperties: false 511 description: 512 AXI BUS Mode parameters. 513 514 properties: 515 snps,lpi_en: 516 $ref: /schemas/types.yaml#/definitions/flag 517 description: 518 enable Low Power Interface 519 520 snps,xit_frm: 521 $ref: /schemas/types.yaml#/definitions/flag 522 description: 523 unlock on WoL 524 525 snps,wr_osr_lmt: 526 $ref: /schemas/types.yaml#/definitions/uint32 527 description: 528 max write outstanding req. limit 529 530 snps,rd_osr_lmt: 531 $ref: /schemas/types.yaml#/definitions/uint32 532 description: 533 max read outstanding req. limit 534 535 snps,kbbe: 536 $ref: /schemas/types.yaml#/definitions/uint32 537 description: 538 do not cross 1KiB boundary. 539 540 snps,blen: 541 $ref: /schemas/types.yaml#/definitions/uint32-array 542 description: 543 this is a vector of supported burst length. 544 minItems: 7 545 maxItems: 7 546 547 snps,fb: 548 $ref: /schemas/types.yaml#/definitions/flag 549 description: 550 fixed-burst 551 552 snps,mb: 553 $ref: /schemas/types.yaml#/definitions/flag 554 description: 555 mixed-burst 556 557 snps,rb: 558 $ref: /schemas/types.yaml#/definitions/flag 559 description: 560 rebuild INCRx Burst 561 562required: 563 - compatible 564 - reg 565 - interrupts 566 - interrupt-names 567 - phy-mode 568 569dependencies: 570 snps,reset-active-low: ["snps,reset-gpio"] 571 snps,reset-delays-us: ["snps,reset-gpio"] 572 573allOf: 574 - $ref: ethernet-controller.yaml# 575 - if: 576 properties: 577 compatible: 578 contains: 579 enum: 580 - allwinner,sun7i-a20-gmac 581 - allwinner,sun8i-a83t-emac 582 - allwinner,sun8i-h3-emac 583 - allwinner,sun8i-r40-gmac 584 - allwinner,sun8i-v3s-emac 585 - allwinner,sun50i-a64-emac 586 - ingenic,jz4775-mac 587 - ingenic,x1000-mac 588 - ingenic,x1600-mac 589 - ingenic,x1830-mac 590 - ingenic,x2000-mac 591 - qcom,sa8775p-ethqos 592 - qcom,sc8280xp-ethqos 593 - snps,dwmac-3.50a 594 - snps,dwmac-4.10a 595 - snps,dwmac-4.20a 596 - snps,dwmac-5.20 597 - snps,dwxgmac 598 - snps,dwxgmac-2.10 599 - st,spear600-gmac 600 601 then: 602 properties: 603 snps,pbl: 604 description: 605 Programmable Burst Length (tx and rx) 606 $ref: /schemas/types.yaml#/definitions/uint32 607 enum: [1, 2, 4, 8, 16, 32] 608 609 snps,txpbl: 610 description: 611 Tx Programmable Burst Length. If set, DMA tx will use this 612 value rather than snps,pbl. 613 $ref: /schemas/types.yaml#/definitions/uint32 614 enum: [1, 2, 4, 8, 16, 32] 615 616 snps,rxpbl: 617 description: 618 Rx Programmable Burst Length. If set, DMA rx will use this 619 value rather than snps,pbl. 620 $ref: /schemas/types.yaml#/definitions/uint32 621 enum: [1, 2, 4, 8, 16, 32] 622 623 snps,no-pbl-x8: 624 $ref: /schemas/types.yaml#/definitions/flag 625 description: 626 Don\'t multiply the pbl/txpbl/rxpbl values by 8. For core 627 rev < 3.50, don\'t multiply the values by 4. 628 629 - if: 630 properties: 631 compatible: 632 contains: 633 enum: 634 - allwinner,sun7i-a20-gmac 635 - allwinner,sun8i-a83t-emac 636 - allwinner,sun8i-h3-emac 637 - allwinner,sun8i-r40-gmac 638 - allwinner,sun8i-v3s-emac 639 - allwinner,sun50i-a64-emac 640 - loongson,ls2k-dwmac 641 - loongson,ls7a-dwmac 642 - ingenic,jz4775-mac 643 - ingenic,x1000-mac 644 - ingenic,x1600-mac 645 - ingenic,x1830-mac 646 - ingenic,x2000-mac 647 - qcom,qcs404-ethqos 648 - qcom,sa8775p-ethqos 649 - qcom,sc8280xp-ethqos 650 - qcom,sm8150-ethqos 651 - snps,dwmac-4.00 652 - snps,dwmac-4.10a 653 - snps,dwmac-4.20a 654 - snps,dwmac-5.10a 655 - snps,dwmac-5.20 656 - snps,dwxgmac 657 - snps,dwxgmac-2.10 658 - st,spear600-gmac 659 660 then: 661 properties: 662 snps,tso: 663 $ref: /schemas/types.yaml#/definitions/flag 664 description: 665 Enables the TSO feature otherwise it will be managed by 666 MAC HW capability register. 667 668additionalProperties: true 669 670examples: 671 - | 672 gmac0: ethernet@e0800000 { 673 compatible = "snps,dwxgmac-2.10", "snps,dwxgmac"; 674 reg = <0xe0800000 0x8000>; 675 interrupt-parent = <&vic1>; 676 interrupts = <24 23 22>; 677 interrupt-names = "macirq", "eth_wake_irq", "eth_lpi"; 678 mac-address = [000000000000]; /* Filled in by U-Boot */ 679 max-frame-size = <3800>; 680 phy-mode = "gmii"; 681 snps,multicast-filter-bins = <256>; 682 snps,perfect-filter-entries = <128>; 683 rx-fifo-depth = <16384>; 684 tx-fifo-depth = <16384>; 685 clocks = <&clock>; 686 clock-names = "stmmaceth"; 687 snps,axi-config = <&stmmac_axi_setup>; 688 snps,mtl-rx-config = <&mtl_rx_setup>; 689 snps,mtl-tx-config = <&mtl_tx_setup>; 690 691 stmmac_axi_setup: stmmac-axi-config { 692 snps,wr_osr_lmt = <0xf>; 693 snps,rd_osr_lmt = <0xf>; 694 snps,blen = <256 128 64 32 0 0 0>; 695 }; 696 697 mtl_rx_setup: rx-queues-config { 698 snps,rx-queues-to-use = <1>; 699 snps,rx-sched-sp; 700 queue0 { 701 snps,dcb-algorithm; 702 snps,map-to-dma-channel = <0x0>; 703 snps,priority = <0x0>; 704 }; 705 }; 706 707 mtl_tx_setup: tx-queues-config { 708 snps,tx-queues-to-use = <2>; 709 snps,tx-sched-wrr; 710 queue0 { 711 snps,weight = <0x10>; 712 snps,dcb-algorithm; 713 snps,priority = <0x0>; 714 }; 715 716 queue1 { 717 snps,avb-algorithm; 718 snps,send_slope = <0x1000>; 719 snps,idle_slope = <0x1000>; 720 snps,high_credit = <0x3E800>; 721 snps,low_credit = <0xFFC18000>; 722 snps,priority = <0x1>; 723 }; 724 }; 725 726 mdio0 { 727 #address-cells = <1>; 728 #size-cells = <0>; 729 compatible = "snps,dwmac-mdio"; 730 phy1: ethernet-phy@0 { 731 reg = <0>; 732 }; 733 }; 734 }; 735 736# FIXME: We should set it, but it would report all the generic 737# properties as additional properties. 738# additionalProperties: false 739 740... 741