1# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/display/allwinner,sun4i-a10-display-backend.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Allwinner A10 Display Engine Backend Device Tree Bindings
8
9maintainers:
10  - Chen-Yu Tsai <wens@csie.org>
11  - Maxime Ripard <mripard@kernel.org>
12
13description: |
14  The display engine backend exposes layers and sprites to the system.
15
16properties:
17  compatible:
18    enum:
19      - allwinner,sun4i-a10-display-backend
20      - allwinner,sun5i-a13-display-backend
21      - allwinner,sun6i-a31-display-backend
22      - allwinner,sun7i-a20-display-backend
23      - allwinner,sun8i-a23-display-backend
24      - allwinner,sun8i-a33-display-backend
25      - allwinner,sun9i-a80-display-backend
26
27  reg:
28    minItems: 1
29    maxItems: 2
30    items:
31      - description: Display Backend registers
32      - description: SAT registers
33
34  reg-names:
35    minItems: 1
36    maxItems: 2
37    items:
38      - const: be
39      - const: sat
40
41  interrupts:
42    maxItems: 1
43
44  clocks:
45    minItems: 3
46    maxItems: 4
47    items:
48      - description: The backend interface clock
49      - description: The backend module clock
50      - description: The backend DRAM clock
51      - description: The SAT clock
52
53  clock-names:
54    minItems: 3
55    maxItems: 4
56    items:
57      - const: ahb
58      - const: mod
59      - const: ram
60      - const: sat
61
62  resets:
63    minItems: 1
64    maxItems: 2
65    items:
66      - description: The Backend reset line
67      - description: The SAT reset line
68
69  reset-names:
70    minItems: 1
71    maxItems: 2
72    items:
73      - const: be
74      - const: sat
75
76  # FIXME: This should be made required eventually once every SoC will
77  # have the MBUS declared.
78  interconnects:
79    maxItems: 1
80
81  # FIXME: This should be made required eventually once every SoC will
82  # have the MBUS declared.
83  interconnect-names:
84    const: dma-mem
85
86  ports:
87    type: object
88    description: |
89      A ports node with endpoint definitions as defined in
90      Documentation/devicetree/bindings/media/video-interfaces.txt.
91
92    properties:
93      "#address-cells":
94        const: 1
95
96      "#size-cells":
97        const: 0
98
99      port@0:
100        type: object
101        description: |
102          Input endpoints of the controller.
103
104      port@1:
105        type: object
106        description: |
107          Output endpoints of the controller.
108
109    required:
110      - "#address-cells"
111      - "#size-cells"
112      - port@0
113      - port@1
114
115    additionalProperties: false
116
117required:
118  - compatible
119  - reg
120  - interrupts
121  - clocks
122  - clock-names
123  - resets
124  - ports
125
126additionalProperties: false
127
128if:
129  properties:
130    compatible:
131      contains:
132        const: allwinner,sun8i-a33-display-backend
133
134then:
135  properties:
136    reg:
137      minItems: 2
138
139    reg-names:
140      minItems: 2
141
142    clocks:
143      minItems: 4
144
145    clock-names:
146      minItems: 4
147
148    resets:
149      minItems: 2
150
151    reset-names:
152      minItems: 2
153
154  required:
155    - reg-names
156    - reset-names
157
158else:
159  properties:
160    reg:
161      maxItems: 1
162
163    reg-names:
164      maxItems: 1
165
166    clocks:
167      maxItems: 3
168
169    clock-names:
170      maxItems: 3
171
172    resets:
173      maxItems: 1
174
175    reset-names:
176      maxItems: 1
177
178examples:
179  - |
180    /*
181     * This comes from the clock/sun4i-a10-ccu.h and
182     * reset/sun4i-a10-ccu.h headers, but we can't include them since
183     * it would trigger a bunch of warnings for redefinitions of
184     * symbols with the other example.
185     */
186
187    #define CLK_AHB_DE_BE0	42
188    #define CLK_DRAM_DE_BE0	140
189    #define CLK_DE_BE0		144
190    #define RST_DE_BE0		5
191
192    display-backend@1e60000 {
193        compatible = "allwinner,sun4i-a10-display-backend";
194        reg = <0x01e60000 0x10000>;
195        interrupts = <47>;
196        clocks = <&ccu CLK_AHB_DE_BE0>, <&ccu CLK_DE_BE0>,
197                 <&ccu CLK_DRAM_DE_BE0>;
198        clock-names = "ahb", "mod",
199                      "ram";
200        resets = <&ccu RST_DE_BE0>;
201
202        ports {
203            #address-cells = <1>;
204            #size-cells = <0>;
205
206            port@0 {
207                #address-cells = <1>;
208                #size-cells = <0>;
209                reg = <0>;
210
211                endpoint@0 {
212                    reg = <0>;
213                    remote-endpoint = <&fe0_out_be0>;
214                };
215
216                endpoint@1 {
217                    reg = <1>;
218                    remote-endpoint = <&fe1_out_be0>;
219                };
220            };
221
222            port@1 {
223                #address-cells = <1>;
224                #size-cells = <0>;
225                reg = <1>;
226
227                endpoint@0 {
228                    reg = <0>;
229                    remote-endpoint = <&tcon0_in_be0>;
230                };
231
232                endpoint@1 {
233                    reg = <1>;
234                    remote-endpoint = <&tcon1_in_be0>;
235                };
236            };
237        };
238    };
239
240  - |
241    #include <dt-bindings/interrupt-controller/arm-gic.h>
242
243    /*
244     * This comes from the clock/sun8i-a23-a33-ccu.h and
245     * reset/sun8i-a23-a33-ccu.h headers, but we can't include them
246     * since it would trigger a bunch of warnings for redefinitions of
247     * symbols with the other example.
248     */
249
250    #define CLK_BUS_DE_BE	40
251    #define CLK_BUS_SAT		46
252    #define CLK_DRAM_DE_BE	84
253    #define CLK_DE_BE		85
254    #define RST_BUS_DE_BE	21
255    #define RST_BUS_SAT		27
256
257    display-backend@1e60000 {
258        compatible = "allwinner,sun8i-a33-display-backend";
259        reg = <0x01e60000 0x10000>, <0x01e80000 0x1000>;
260        reg-names = "be", "sat";
261        interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
262        clocks = <&ccu CLK_BUS_DE_BE>, <&ccu CLK_DE_BE>,
263                 <&ccu CLK_DRAM_DE_BE>, <&ccu CLK_BUS_SAT>;
264        clock-names = "ahb", "mod",
265                      "ram", "sat";
266        resets = <&ccu RST_BUS_DE_BE>, <&ccu RST_BUS_SAT>;
267        reset-names = "be", "sat";
268
269        ports {
270            #address-cells = <1>;
271            #size-cells = <0>;
272
273            port@0 {
274                reg = <0>;
275
276                endpoint {
277                    remote-endpoint = <&fe0_out_be0>;
278                };
279            };
280
281            port@1 {
282                reg = <1>;
283
284                endpoint {
285                    remote-endpoint = <&drc0_in_be0>;
286                };
287            };
288        };
289    };
290
291...
292