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

title: Freescale Three-Speed Ethernet Controller (TSEC), "Gianfar"

maintainers:
  - J. Neuschäfer <j.ne@posteo.net>

# This is needed to distinguish gianfar.yaml and gianfar-mdio.yaml, because
# both use compatible = "gianfar" (with different device_type values)
select:
  oneOf:
    - properties:
        compatible:
          contains:
            const: gianfar
        device_type:
          const: network
      required:
        - device_type

    - properties:
        compatible:
          const: fsl,etsec2

  required:
    - compatible

properties:
  compatible:
    enum:
      - gianfar
      - fsl,etsec2

  device_type:
    const: network

  model:
    enum:
      - FEC
      - TSEC
      - eTSEC

  reg:
    maxItems: 1

  ranges: true

  "#address-cells":
    enum: [ 1, 2 ]

  "#size-cells":
    enum: [ 1, 2 ]

  cell-index:
    $ref: /schemas/types.yaml#/definitions/uint32

  interrupts:
    minItems: 1
    items:
      - description: Transmit interrupt or single combined interrupt
      - description: Receive interrupt
      - description: Error interrupt

  dma-coherent: true

  fsl,magic-packet:
    type: boolean
    description:
      If present, indicates that the hardware supports waking up via magic packet.

  fsl,wake-on-filer:
    type: boolean
    description:
      If present, indicates that the hardware supports waking up by Filer
      General Purpose Interrupt (FGPI) asserted on the Rx int line. This is
      an advanced power management capability allowing certain packet types
      (user) defined by filer rules to wake up the system.

  bd-stash:
    type: boolean
    description:
      If present, indicates that the hardware supports stashing buffer
      descriptors in the L2.

  rx-stash-len:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      Denotes the number of bytes of a received buffer to stash in the L2.

  rx-stash-idx:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      Denotes the index of the first byte from the received buffer to stash in
      the L2.

  fsl,num_rx_queues:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: Number of receive queues
    const: 8

  fsl,num_tx_queues:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: Number of transmit queues
    const: 8

  tbi-handle:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: Reference (phandle) to the TBI node

required:
  - compatible
  - model

patternProperties:
  "^mdio@[0-9a-f]+$":
    $ref: /schemas/net/fsl,gianfar-mdio.yaml#

allOf:
  - $ref: ethernet-controller.yaml#

  # eTSEC2 controller nodes have "queue group" subnodes and don't need a "reg"
  # property.
  - if:
      properties:
        compatible:
          contains:
            const: fsl,etsec2
    then:
      patternProperties:
        "^queue-group@[0-9a-f]+$":
          type: object

          properties:
            reg:
              maxItems: 1

            interrupts:
              items:
                - description: Transmit interrupt
                - description: Receive interrupt
                - description: Error interrupt

          required:
            - reg
            - interrupts

          additionalProperties: false
    else:
      required:
        - reg

  # TSEC and eTSEC devices require three interrupts
  - if:
      properties:
        model:
          contains:
            enum: [ TSEC, eTSEC ]
    then:
      properties:
        interrupts:
          items:
            - description: Transmit interrupt
            - description: Receive interrupt
            - description: Error interrupt



unevaluatedProperties: false

examples:
  - |
    ethernet@24000 {
        device_type = "network";
        model = "TSEC";
        compatible = "gianfar";
        reg = <0x24000 0x1000>;
        local-mac-address = [ 00 00 00 00 00 00 ];
        interrupts = <29 2>, <30 2>, <34 2>;
        interrupt-parent = <&mpic>;
        phy-handle = <&phy0>;
    };

  - |
    #include <dt-bindings/interrupt-controller/irq.h>

    ethernet@24000 {
        compatible = "gianfar";
        reg = <0x24000 0x1000>;
        ranges = <0x0 0x24000 0x1000>;
        #address-cells = <1>;
        #size-cells = <1>;
        cell-index = <0>;
        device_type = "network";
        model = "eTSEC";
        local-mac-address = [ 00 00 00 00 00 00 ];
        interrupts = <32 IRQ_TYPE_LEVEL_LOW>,
                     <33 IRQ_TYPE_LEVEL_LOW>,
                     <34 IRQ_TYPE_LEVEL_LOW>;
        interrupt-parent = <&ipic>;

        mdio@520 {
            #address-cells = <1>;
            #size-cells = <0>;
            compatible = "fsl,gianfar-mdio";
            reg = <0x520 0x20>;
        };
    };

  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>

    bus {
        #address-cells = <2>;
        #size-cells = <2>;

        ethernet {
            compatible = "fsl,etsec2";
            ranges;
            device_type = "network";
            #address-cells = <2>;
            #size-cells = <2>;
            interrupt-parent = <&gic>;
            model = "eTSEC";
            fsl,magic-packet;
            dma-coherent;

            queue-group@2d10000 {
                reg = <0x0 0x2d10000 0x0 0x1000>;
                interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
            };

            queue-group@2d14000  {
                reg = <0x0 0x2d14000 0x0 0x1000>;
                interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>;
            };
        };
    };

...
