1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/display/st,stm32-dsi.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: STMicroelectronics STM32 DSI host controller
8
9maintainers:
10  - Philippe Cornu <philippe.cornu@foss.st.com>
11  - Yannick Fertre <yannick.fertre@foss.st.com>
12
13description:
14  The STMicroelectronics STM32 DSI controller uses the Synopsys DesignWare MIPI-DSI host controller.
15
16allOf:
17  - $ref: dsi-controller.yaml#
18
19properties:
20  compatible:
21    const: st,stm32-dsi
22
23  reg:
24    maxItems: 1
25
26  clocks:
27    items:
28      - description: Module Clock
29      - description: DSI bus clock
30      - description: Pixel clock
31    minItems: 2
32
33  clock-names:
34    items:
35      - const: pclk
36      - const: ref
37      - const: px_clk
38    minItems: 2
39
40  resets:
41    maxItems: 1
42
43  reset-names:
44    items:
45      - const: apb
46
47  phy-dsi-supply:
48    description:
49      Phandle of the regulator that provides the supply voltage.
50
51  ports:
52    $ref: /schemas/graph.yaml#/properties/ports
53
54    properties:
55      port@0:
56        $ref: /schemas/graph.yaml#/properties/port
57        description:
58          DSI input port node, connected to the ltdc rgb output port.
59
60      port@1:
61        $ref: /schemas/graph.yaml#/$defs/port-base
62        unevaluatedProperties: false
63        description: |
64          DSI output port node, connected to a panel or a bridge input port.
65        properties:
66          endpoint:
67            $ref: /schemas/media/video-interfaces.yaml#
68            unevaluatedProperties: false
69            properties:
70              data-lanes:
71                minItems: 1
72                items:
73                  - const: 1
74                  - const: 2
75
76required:
77  - "#address-cells"
78  - "#size-cells"
79  - compatible
80  - reg
81  - clocks
82  - clock-names
83  - ports
84
85unevaluatedProperties: false
86
87examples:
88  - |
89    #include <dt-bindings/interrupt-controller/arm-gic.h>
90    #include <dt-bindings/clock/stm32mp1-clks.h>
91    #include <dt-bindings/reset/stm32mp1-resets.h>
92    #include <dt-bindings/gpio/gpio.h>
93    dsi: dsi@5a000000 {
94        compatible = "st,stm32-dsi";
95        reg = <0x5a000000 0x800>;
96        clocks = <&rcc DSI_K>, <&clk_hse>, <&rcc DSI_PX>;
97        clock-names = "pclk", "ref", "px_clk";
98        resets = <&rcc DSI_R>;
99        reset-names = "apb";
100        phy-dsi-supply = <&reg18>;
101
102        #address-cells = <1>;
103        #size-cells = <0>;
104
105        ports {
106              #address-cells = <1>;
107              #size-cells = <0>;
108
109              port@0 {
110                    reg = <0>;
111                    dsi_in: endpoint {
112                        remote-endpoint = <&ltdc_ep1_out>;
113                    };
114              };
115
116              port@1 {
117                    reg = <1>;
118                    dsi_out: endpoint {
119                        remote-endpoint = <&panel_in>;
120                    };
121              };
122        };
123
124        panel@0 {
125              compatible = "orisetech,otm8009a";
126              reg = <0>;
127              reset-gpios = <&gpioe 4 GPIO_ACTIVE_LOW>;
128              power-supply = <&v3v3>;
129
130              port {
131                    panel_in: endpoint {
132                        remote-endpoint = <&dsi_out>;
133                    };
134              };
135        };
136    };
137
138...
139