# SPDX-License-Identifier: GPL-2.0-or-later OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/litex,liteeth.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: LiteX LiteETH ethernet device

maintainers:
  - Joel Stanley <joel@jms.id.au>

description: |
  LiteETH is a small footprint and configurable Ethernet core for FPGA based
  system on chips.

  The hardware source is Open Source and can be found on at
  https://github.com/enjoy-digital/liteeth/.

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

properties:
  compatible:
    const: litex,liteeth

  reg:
    items:
      - description: MAC registers
      - description: MDIO registers
      - description: Packet buffer

  reg-names:
    items:
      - const: mac
      - const: mdio
      - const: buffer

  interrupts:
    maxItems: 1

  litex,rx-slots:
    description: Number of slots in the receive buffer
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 1
    default: 2

  litex,tx-slots:
    description: Number of slots in the transmit buffer
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 1
    default: 2

  litex,slot-size:
    description: Size in bytes of a slot in the tx/rx buffer
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 0x800
    default: 0x800

  mac-address: true
  local-mac-address: true
  phy-handle: true

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

required:
  - compatible
  - reg
  - interrupts

additionalProperties: false

examples:
  - |
    mac: ethernet@8020000 {
        compatible = "litex,liteeth";
        reg = <0x8021000 0x100>,
              <0x8020800 0x100>,
              <0x8030000 0x2000>;
        reg-names = "mac", "mdio", "buffer";
        litex,rx-slots = <2>;
        litex,tx-slots = <2>;
        litex,slot-size = <0x800>;
        interrupts = <0x11 0x1>;
        phy-handle = <&eth_phy>;

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

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

#  vim: set ts=2 sw=2 sts=2 tw=80 et cc=80 ft=yaml :