# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/allwinner,sun4i-a10-display-engine.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Allwinner A10 Display Engine Pipeline

maintainers:
  - Chen-Yu Tsai <wens@csie.org>
  - Maxime Ripard <mripard@kernel.org>

description: |
  The display engine pipeline (and its entry point, since it can be
  either directly the backend or the frontend) is represented as an
  extra node.

  The Allwinner A10 Display pipeline is composed of several components
  that are going to be documented below:

  For all connections between components up to the TCONs in the
  display pipeline, when there are multiple components of the same
  type at the same depth, the local endpoint ID must be the same as
  the remote component's index. For example, if the remote endpoint is
  Frontend 1, then the local endpoint ID must be 1.

  Frontend 0  [0] ------- [0]  Backend 0  [0] ------- [0]  TCON 0
              [1] --   -- [1]             [1] --   -- [1]
                    \ /                         \ /
                     X                           X
                    / \                         / \
              [0] --   -- [0]             [0] --   -- [0]
  Frontend 1  [1] ------- [1]  Backend 1  [1] ------- [1]  TCON 1

  For a two pipeline system such as the one depicted above, the lines
  represent the connections between the components, while the numbers
  within the square brackets corresponds to the ID of the local endpoint.

  The same rule also applies to DE 2.0 mixer-TCON connections:

  Mixer 0  [0] ----------- [0]  TCON 0
           [1] ----   ---- [1]
                   \ /
                    X
                   / \
           [0] ----   ---- [0]
  Mixer 1  [1] ----------- [1]  TCON 1

properties:
  compatible:
    enum:
      - allwinner,sun4i-a10-display-engine
      - allwinner,sun5i-a10s-display-engine
      - allwinner,sun5i-a13-display-engine
      - allwinner,sun6i-a31-display-engine
      - allwinner,sun6i-a31s-display-engine
      - allwinner,sun7i-a20-display-engine
      - allwinner,sun8i-a23-display-engine
      - allwinner,sun8i-a33-display-engine
      - allwinner,sun8i-a83t-display-engine
      - allwinner,sun8i-h3-display-engine
      - allwinner,sun8i-r40-display-engine
      - allwinner,sun8i-v3s-display-engine
      - allwinner,sun9i-a80-display-engine
      - allwinner,sun20i-d1-display-engine
      - allwinner,sun50i-a64-display-engine
      - allwinner,sun50i-h6-display-engine

  allwinner,pipelines:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    minItems: 1
    maxItems: 2
    items:
      maxItems: 1
    description: |
      Available display engine frontends (DE 1.0) or mixers (DE
      2.0/3.0) available.

required:
  - compatible
  - allwinner,pipelines

additionalProperties: false

if:
  properties:
    compatible:
      contains:
        enum:
          - allwinner,sun4i-a10-display-engine
          - allwinner,sun6i-a31-display-engine
          - allwinner,sun6i-a31s-display-engine
          - allwinner,sun7i-a20-display-engine
          - allwinner,sun8i-a83t-display-engine
          - allwinner,sun8i-r40-display-engine
          - allwinner,sun9i-a80-display-engine
          - allwinner,sun20i-d1-display-engine
          - allwinner,sun50i-a64-display-engine

then:
  properties:
    allwinner,pipelines:
      minItems: 2

else:
  properties:
    allwinner,pipelines:
      maxItems: 1

examples:
  - |
      de: display-engine {
          compatible = "allwinner,sun4i-a10-display-engine";
          allwinner,pipelines = <&fe0>, <&fe1>;
      };

...