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  interrupts:
54    maxItems: 1
55
56  power-domains:
57    maxItems: 1
58
59  port:
60    $ref: /schemas/graph.yaml#/properties/port
61    description: The LCDIF output port
62
63required:
64  - compatible
65  - reg
66  - clocks
67  - interrupts
68  - port
69
70additionalProperties: false
71
72allOf:
73  - if:
74      properties:
75        compatible:
76          contains:
77            const: fsl,imx6sx-lcdif
78    then:
79      properties:
80        clocks:
81          minItems: 2
82          maxItems: 3
83        clock-names:
84          minItems: 2
85          maxItems: 3
86      required:
87        - clock-names
88  - if:
89      properties:
90        compatible:
91          contains:
92            enum:
93              - fsl,imx8mp-lcdif
94              - fsl,imx93-lcdif
95    then:
96      properties:
97        clocks:
98          minItems: 3
99          maxItems: 3
100        clock-names:
101          minItems: 3
102          maxItems: 3
103      required:
104        - clock-names
105  - if:
106      not:
107        properties:
108          compatible:
109            contains:
110              enum:
111                - fsl,imx6sx-lcdif
112                - fsl,imx8mp-lcdif
113                - fsl,imx93-lcdif
114    then:
115      properties:
116        clocks:
117          maxItems: 1
118        clock-names:
119          maxItems: 1
120  - if:
121      properties:
122        compatible:
123          contains:
124            enum:
125              - fsl,imx6sl-lcdif
126              - fsl,imx6sx-lcdif
127              - fsl,imx8mm-lcdif
128              - fsl,imx8mn-lcdif
129              - fsl,imx8mp-lcdif
130              - fsl,imx93-lcdif
131    then:
132      required:
133        - power-domains
134
135examples:
136  - |
137    #include <dt-bindings/clock/imx6sx-clock.h>
138    #include <dt-bindings/interrupt-controller/arm-gic.h>
139
140    display-controller@2220000 {
141        compatible = "fsl,imx6sx-lcdif";
142        reg = <0x02220000 0x4000>;
143        interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
144        clocks = <&clks IMX6SX_CLK_LCDIF1_PIX>,
145                 <&clks IMX6SX_CLK_LCDIF_APB>,
146                 <&clks IMX6SX_CLK_DISPLAY_AXI>;
147        clock-names = "pix", "axi", "disp_axi";
148        power-domains = <&pd_disp>;
149
150        port {
151            endpoint {
152                remote-endpoint = <&panel_in>;
153            };
154        };
155    };
156
157...
158