# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright 2020 BayLibre, SAS
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/amlogic,meson-g12a-dw-mipi-dsi.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Amlogic specific extensions to the Synopsys Designware MIPI DSI Host Controller

maintainers:
  - Neil Armstrong <neil.armstrong@linaro.org>

description: |
  The Amlogic Meson Synopsys Designware Integration is composed of
  - A Synopsys DesignWare MIPI DSI Host Controller IP
  - A TOP control block controlling the Clocks & Resets of the IP

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

properties:
  compatible:
    enum:
      - amlogic,meson-g12a-dw-mipi-dsi

  reg:
    maxItems: 1

  clocks:
    minItems: 3
    maxItems: 4

  clock-names:
    minItems: 3
    items:
      - const: pclk
      - const: bit
      - const: px
      - const: meas

  resets:
    maxItems: 1

  reset-names:
    items:
      - const: top

  phys:
    maxItems: 1

  phy-names:
    items:
      - const: dphy

  ports:
    $ref: /schemas/graph.yaml#/properties/ports

    properties:
      port@0:
        $ref: /schemas/graph.yaml#/properties/port
        description: Input node to receive pixel data.

      port@1:
        $ref: /schemas/graph.yaml#/properties/port
        description: DSI output node to panel.

    required:
      - port@0
      - port@1

required:
  - compatible
  - reg
  - clocks
  - clock-names
  - resets
  - reset-names
  - phys
  - phy-names
  - ports

unevaluatedProperties: false

examples:
  - |
    dsi@6000 {
          compatible = "amlogic,meson-g12a-dw-mipi-dsi";
          reg = <0x6000 0x400>;
          resets = <&reset_top>;
          reset-names = "top";
          clocks = <&clk_pclk>, <&bit_clk>, <&clk_px>;
          clock-names = "pclk", "bit", "px";
          phys = <&mipi_dphy>;
          phy-names = "dphy";

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

              /* VPU VENC Input */
              mipi_dsi_venc_port: port@0 {
                  reg = <0>;

                  mipi_dsi_in: endpoint {
                       remote-endpoint = <&dpi_out>;
                  };
              };

              /* DSI Output */
              mipi_dsi_panel_port: port@1 {
                  reg = <1>;

                  mipi_out_panel: endpoint {
                      remote-endpoint = <&mipi_in_panel>;
                  };
              };
          };
    };
