# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/snps,dwmac.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Synopsys DesignWare MAC Device Tree Bindings

maintainers:
  - Alexandre Torgue <alexandre.torgue@st.com>
  - Giuseppe Cavallaro <peppe.cavallaro@st.com>
  - Jose Abreu <joabreu@synopsys.com>

# Select every compatible, including the deprecated ones. This way, we
# will be able to report a warning when we have that compatible, since
# we will validate the node thanks to the select, but won't report it
# as a valid value in the compatible property description
select:
  properties:
    compatible:
      contains:
        enum:
          - snps,dwmac
          - snps,dwmac-3.50a
          - snps,dwmac-3.610
          - snps,dwmac-3.70a
          - snps,dwmac-3.710
          - snps,dwmac-4.00
          - snps,dwmac-4.10a
          - snps,dwxgmac
          - snps,dwxgmac-2.10

          # Deprecated
          - st,spear600-gmac

  required:
    - compatible

properties:

  # We need to include all the compatibles from schemas that will
  # include that schemas, otherwise compatible won't validate for
  # those.
  compatible:
    contains:
      enum:
        - allwinner,sun7i-a20-gmac
        - allwinner,sun8i-a83t-emac
        - allwinner,sun8i-h3-emac
        - allwinner,sun8i-r40-emac
        - allwinner,sun8i-v3s-emac
        - allwinner,sun50i-a64-emac
        - snps,dwmac
        - snps,dwmac-3.50a
        - snps,dwmac-3.610
        - snps,dwmac-3.70a
        - snps,dwmac-3.710
        - snps,dwmac-4.00
        - snps,dwmac-4.10a
        - snps,dwxgmac
        - snps,dwxgmac-2.10

  reg:
    maxItems: 1

  interrupts:
    minItems: 1
    maxItems: 3
    items:
      - description: Combined signal for various interrupt events
      - description: The interrupt to manage the remote wake-up packet detection
      - description: The interrupt that occurs when Rx exits the LPI state

  interrupt-names:
    minItems: 1
    maxItems: 3
    items:
      - const: macirq
      - const: eth_wake_irq
      - const: eth_lpi

  clocks:
    minItems: 1
    maxItems: 3
    items:
      - description: GMAC main clock
      - description: Peripheral registers interface clock
      - description:
          PTP reference clock. This clock is used for programming the
          Timestamp Addend Register. If not passed then the system
          clock will be used and this is fine on some platforms.

  clock-names:
    additionalItems: true
    contains:
      enum:
        - stmmaceth
        - pclk
        - ptp_ref

  resets:
    maxItems: 1
    description:
      MAC Reset signal.

  reset-names:
    const: stmmaceth

  snps,axi-config:
    $ref: /schemas/types.yaml#definitions/phandle
    description:
      AXI BUS Mode parameters. Phandle to a node that can contain the
      following properties
        * snps,lpi_en, enable Low Power Interface
        * snps,xit_frm, unlock on WoL
        * snps,wr_osr_lmt, max write outstanding req. limit
        * snps,rd_osr_lmt, max read outstanding req. limit
        * snps,kbbe, do not cross 1KiB boundary.
        * snps,blen, this is a vector of supported burst length.
        * snps,fb, fixed-burst
        * snps,mb, mixed-burst
        * snps,rb, rebuild INCRx Burst

  snps,mtl-rx-config:
    $ref: /schemas/types.yaml#definitions/phandle
    description:
      Multiple RX Queues parameters. Phandle to a node that can
      contain the following properties
        * snps,rx-queues-to-use, number of RX queues to be used in the
          driver
        * Choose one of these RX scheduling algorithms
          * snps,rx-sched-sp, Strict priority
          * snps,rx-sched-wsp, Weighted Strict priority
        * For each RX queue
          * Choose one of these modes
            * snps,dcb-algorithm, Queue to be enabled as DCB
            * snps,avb-algorithm, Queue to be enabled as AVB
          * snps,map-to-dma-channel, Channel to map
          * Specifiy specific packet routing
            * snps,route-avcp, AV Untagged Control packets
            * snps,route-ptp, PTP Packets
            * snps,route-dcbcp, DCB Control Packets
            * snps,route-up, Untagged Packets
            * snps,route-multi-broad, Multicast & Broadcast Packets
          * snps,priority, RX queue priority (Range 0x0 to 0xF)

  snps,mtl-tx-config:
    $ref: /schemas/types.yaml#definitions/phandle
    description:
      Multiple TX Queues parameters. Phandle to a node that can
      contain the following properties
        * snps,tx-queues-to-use, number of TX queues to be used in the
          driver
        * Choose one of these TX scheduling algorithms
          * snps,tx-sched-wrr, Weighted Round Robin
          * snps,tx-sched-wfq, Weighted Fair Queuing
          * snps,tx-sched-dwrr, Deficit Weighted Round Robin
          * snps,tx-sched-sp, Strict priority
        * For each TX queue
          * snps,weight, TX queue weight (if using a DCB weight
            algorithm)
          * Choose one of these modes
            * snps,dcb-algorithm, TX queue will be working in DCB
            * snps,avb-algorithm, TX queue will be working in AVB
              [Attention] Queue 0 is reserved for legacy traffic
                          and so no AVB is available in this queue.
          * Configure Credit Base Shaper (if AVB Mode selected)
            * snps,send_slope, enable Low Power Interface
            * snps,idle_slope, unlock on WoL
            * snps,high_credit, max write outstanding req. limit
            * snps,low_credit, max read outstanding req. limit
          * snps,priority, TX queue priority (Range 0x0 to 0xF)

  snps,reset-gpio:
    deprecated: true
    maxItems: 1
    description:
      PHY Reset GPIO

  snps,reset-active-low:
    deprecated: true
    $ref: /schemas/types.yaml#definitions/flag
    description:
      Indicates that the PHY Reset is active low

  snps,reset-delays-us:
    deprecated: true
    allOf:
      - $ref: /schemas/types.yaml#definitions/uint32-array
      - minItems: 3
        maxItems: 3
    description:
      Triplet of delays. The 1st cell is reset pre-delay in micro
      seconds. The 2nd cell is reset pulse in micro seconds. The 3rd
      cell is reset post-delay in micro seconds.

  snps,aal:
    $ref: /schemas/types.yaml#definitions/flag
    description:
      Use Address-Aligned Beats

  snps,fixed-burst:
    $ref: /schemas/types.yaml#definitions/flag
    description:
      Program the DMA to use the fixed burst mode

  snps,mixed-burst:
    $ref: /schemas/types.yaml#definitions/flag
    description:
      Program the DMA to use the mixed burst mode

  snps,force_thresh_dma_mode:
    $ref: /schemas/types.yaml#definitions/flag
    description:
      Force DMA to use the threshold mode for both tx and rx

  snps,force_sf_dma_mode:
    $ref: /schemas/types.yaml#definitions/flag
    description:
      Force DMA to use the Store and Forward mode for both tx and
      rx. This flag is ignored if force_thresh_dma_mode is set.

  snps,en-tx-lpi-clockgating:
    $ref: /schemas/types.yaml#definitions/flag
    description:
      Enable gating of the MAC TX clock during TX low-power mode

  snps,multicast-filter-bins:
    $ref: /schemas/types.yaml#definitions/uint32
    description:
      Number of multicast filter hash bins supported by this device
      instance

  snps,perfect-filter-entries:
    $ref: /schemas/types.yaml#definitions/uint32
    description:
      Number of perfect filter entries supported by this device
      instance

  snps,ps-speed:
    $ref: /schemas/types.yaml#definitions/uint32
    description:
      Port selection speed that can be passed to the core when PCS
      is supported. For example, this is used in case of SGMII and
      MAC2MAC connection.

  mdio:
    type: object
    description:
      Creates and registers an MDIO bus.

    properties:
      compatible:
        const: snps,dwmac-mdio

    required:
      - compatible

required:
  - compatible
  - reg
  - interrupts
  - interrupt-names
  - phy-mode

dependencies:
  snps,reset-active-low: ["snps,reset-gpio"]
  snps,reset-delay-us: ["snps,reset-gpio"]

allOf:
  - $ref: "ethernet-controller.yaml#"
  - if:
      properties:
        compatible:
          contains:
            enum:
              - allwinner,sun7i-a20-gmac
              - allwinner,sun8i-a83t-emac
              - allwinner,sun8i-h3-emac
              - allwinner,sun8i-r40-emac
              - allwinner,sun8i-v3s-emac
              - allwinner,sun50i-a64-emac
              - snps,dwxgmac
              - snps,dwxgmac-2.10
              - st,spear600-gmac

    then:
      properties:
        snps,pbl:
          allOf:
            - $ref: /schemas/types.yaml#definitions/uint32
            - enum: [2, 4, 8]
          description:
            Programmable Burst Length (tx and rx)

        snps,txpbl:
          allOf:
            - $ref: /schemas/types.yaml#definitions/uint32
            - enum: [2, 4, 8]
          description:
            Tx Programmable Burst Length. If set, DMA tx will use this
            value rather than snps,pbl.

        snps,rxpbl:
          allOf:
            - $ref: /schemas/types.yaml#definitions/uint32
            - enum: [2, 4, 8]
          description:
            Rx Programmable Burst Length. If set, DMA rx will use this
            value rather than snps,pbl.

        snps,no-pbl-x8:
          $ref: /schemas/types.yaml#definitions/flag
          description:
            Don\'t multiply the pbl/txpbl/rxpbl values by 8. For core
            rev < 3.50, don\'t multiply the values by 4.

  - if:
      properties:
        compatible:
          contains:
            enum:
              - allwinner,sun7i-a20-gmac
              - allwinner,sun8i-a83t-emac
              - allwinner,sun8i-h3-emac
              - allwinner,sun8i-r40-emac
              - allwinner,sun8i-v3s-emac
              - allwinner,sun50i-a64-emac
              - snps,dwmac-4.00
              - snps,dwmac-4.10a
              - snps,dwxgmac
              - snps,dwxgmac-2.10
              - st,spear600-gmac

    then:
        snps,tso:
          $ref: /schemas/types.yaml#definitions/flag
          description:
            Enables the TSO feature otherwise it will be managed by
            MAC HW capability register.

examples:
  - |
    stmmac_axi_setup: stmmac-axi-config {
        snps,wr_osr_lmt = <0xf>;
        snps,rd_osr_lmt = <0xf>;
        snps,blen = <256 128 64 32 0 0 0>;
    };

    mtl_rx_setup: rx-queues-config {
        snps,rx-queues-to-use = <1>;
        snps,rx-sched-sp;
        queue0 {
            snps,dcb-algorithm;
            snps,map-to-dma-channel = <0x0>;
            snps,priority = <0x0>;
        };
    };

    mtl_tx_setup: tx-queues-config {
        snps,tx-queues-to-use = <2>;
        snps,tx-sched-wrr;
        queue0 {
            snps,weight = <0x10>;
            snps,dcb-algorithm;
            snps,priority = <0x0>;
        };

        queue1 {
            snps,avb-algorithm;
            snps,send_slope = <0x1000>;
            snps,idle_slope = <0x1000>;
            snps,high_credit = <0x3E800>;
            snps,low_credit = <0xFFC18000>;
            snps,priority = <0x1>;
        };
    };

    gmac0: ethernet@e0800000 {
        compatible = "snps,dwxgmac-2.10", "snps,dwxgmac";
        reg = <0xe0800000 0x8000>;
        interrupt-parent = <&vic1>;
        interrupts = <24 23 22>;
        interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
        mac-address = [000000000000]; /* Filled in by U-Boot */
        max-frame-size = <3800>;
        phy-mode = "gmii";
        snps,multicast-filter-bins = <256>;
        snps,perfect-filter-entries = <128>;
        rx-fifo-depth = <16384>;
        tx-fifo-depth = <16384>;
        clocks = <&clock>;
        clock-names = "stmmaceth";
        snps,axi-config = <&stmmac_axi_setup>;
        snps,mtl-rx-config = <&mtl_rx_setup>;
        snps,mtl-tx-config = <&mtl_tx_setup>;
        mdio0 {
            #address-cells = <1>;
            #size-cells = <0>;
            compatible = "snps,dwmac-mdio";
            phy1: ethernet-phy@0 {
                reg = <0>;
            };
        };
    };

# FIXME: We should set it, but it would report all the generic
# properties as additional properties.
# additionalProperties: false

...
