[PATCH 1/2] dt-bindings: display: panel: Add generic MIPI-DSI/DPI panels

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a binding for generic MIPI-DSI/DPI panels that require
initialization with a simple command sequence before use.

Although the `panel-simple` binding exists for generic panels, it is not
suitable for panels that require initialization via their communication
bus, as such panels cannot be considered "simple".

While many dedicated bindings exist for such panels, the generic panels
are not complex enough to warrant a dedicated binding because they only
require a "simple" initialization before use.

This binding addresses that gap.

Signed-off-by: Hironori KIKUCHI <kikuchan98@xxxxxxxxx>
---
 .../bindings/display/panel/panel-mipi.yaml    | 244 ++++++++++++++++++
 1 file changed, 244 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/display/panel/panel-mipi.yaml

diff --git a/Documentation/devicetree/bindings/display/panel/panel-mipi.yaml b/Documentation/devicetree/bindings/display/panel/panel-mipi.yaml
new file mode 100644
index 00000000000..681614333d8
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/panel/panel-mipi.yaml
@@ -0,0 +1,244 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/panel/panel-mipi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Generic MIPI-DSI/DPI Panels Requiring Initialization
+
+maintainers:
+  - Hironori KIKUCHI <kikuchan98@xxxxxxxxx>
+
+description:
+  This is a binding for generic MIPI-DSI/DPI panels that require
+  initialization with a simple command sequence before use.
+
+properties:
+  compatible:
+    oneOf:
+      - enum:
+          - panel-mipi-dsi
+          - panel-mipi-dpi-spi
+      - items:
+          - {}
+          - enum:
+              - panel-mipi-dsi
+              - panel-mipi-dpi-spi
+
+  reg:
+    description: DSI / SPI channel used by that screen
+    maxItems: 1
+
+  power-supply: true
+
+  io-supply:
+    description: I/O system regulator.
+      No need to set if this is the same as polwer-supply.
+
+  dc-gpios:
+    maxItems: 1
+    description: Controller data/command selection (D/CX) in 4-line SPI mode.
+      If not set, the controller is in 3-line SPI mode.
+      Disallowed for DSI.
+
+  width-mm: true
+  height-mm: true
+  panel-timing: true
+  display-timings: true
+
+  reset-delay:
+    description: Delay (in ms) after the reset command
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  init-delay:
+    description: Delay (in ms) for sending the initial command sequence
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  sleep-delay:
+    description: Delay (in ms) after the sleep command
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  backlight-delay:
+    description: Delay (in ms) for enabling the backlight
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  port: true
+  reset-gpios: true
+  rotation: true
+
+  backlight: true
+
+  init-sequence:
+    description: Encoded initial command sequence.
+    $ref: /schemas/types.yaml#/definitions/uint8-array
+
+  firmware-name:
+    maxItems: 1
+
+  dsi-mode-video:
+    description: Enable MIPI_DSI_MODE_VIDEO.
+      Disallowed for SPI.
+    type: boolean
+
+  dsi-mode-video-burst:
+    description: Enable MIPI_DSI_MODE_VIDEO_BURST.
+      Disallowed for SPI.
+    type: boolean
+
+  dsi-mode-video-sync-pulse:
+    description: Enable MIPI_DSI_MODE_VIDEO_SYNC_PULSE.
+      Disallowed for SPI.
+    type: boolean
+
+  dsi-mode-video-auto-vert:
+    description: Enable MIPI_DSI_MODE_VIDEO_AUTO_VERT.
+      Disallowed for SPI.
+    type: boolean
+
+  dsi-mode-video-hse:
+    description: Enable MIPI_DSI_MODE_VIDEO_HSE.
+      Disallowed for SPI.
+    type: boolean
+
+  dsi-mode-video-no-hfp:
+    description: Enable MIPI_DSI_MODE_VIDEO_NO_HFP.
+      Disallowed for SPI.
+    type: boolean
+
+  dsi-mode-video-no-hbp:
+    description: Enable MIPI_DSI_MODE_VIDEO_NO_HBP.
+      Disallowed for SPI.
+    type: boolean
+
+  dsi-mode-video-no-hsa:
+    description: Enable MIPI_DSI_MODE_VIDEO_NO_HSA.
+      Disallowed for SPI.
+    type: boolean
+
+  dsi-mode-vsync-flush:
+    description: Enable MIPI_DSI_MODE_VSYNC_FLUSH.
+      Disallowed for SPI.
+    type: boolean
+
+  dsi-mode-no-eot-packet:
+    description: Enable MIPI_DSI_MODE_NO_EOT_PACKET.
+      Disallowed for SPI.
+    type: boolean
+
+  dsi-clock-non-continuous:
+    description: Enable MIPI_DSI_CLOCK_NON_CONTINUOUS.
+      Disallowed for SPI.
+    type: boolean
+
+  dsi-mode-lpm:
+    description: Enable MIPI_DSI_MODE_LPM.
+      Disallowed for SPI.
+    type: boolean
+
+  dsi-hs-pkt-end-aligned:
+    description: Enable MIPI_DSI_HS_PKT_END_ALIGNED.
+      Disallowed for SPI.
+    type: boolean
+
+required:
+  - compatible
+  - reg
+
+allOf:
+  - $ref: panel-common.yaml#
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - panel-mipi-dpi-spi
+    then:
+      # SPI mode
+      $ref: /schemas/spi/spi-peripheral-props.yaml#
+      properties:
+        dsi-mode-video: false
+        dsi-mode-video-burst: false
+        dsi-mode-video-sync-pulse: false
+        dsi-mode-video-auto-vert: false
+        dsi-mode-video-hse: false
+        dsi-mode-video-no-hfp: false
+        dsi-mode-video-no-hbp: false
+        dsi-mode-video-no-hsa: false
+        dsi-mode-vsync-flush: false
+        dsi-mode-no-eot-packet: false
+        dsi-clock-non-continuous: false
+        dsi-mode-lpm: false
+        dsi-hs-pkt-end-aligned: false
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - panel-mipi-dsi
+    then:
+      # DSI mode
+      properties:
+        dc-gpios: false
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    dsi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        panel@0 {
+            compatible = "vendor,some-panel", "panel-mipi-dsi";
+            reg = <0>;
+
+            port {
+                mipi_in_panel: endpoint {
+                    remote-endpoint = <&mipi_out_panel>;
+                };
+            };
+        };
+    };
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        panel@0{
+            compatible = "panel-mipi-dpi-spi";
+            reg = <0>;
+
+            spi-max-frequency = <40000000>;
+
+            dc-gpios = <&gpio 24 GPIO_ACTIVE_HIGH>;
+            reset-gpios = <&gpio 25 GPIO_ACTIVE_HIGH>;
+
+            backlight = <&backlight>;
+
+            init-sequence = [
+              01 11
+              00
+              04 b1 01 2c 2d
+              01 29
+              80 00 00 00
+            ];
+
+            width-mm = <35>;
+            height-mm = <28>;
+
+            panel-timing {
+                hactive = <160>;
+                vactive = <128>;
+                hback-porch = <0>;
+                vback-porch = <0>;
+                clock-frequency = <0>;
+                hfront-porch = <0>;
+                hsync-len = <0>;
+                vfront-porch = <0>;
+                vsync-len = <0>;
+            };
+        };
+    };
-- 
2.48.1





[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux