# 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
        - amlogic,meson6-dwmac
        - amlogic,meson8b-dwmac
        - amlogic,meson8m2-dwmac
        - amlogic,meson-gxbb-dwmac
        - amlogic,meson-axg-dwmac
        - 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:
    minItems: 1
    maxItems: 2

  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

  mac-mode:
    $ref: ethernet-controller.yaml#/properties/phy-connection-type
    description:
      The property is identical to 'phy-mode', and assumes that there is mode
      converter in-between the MAC & PHY (e.g. GMII-to-RGMII). This converter
      can be passive (no SW requirement), and requires that the MAC operate
      in a different mode than the PHY in order to function.

  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

...
