From e14ceeadfa5b9d8a41e73edfa416bbe92dd5b20d Mon Sep 17 00:00:00 2001
From: Timon Skerutsch <kernel@diodes-delight.com>
Date: Mon, 13 Nov 2023 22:53:22 +0100
Subject: [PATCH] dt-bindings: display: panel-dsi bindings

Bindings for the panel-dsi specific additions to panel-simple.
Allow for DSI specific bus settings and panel timing
to be define in devicetree. Very similar to panel-dpi.

Signed-off-by: Timon Skerutsch <kernel@diodes-delight.com>
---
 .../bindings/display/panel/panel-dsi.yaml     | 118 ++++++++++++++++++
 1 file changed, 118 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/display/panel/panel-dsi.yaml

--- /dev/null
+++ b/Documentation/devicetree/bindings/display/panel/panel-dsi.yaml
@@ -0,0 +1,118 @@
+# 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>;
+        };
+    };
+
+...
