1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/display/bridge/nwl-dsi.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Northwest Logic MIPI-DSI controller on i.MX SoCs
8
9maintainers:
10  - Guido Gúnther <agx@sigxcpu.org>
11  - Robert Chiras <robert.chiras@nxp.com>
12
13description: |
14  NWL MIPI-DSI host controller found on i.MX8 platforms. This is a dsi bridge for
15  the SOCs NWL MIPI-DSI host controller.
16
17allOf:
18  - $ref: ../dsi-controller.yaml#
19
20properties:
21  compatible:
22    const: fsl,imx8mq-nwl-dsi
23
24  reg:
25    maxItems: 1
26
27  interrupts:
28    maxItems: 1
29
30  '#address-cells':
31    const: 1
32
33  '#size-cells':
34    const: 0
35
36  assigned-clock-parents: true
37  assigned-clock-rates: true
38  assigned-clocks: true
39
40  clocks:
41    items:
42      - description: DSI core clock
43      - description: RX_ESC clock (used in escape mode)
44      - description: TX_ESC clock (used in escape mode)
45      - description: PHY_REF clock
46      - description: LCDIF clock
47
48  clock-names:
49    items:
50      - const: core
51      - const: rx_esc
52      - const: tx_esc
53      - const: phy_ref
54      - const: lcdif
55
56  mux-controls:
57    description:
58      mux controller node to use for operating the input mux
59
60  phys:
61    maxItems: 1
62    description:
63      A phandle to the phy module representing the DPHY
64
65  phy-names:
66    items:
67      - const: dphy
68
69  power-domains:
70    maxItems: 1
71
72  resets:
73    items:
74      - description: dsi byte reset line
75      - description: dsi dpi reset line
76      - description: dsi esc reset line
77      - description: dsi pclk reset line
78
79  reset-names:
80    items:
81      - const: byte
82      - const: dpi
83      - const: esc
84      - const: pclk
85
86  ports:
87    $ref: /schemas/graph.yaml#/properties/ports
88
89    properties:
90      port@0:
91        $ref: /schemas/graph.yaml#/$defs/port-base
92        description:
93          Input port node to receive pixel data from the
94          display controller. Exactly one endpoint must be
95          specified.
96        properties:
97          endpoint@0:
98            $ref: /schemas/graph.yaml#/properties/endpoint
99            description: sub-node describing the input from LCDIF
100
101          endpoint@1:
102            $ref: /schemas/graph.yaml#/properties/endpoint
103            description: sub-node describing the input from DCSS
104
105        oneOf:
106          - required:
107              - endpoint@0
108          - required:
109              - endpoint@1
110
111        unevaluatedProperties: false
112
113      port@1:
114        $ref: /schemas/graph.yaml#/$defs/port-base
115        unevaluatedProperties: false
116        description:
117          DSI output port node to the panel or the next bridge
118          in the chain
119
120        properties:
121          endpoint:
122            $ref: /schemas/media/video-interfaces.yaml#
123            unevaluatedProperties: false
124
125            properties:
126              data-lanes:
127                description: array of physical DSI data lane indexes.
128                minItems: 1
129                items:
130                  - const: 1
131                  - const: 2
132                  - const: 3
133                  - const: 4
134
135    required:
136      - port@0
137      - port@1
138
139required:
140  - '#address-cells'
141  - '#size-cells'
142  - clock-names
143  - clocks
144  - compatible
145  - interrupts
146  - mux-controls
147  - phy-names
148  - phys
149  - ports
150  - reg
151  - reset-names
152  - resets
153
154unevaluatedProperties: false
155
156examples:
157  - |
158    #include <dt-bindings/clock/imx8mq-clock.h>
159    #include <dt-bindings/gpio/gpio.h>
160    #include <dt-bindings/interrupt-controller/arm-gic.h>
161    #include <dt-bindings/reset/imx8mq-reset.h>
162
163    dsi@30a00000 {
164              #address-cells = <1>;
165              #size-cells = <0>;
166              compatible = "fsl,imx8mq-nwl-dsi";
167              reg = <0x30A00000 0x300>;
168              clocks = <&clk IMX8MQ_CLK_DSI_CORE>,
169                       <&clk IMX8MQ_CLK_DSI_AHB>,
170                       <&clk IMX8MQ_CLK_DSI_IPG_DIV>,
171                       <&clk IMX8MQ_CLK_DSI_PHY_REF>,
172                       <&clk IMX8MQ_CLK_LCDIF_PIXEL>;
173              clock-names = "core", "rx_esc", "tx_esc", "phy_ref", "lcdif";
174              interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
175              mux-controls = <&mux 0>;
176              power-domains = <&pgc_mipi>;
177              resets = <&src IMX8MQ_RESET_MIPI_DSI_RESET_BYTE_N>,
178                       <&src IMX8MQ_RESET_MIPI_DSI_DPI_RESET_N>,
179                       <&src IMX8MQ_RESET_MIPI_DSI_ESC_RESET_N>,
180                       <&src IMX8MQ_RESET_MIPI_DSI_PCLK_RESET_N>;
181              reset-names = "byte", "dpi", "esc", "pclk";
182              phys = <&dphy>;
183              phy-names = "dphy";
184
185              panel@0 {
186                      compatible = "rocktech,jh057n00900";
187                      reg = <0>;
188                      vcc-supply = <&reg_2v8_p>;
189                      iovcc-supply = <&reg_1v8_p>;
190                      reset-gpios = <&gpio3 13 GPIO_ACTIVE_LOW>;
191                      port {
192                           panel_in: endpoint {
193                                     remote-endpoint = <&mipi_dsi_out>;
194                           };
195                      };
196              };
197
198              ports {
199                    #address-cells = <1>;
200                    #size-cells = <0>;
201
202                    port@0 {
203                           #size-cells = <0>;
204                           #address-cells = <1>;
205                           reg = <0>;
206                           mipi_dsi_in: endpoint@0 {
207                                        reg = <0>;
208                                        remote-endpoint = <&lcdif_mipi_dsi>;
209                           };
210                    };
211                    port@1 {
212                           reg = <1>;
213                           mipi_dsi_out: endpoint {
214                                         remote-endpoint = <&panel_in>;
215                           };
216                    };
217              };
218    };
219