1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/display/ingenic,lcd.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Ingenic SoCs LCD controller
8
9maintainers:
10  - Paul Cercueil <paul@crapouillou.net>
11
12properties:
13  $nodename:
14    pattern: "^lcd-controller@[0-9a-f]+$"
15
16  compatible:
17    enum:
18      - ingenic,jz4740-lcd
19      - ingenic,jz4725b-lcd
20      - ingenic,jz4760-lcd
21      - ingenic,jz4760b-lcd
22      - ingenic,jz4770-lcd
23      - ingenic,jz4780-lcd
24
25  reg:
26    maxItems: 1
27
28  interrupts:
29    maxItems: 1
30
31  clocks:
32    items:
33      - description: Pixel clock
34      - description: Module clock
35    minItems: 1
36
37  clock-names:
38    items:
39      - const: lcd_pclk
40      - const: lcd
41    minItems: 1
42
43  port:
44    $ref: /schemas/graph.yaml#/properties/port
45
46  ports:
47    $ref: /schemas/graph.yaml#/properties/ports
48
49    properties:
50      port@0:
51        $ref: /schemas/graph.yaml#/properties/port
52        description: DPI output, to interface with TFT panels.
53
54      port@8:
55        $ref: /schemas/graph.yaml#/properties/port
56        description: Link to the Image Processing Unit (IPU).
57          (See ingenic,ipu.yaml).
58
59    required:
60      - port@0
61
62required:
63  - compatible
64  - reg
65  - interrupts
66  - clocks
67  - clock-names
68
69if:
70  properties:
71    compatible:
72      contains:
73        enum:
74          - ingenic,jz4740-lcd
75          - ingenic,jz4780-lcd
76then:
77  properties:
78    clocks:
79      minItems: 2
80    clock-names:
81      minItems: 2
82else:
83  properties:
84    clocks:
85      maxItems: 1
86    clock-names:
87      maxItems: 1
88
89additionalProperties: false
90
91examples:
92  - |
93    #include <dt-bindings/clock/ingenic,jz4740-cgu.h>
94    lcd-controller@13050000 {
95      compatible = "ingenic,jz4740-lcd";
96      reg = <0x13050000 0x1000>;
97
98      interrupt-parent = <&intc>;
99      interrupts = <30>;
100
101      clocks = <&cgu JZ4740_CLK_LCD_PCLK>, <&cgu JZ4740_CLK_LCD>;
102      clock-names = "lcd_pclk", "lcd";
103
104      port {
105        endpoint {
106          remote-endpoint = <&panel_input>;
107        };
108      };
109    };
110
111  - |
112    #include <dt-bindings/clock/ingenic,jz4725b-cgu.h>
113    lcd-controller@13050000 {
114      compatible = "ingenic,jz4725b-lcd";
115      reg = <0x13050000 0x1000>;
116
117      interrupt-parent = <&intc>;
118      interrupts = <31>;
119
120      clocks = <&cgu JZ4725B_CLK_LCD>;
121      clock-names = "lcd_pclk";
122
123      port {
124        endpoint {
125          remote-endpoint = <&panel_input>;
126        };
127      };
128    };
129