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