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

title: TI TPS23881 Power Sourcing Equipment controller

maintainers:
  - Kory Maincent <kory.maincent@bootlin.com>

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

properties:
  compatible:
    enum:
      - ti,tps23881

  reg:
    maxItems: 1

  '#pse-cells':
    const: 1

  reset-gpios:
    maxItems: 1

  channels:
    description: each set of 8 ports can be assigned to one physical
      channels or two for PoE4. This parameter describes the configuration
      of the ports conversion matrix that establishes relationship between
      the logical ports and the physical channels.
    type: object
    additionalProperties: false

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

      "#size-cells":
        const: 0

    patternProperties:
      '^channel@[0-7]$':
        type: object
        additionalProperties: false

        properties:
          reg:
            maxItems: 1

        required:
          - reg

    required:
      - "#address-cells"
      - "#size-cells"

unevaluatedProperties: false

required:
  - compatible
  - reg

examples:
  - |
    i2c {
      #address-cells = <1>;
      #size-cells = <0>;

      ethernet-pse@20 {
        compatible = "ti,tps23881";
        reg = <0x20>;

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

          phys0: channel@0 {
            reg = <0>;
          };

          phys1: channel@1 {
            reg = <1>;
          };

          phys2: channel@2 {
            reg = <2>;
          };
        };

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

          pse_pi0: pse-pi@0 {
            reg = <0>;
            #pse-cells = <0>;
            pairset-names = "alternative-a", "alternative-b";
            pairsets = <&phys0>, <&phys1>;
            polarity-supported = "MDI", "S";
            vpwr-supply = <&vpwr1>;
          };

          pse_pi1: pse-pi@1 {
            reg = <1>;
            #pse-cells = <0>;
            pairset-names = "alternative-a";
            pairsets = <&phys2>;
            polarity-supported = "MDI";
            vpwr-supply = <&vpwr2>;
          };
        };
      };
    };
