1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/display/fsl,lcdif.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Freescale/NXP i.MX LCD Interface (LCDIF)
8
9maintainers:
10  - Marek Vasut <marex@denx.de>
11  - Stefan Agner <stefan@agner.ch>
12
13description: |
14  (e)LCDIF display controller found in the Freescale/NXP i.MX SoCs.
15
16properties:
17  compatible:
18    oneOf:
19      - enum:
20          - fsl,imx23-lcdif
21          - fsl,imx28-lcdif
22          - fsl,imx6sx-lcdif
23          - fsl,imx8mp-lcdif
24          - fsl,imx93-lcdif
25      - items:
26          - enum:
27              - fsl,imx6sl-lcdif
28              - fsl,imx6sll-lcdif
29              - fsl,imx6ul-lcdif
30              - fsl,imx7d-lcdif
31              - fsl,imx8mm-lcdif
32              - fsl,imx8mn-lcdif
33              - fsl,imx8mq-lcdif
34          - const: fsl,imx6sx-lcdif
35
36  reg:
37    maxItems: 1
38
39  clocks:
40    items:
41      - description: Pixel clock
42      - description: Bus clock
43      - description: Display AXI clock
44    minItems: 1
45
46  clock-names:
47    items:
48      - const: pix
49      - const: axi
50      - const: disp_axi
51    minItems: 1
52
53  dmas:
54    items:
55      - description: DMA specifier for the RX DMA channel.
56
57  dma-names:
58    items:
59      - const: rx
60
61  interrupts:
62    items:
63      - description: LCDIF DMA interrupt
64      - description: LCDIF Error interrupt
65    minItems: 1
66
67  power-domains:
68    maxItems: 1
69
70  port:
71    $ref: /schemas/graph.yaml#/properties/port
72    description: The LCDIF output port
73
74required:
75  - compatible
76  - reg
77  - clocks
78  - interrupts
79  - port
80
81additionalProperties: false
82
83allOf:
84  - if:
85      properties:
86        compatible:
87          contains:
88            const: fsl,imx6sx-lcdif
89    then:
90      properties:
91        clocks:
92          minItems: 2
93          maxItems: 3
94        clock-names:
95          minItems: 2
96          maxItems: 3
97      required:
98        - clock-names
99  - if:
100      properties:
101        compatible:
102          contains:
103            enum:
104              - fsl,imx8mp-lcdif
105              - fsl,imx93-lcdif
106    then:
107      properties:
108        clocks:
109          minItems: 3
110          maxItems: 3
111        clock-names:
112          minItems: 3
113          maxItems: 3
114      required:
115        - clock-names
116  - if:
117      not:
118        properties:
119          compatible:
120            contains:
121              enum:
122                - fsl,imx6sx-lcdif
123                - fsl,imx8mp-lcdif
124                - fsl,imx93-lcdif
125    then:
126      properties:
127        clocks:
128          maxItems: 1
129        clock-names:
130          maxItems: 1
131  - if:
132      properties:
133        compatible:
134          const: fsl,imx6sx-lcdif
135    then:
136      required:
137        - power-domains
138  - if:
139      properties:
140        compatible:
141          contains:
142            enum:
143              - fsl,imx6sl-lcdif
144              - fsl,imx8mm-lcdif
145              - fsl,imx8mn-lcdif
146              - fsl,imx8mp-lcdif
147              - fsl,imx93-lcdif
148    then:
149      required:
150        - power-domains
151  - if:
152      properties:
153        compatible:
154          contains:
155            enum:
156              - fsl,imx23-lcdif
157    then:
158      properties:
159        interrupts:
160          minItems: 2
161          maxItems: 2
162    else:
163      properties:
164        interrupts:
165          maxItems: 1
166
167  - if:
168      not:
169        properties:
170          compatible:
171            contains:
172              enum:
173                - fsl,imx28-lcdif
174    then:
175      properties:
176        dmas: false
177        dma-names: false
178
179examples:
180  - |
181    #include <dt-bindings/clock/imx6sx-clock.h>
182    #include <dt-bindings/interrupt-controller/arm-gic.h>
183
184    display-controller@2220000 {
185        compatible = "fsl,imx6sx-lcdif";
186        reg = <0x02220000 0x4000>;
187        interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
188        clocks = <&clks IMX6SX_CLK_LCDIF1_PIX>,
189                 <&clks IMX6SX_CLK_LCDIF_APB>,
190                 <&clks IMX6SX_CLK_DISPLAY_AXI>;
191        clock-names = "pix", "axi", "disp_axi";
192        power-domains = <&pd_disp>;
193
194        port {
195            endpoint {
196                remote-endpoint = <&panel_in>;
197            };
198        };
199    };
200
201...
202