# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/brcm,asp-v2.0.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Broadcom ASP 2.0 Ethernet controller

maintainers:
  - Justin Chen <justin.chen@broadcom.com>
  - Florian Fainelli <florian.fainelli@broadcom.com>

description: Broadcom Ethernet controller first introduced with 72165

properties:
  compatible:
    oneOf:
      - items:
          - enum:
              - brcm,bcm74165-asp
          - const: brcm,asp-v2.1
      - items:
          - enum:
              - brcm,bcm72165-asp
          - const: brcm,asp-v2.0

  "#address-cells":
    const: 1
  "#size-cells":
    const: 1

  reg:
    maxItems: 1

  ranges: true

  interrupts:
    minItems: 1
    items:
      - description: RX/TX interrupt
      - description: Port 0 Wake-on-LAN
      - description: Port 1 Wake-on-LAN

  clocks:
    maxItems: 1

  ethernet-ports:
    type: object
    properties:
      "#address-cells":
        const: 1
      "#size-cells":
        const: 0

    patternProperties:
      "^port@[0-9]+$":
        type: object

        $ref: ethernet-controller.yaml#

        unevaluatedProperties: false

        properties:
          reg:
            maxItems: 1
            description: Port number

          brcm,channel:
            $ref: /schemas/types.yaml#/definitions/uint32
            description: |
              ASP Channel Number

              The depacketizer channel that consumes packets from
              the unimac/port.

        required:
          - reg
          - brcm,channel

    additionalProperties: false

patternProperties:
  "^mdio@[0-9a-f]+$":
    type: object
    $ref: brcm,unimac-mdio.yaml

    description:
      ASP internal UniMAC MDIO bus

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - ranges

additionalProperties: false

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

    ethernet@9c00000 {
        compatible = "brcm,bcm72165-asp", "brcm,asp-v2.0";
        reg = <0x9c00000 0x1fff14>;
        interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
        ranges = <0x0 0x9c00000 0x1fff14>;
        clocks = <&scmi 14>;
        #address-cells = <1>;
        #size-cells = <1>;

        mdio@c614 {
            compatible = "brcm,asp-v2.0-mdio";
            reg = <0xc614 0x8>;
            reg-names = "mdio";
            #address-cells = <1>;
            #size-cells = <0>;

            phy0: ethernet-phy@1 {
                reg = <1>;
            };
       };

        mdio@ce14 {
            compatible = "brcm,asp-v2.0-mdio";
            reg = <0xce14 0x8>;
            reg-names = "mdio";
            #address-cells = <1>;
            #size-cells = <0>;

            phy1: ethernet-phy@1 {
                reg = <1>;
            };
        };

        ethernet-ports {
            #address-cells = <1>;
            #size-cells = <0>;

            port@0 {
                reg = <0>;
                brcm,channel = <8>;
                phy-mode = "rgmii";
                phy-handle = <&phy0>;
            };

            port@1 {
                reg = <1>;
                brcm,channel = <9>;
                phy-mode = "rgmii";
                phy-handle = <&phy1>;
            };
        };
    };