# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/panel/panel-dsi.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Generic MIPI DSI Panel

maintainers:
  - Timon Skerutsch <kernel@diodes-delight.com>

allOf:
  - $ref: panel-common.yaml#

properties:
  compatible:
    description:
      Shall contain a panel specific compatible and "panel-dsi"
      in that order.
    items:
      - {}
      - const: panel-dsi

  dsi-color-format:
    description: |
      The color format used by the panel. Only DSI supported formats are allowed.
    enum:
      - RGB888
      - RGB666
      - RGB666_PACKED
      - RGB565

  port:
    $ref: /schemas/graph.yaml#/$defs/port-base
    unevaluatedProperties: false
    description:
      Panel MIPI DSI input

    properties:
      endpoint:
        $ref: /schemas/media/video-interfaces.yaml#
        unevaluatedProperties: false

        properties:
          data-lanes: true

        required:
          - data-lanes

  mode:
    description: |
      DSI mode flags. See DSI Specs for details.
      These are driver independent features of the DSI bus.
    items:
      - const: MODE_VIDEO
      - const: MODE_VIDEO_BURST
      - const: MODE_VIDEO_SYNC_PULSE
      - const: MODE_VIDEO_AUTO_VERT
      - const: MODE_VIDEO_HSE
      - const: MODE_VIDEO_NO_HFP
      - const: MODE_VIDEO_NO_HBP
      - const: MODE_VIDEO_NO_HSA
      - const: MODE_VSYNC_FLUSH
      - const: MODE_NO_EOT_PACKET
      - const: CLOCK_NON_CONTINUOUS
      - const: MODE_LPM
      - const: HS_PKT_END_ALIGNED

  reg: true
  backlight: true
  enable-gpios: true
  width-mm: true
  height-mm: true
  panel-timing: true
  power-supply: true
  reset-gpios: true
  ddc-i2c-bus: true

required:
  - panel-timing
  - reg
  - power-supply
  - dsi-color-format
  - port

additionalProperties: false

examples:
  - |
    panel {
        compatible = "panel-mfgr,generic-dsi-panel","panel-dsi";
        power-supply = <&vcc_supply>;
        backlight = <&backlight>;
        dsi-color-format = "RGB888";
        reg = <0>;
        mode = "MODE_VIDEO", "MODE_VIDEO_BURST", "MODE_NO_EOT_PACKET";

        port {
            panel_dsi_port: endpoint {
                data-lanes = <1 2>;
                remote-endpoint = <&dsi_out>;
            };
        };

        panel-timing {
            clock-frequency = <9200000>;
            hactive = <800>;
            vactive = <480>;
            hfront-porch = <8>;
            hback-porch = <4>;
            hsync-len = <41>;
            vback-porch = <2>;
            vfront-porch = <4>;
            vsync-len = <10>;
        };
    };

...
