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