# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (C) Sunplus Co., Ltd. 2021
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/sunplus,sp7021-emac.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Sunplus SP7021 Dual Ethernet MAC Device Tree Bindings

maintainers:
  - Wells Lu <wellslutw@gmail.com>

description: |
  Sunplus SP7021 dual 10M/100M Ethernet MAC controller.
  Device node of the controller has following properties.

properties:
  compatible:
    const: sunplus,sp7021-emac

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    maxItems: 1

  resets:
    maxItems: 1

  ethernet-ports:
    type: object
    description: Ethernet ports to PHY

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

      "#size-cells":
        const: 0

    patternProperties:
      "^port@[0-1]$":
        type: object
        description: Port to PHY

        properties:
          reg:
            minimum: 0
            maximum: 1

          phy-handle:
            maxItems: 1

          phy-mode:
            maxItems: 1

          nvmem-cells:
            items:
              - description: nvmem cell address of MAC address

          nvmem-cell-names:
            description: names corresponding to the nvmem cells
            items:
              - const: mac-address

        required:
          - reg
          - phy-handle
          - phy-mode
          - nvmem-cells
          - nvmem-cell-names

  mdio:
    $ref: mdio.yaml#
    unevaluatedProperties: false

additionalProperties: false

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - resets
  - pinctrl-0
  - pinctrl-names
  - ethernet-ports
  - mdio

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

    ethernet@9c108000 {
        compatible = "sunplus,sp7021-emac";
        reg = <0x9c108000 0x400>;
        interrupt-parent = <&intc>;
        interrupts = <66 IRQ_TYPE_LEVEL_HIGH>;
        clocks = <&clkc 0xa7>;
        resets = <&rstc 0x97>;
        pinctrl-0 = <&emac_demo_board_v3_pins>;
        pinctrl-names = "default";

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

            port@0 {
                reg = <0>;
                phy-handle = <&eth_phy0>;
                phy-mode = "rmii";
                nvmem-cells = <&mac_addr0>;
                nvmem-cell-names = "mac-address";
            };

            port@1 {
                reg = <1>;
                phy-handle = <&eth_phy1>;
                phy-mode = "rmii";
                nvmem-cells = <&mac_addr1>;
                nvmem-cell-names = "mac-address";
            };
        };

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

            eth_phy0: ethernet-phy@0 {
                reg = <0>;
            };

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