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

title: Vitesse VSC73xx DSA Switches

maintainers:
  - Linus Walleij <linus.walleij@linaro.org>

description:
  The Vitesse DSA Switches were produced in the early-to-mid 2000s.

  The Vitesse company has been acquired by Microsemi and Microsemi has
  been acquired Microchip but the new owner retains this vendor branding.

  The currently supported switch chips are
  Vitesse VSC7385 SparX-G5 5+1-port Integrated Gigabit Ethernet Switch
  Vitesse VSC7388 SparX-G8 8-port Integrated Gigabit Ethernet Switch
  Vitesse VSC7395 SparX-G5e 5+1-port Integrated Gigabit Ethernet Switch
  Vitesse VSC7398 SparX-G8e 8-port Integrated Gigabit Ethernet Switch

  This switch can use one of two different management interfaces.

  If SPI interface is used, the device tree node is an SPI device so it must
  reside inside a SPI bus device tree node, see spi/spi-bus.txt

  When the chip is connected to a parallel memory bus and work in memory-mapped
  I/O mode, a platform device is used to represent the vsc73xx. In this case it
  must reside inside a platform bus device tree node.

properties:
  compatible:
    enum:
      - vitesse,vsc7385
      - vitesse,vsc7388
      - vitesse,vsc7395
      - vitesse,vsc7398

  reg:
    maxItems: 1

  gpio-controller: true
  "#gpio-cells":
    const: 2

  reset-gpios:
    description: GPIO to be used to reset the whole device
    maxItems: 1

allOf:
  - $ref: dsa.yaml#/$defs/ethernet-ports

patternProperties:
  "^(ethernet-)?ports$":
    additionalProperties: true
    patternProperties:
      "^(ethernet-)?port@6$":
        allOf:
          - if:
              properties:
                phy-mode:
                  contains:
                    enum:
                      - rgmii
            then:
              properties:
                rx-internal-delay-ps:
                  $ref: "#/$defs/internal-delay-ps"
                tx-internal-delay-ps:
                  $ref: "#/$defs/internal-delay-ps"

# This checks if reg is a chipselect so the device is on an SPI
# bus, the if-clause will fail if reg is a tuple such as for a
# platform device.
if:
  properties:
    reg:
      minimum: 0
      maximum: 256
then:
  $ref: /schemas/spi/spi-peripheral-props.yaml#

required:
  - compatible
  - reg

$defs:
  internal-delay-ps:
    description:
      Disable tunable delay lines using 0 ps, or enable them and select
      the phase between 1400 ps and 2000 ps in increments of 300 ps.
    default: 2000
    enum:
      [0, 1400, 1700, 2000]

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>

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

      ethernet-switch@0 {
        compatible = "vitesse,vsc7395";
        reg = <0>;
        spi-max-frequency = <2500000>;
        gpio-controller;
        #gpio-cells = <2>;

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

          ethernet-port@0 {
            reg = <0>;
            label = "lan1";
          };
          ethernet-port@1 {
            reg = <1>;
            label = "lan2";
          };
          ethernet-port@2 {
            reg = <2>;
            label = "lan3";
          };
          ethernet-port@3 {
            reg = <3>;
            label = "lan4";
          };
          ethernet-port@6 {
            reg = <6>;
            ethernet = <&gmac1>;
            phy-mode = "rgmii";
            rx-internal-delay-ps = <0>;
            tx-internal-delay-ps = <0>;
            fixed-link {
              speed = <1000>;
              full-duplex;
              pause;
            };
          };
        };
      };
    };

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

      ethernet-switch@10000000 {
        compatible = "vitesse,vsc7385";
        reg = <0x10000000 0x20000>;
        reset-gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;

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

          ethernet-port@0 {
            reg = <0>;
            label = "lan1";
          };
          ethernet-port@1 {
            reg = <1>;
            label = "lan2";
          };
          ethernet-port@2 {
            reg = <2>;
            label = "lan3";
          };
          ethernet-port@3 {
            reg = <3>;
            label = "lan4";
          };
          ethernet-port@6 {
            reg = <6>;
            ethernet = <&enet0>;
            rx-internal-delay-ps = <0>;
            tx-internal-delay-ps = <0>;
            phy-mode = "rgmii";
            fixed-link {
              speed = <1000>;
              full-duplex;
              pause;
            };
          };
        };
      };
    };
