~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/devicetree/bindings/display/allwinner,sun4i-a10-tcon.yaml

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 # SPDX-License-Identifier: GPL-2.0
  2 %YAML 1.2
  3 ---
  4 $id: http://devicetree.org/schemas/display/allwinner,sun4i-a10-tcon.yaml#
  5 $schema: http://devicetree.org/meta-schemas/core.yaml#
  6 
  7 title: Allwinner A10 Timings Controller (TCON)
  8 
  9 maintainers:
 10   - Chen-Yu Tsai <wens@csie.org>
 11   - Maxime Ripard <mripard@kernel.org>
 12 
 13 description: |
 14   The TCON acts as a timing controller for RGB, LVDS and TV
 15   interfaces.
 16 
 17 properties:
 18   "#clock-cells":
 19     const: 0
 20 
 21   compatible:
 22     oneOf:
 23       - const: allwinner,sun4i-a10-tcon
 24       - const: allwinner,sun5i-a13-tcon
 25       - const: allwinner,sun6i-a31-tcon
 26       - const: allwinner,sun6i-a31s-tcon
 27       - const: allwinner,sun7i-a20-tcon
 28       - const: allwinner,sun8i-a23-tcon
 29       - const: allwinner,sun8i-a33-tcon
 30       - const: allwinner,sun8i-a83t-tcon-lcd
 31       - const: allwinner,sun8i-a83t-tcon-tv
 32       - const: allwinner,sun8i-r40-tcon-tv
 33       - const: allwinner,sun8i-v3s-tcon
 34       - const: allwinner,sun9i-a80-tcon-lcd
 35       - const: allwinner,sun9i-a80-tcon-tv
 36       - const: allwinner,sun20i-d1-tcon-lcd
 37       - const: allwinner,sun20i-d1-tcon-tv
 38 
 39       - items:
 40           - enum:
 41               - allwinner,sun7i-a20-tcon0
 42               - allwinner,sun7i-a20-tcon1
 43           - const: allwinner,sun7i-a20-tcon
 44 
 45       - items:
 46           - enum:
 47               - allwinner,sun50i-a64-tcon-lcd
 48           - const: allwinner,sun8i-a83t-tcon-lcd
 49 
 50       - items:
 51           - enum:
 52               - allwinner,sun8i-h3-tcon-tv
 53               - allwinner,sun50i-a64-tcon-tv
 54           - const: allwinner,sun8i-a83t-tcon-tv
 55 
 56       - items:
 57           - enum:
 58               - allwinner,sun50i-h6-tcon-tv
 59           - const: allwinner,sun8i-r40-tcon-tv
 60 
 61   reg:
 62     maxItems: 1
 63 
 64   interrupts:
 65     maxItems: 1
 66 
 67   clocks:
 68     minItems: 1
 69     maxItems: 4
 70 
 71   clock-names:
 72     minItems: 1
 73     maxItems: 4
 74 
 75   clock-output-names:
 76     description:
 77       Name of the LCD pixel clock created.
 78     maxItems: 1
 79 
 80   dmas:
 81     maxItems: 1
 82 
 83   resets:
 84     anyOf:
 85       - items:
 86           - description: TCON Reset Line
 87 
 88       - items:
 89           - description: TCON Reset Line
 90           - description: TCON LVDS Reset Line
 91 
 92       - items:
 93           - description: TCON Reset Line
 94           - description: TCON eDP Reset Line
 95 
 96       - items:
 97           - description: TCON Reset Line
 98           - description: TCON eDP Reset Line
 99           - description: TCON LVDS Reset Line
100 
101   reset-names:
102     oneOf:
103       - const: lcd
104 
105       - items:
106           - const: lcd
107           - const: lvds
108 
109       - items:
110           - const: lcd
111           - const: edp
112 
113       - items:
114           - const: lcd
115           - const: edp
116           - const: lvds
117 
118   ports:
119     $ref: /schemas/graph.yaml#/properties/ports
120 
121     properties:
122       port@0:
123         $ref: /schemas/graph.yaml#/properties/port
124         description: |
125           Input endpoints of the controller.
126 
127       port@1:
128         $ref: /schemas/graph.yaml#/$defs/port-base
129         unevaluatedProperties: false
130         description: |
131           Output endpoints of the controller.
132 
133         patternProperties:
134           "^endpoint(@[0-9])$":
135             $ref: /schemas/graph.yaml#/$defs/endpoint-base
136             unevaluatedProperties: false
137 
138             properties:
139               allwinner,tcon-channel:
140                 $ref: /schemas/types.yaml#/definitions/uint32
141                 description: |
142                   TCON can have 1 or 2 channels, usually with the
143                   first channel being used for the panels interfaces
144                   (RGB, LVDS, etc.), and the second being used for the
145                   outputs that require another controller (TV Encoder,
146                   HDMI, etc.).
147 
148                   If that property is present, specifies the TCON
149                   channel the endpoint is associated to. If that
150                   property is not present, the endpoint number will be
151                   used as the channel number.
152 
153     required:
154       - port@0
155       - port@1
156 
157 required:
158   - compatible
159   - reg
160   - interrupts
161   - clocks
162   - clock-names
163   - resets
164   - ports
165 
166 additionalProperties: false
167 
168 allOf:
169   - if:
170       properties:
171         compatible:
172           contains:
173             enum:
174               - allwinner,sun4i-a10-tcon
175               - allwinner,sun5i-a13-tcon
176               - allwinner,sun7i-a20-tcon
177 
178     then:
179       properties:
180         clocks:
181           minItems: 3
182 
183         clock-names:
184           items:
185             - const: ahb
186             - const: tcon-ch0
187             - const: tcon-ch1
188 
189   - if:
190       properties:
191         compatible:
192           contains:
193             enum:
194               - allwinner,sun6i-a31-tcon
195               - allwinner,sun6i-a31s-tcon
196 
197     then:
198       properties:
199         clocks:
200           minItems: 4
201 
202         clock-names:
203           items:
204             - const: ahb
205             - const: tcon-ch0
206             - const: tcon-ch1
207             - const: lvds-alt
208 
209   - if:
210       properties:
211         compatible:
212           contains:
213             enum:
214               - allwinner,sun8i-a23-tcon
215               - allwinner,sun8i-a33-tcon
216 
217     then:
218       properties:
219         clocks:
220           minItems: 3
221 
222         clock-names:
223           items:
224             - const: ahb
225             - const: tcon-ch0
226             - const: lvds-alt
227 
228   - if:
229       properties:
230         compatible:
231           contains:
232             enum:
233               - allwinner,sun8i-a83t-tcon-lcd
234               - allwinner,sun8i-v3s-tcon
235               - allwinner,sun9i-a80-tcon-lcd
236               - allwinner,sun20i-d1-tcon-lcd
237 
238     then:
239       properties:
240         clocks:
241           minItems: 2
242 
243         clock-names:
244           items:
245             - const: ahb
246             - const: tcon-ch0
247 
248   - if:
249       properties:
250         compatible:
251           contains:
252             enum:
253               - allwinner,sun8i-a83t-tcon-tv
254               - allwinner,sun8i-r40-tcon-tv
255               - allwinner,sun9i-a80-tcon-tv
256               - allwinner,sun20i-d1-tcon-tv
257 
258     then:
259       properties:
260         clocks:
261           minItems: 2
262 
263         clock-names:
264           items:
265             - const: ahb
266             - const: tcon-ch1
267 
268   - if:
269       properties:
270         compatible:
271           contains:
272             enum:
273               - allwinner,sun5i-a13-tcon
274               - allwinner,sun6i-a31-tcon
275               - allwinner,sun6i-a31s-tcon
276               - allwinner,sun7i-a20-tcon
277               - allwinner,sun8i-a23-tcon
278               - allwinner,sun8i-a33-tcon
279               - allwinner,sun8i-v3s-tcon
280               - allwinner,sun9i-a80-tcon-lcd
281               - allwinner,sun4i-a10-tcon
282               - allwinner,sun8i-a83t-tcon-lcd
283               - allwinner,sun20i-d1-tcon-lcd
284 
285     then:
286       required:
287         - "#clock-cells"
288         - clock-output-names
289 
290   - if:
291       properties:
292         compatible:
293           contains:
294             enum:
295               - allwinner,sun6i-a31-tcon
296               - allwinner,sun6i-a31s-tcon
297               - allwinner,sun8i-a23-tcon
298               - allwinner,sun8i-a33-tcon
299               - allwinner,sun8i-a83t-tcon-lcd
300               - allwinner,sun20i-d1-tcon-lcd
301 
302     then:
303       properties:
304         resets:
305           minItems: 2
306 
307         reset-names:
308           items:
309             - const: lcd
310             - const: lvds
311 
312   - if:
313       properties:
314         compatible:
315           contains:
316             enum:
317               - allwinner,sun9i-a80-tcon-lcd
318 
319     then:
320       properties:
321         resets:
322           minItems: 3
323 
324         reset-names:
325           items:
326             - const: lcd
327             - const: edp
328             - const: lvds
329 
330   - if:
331       properties:
332         compatible:
333           contains:
334             enum:
335               - allwinner,sun9i-a80-tcon-tv
336 
337     then:
338       properties:
339         resets:
340           minItems: 2
341 
342         reset-names:
343           items:
344             - const: lcd
345             - const: edp
346 
347   - if:
348       properties:
349         compatible:
350           contains:
351             enum:
352               - allwinner,sun4i-a10-tcon
353               - allwinner,sun5i-a13-tcon
354               - allwinner,sun6i-a31-tcon
355               - allwinner,sun6i-a31s-tcon
356               - allwinner,sun7i-a20-tcon
357               - allwinner,sun8i-a23-tcon
358               - allwinner,sun8i-a33-tcon
359 
360     then:
361       required:
362         - dmas
363 
364 examples:
365   - |
366     #include <dt-bindings/dma/sun4i-a10.h>
367 
368     /*
369      * This comes from the clock/sun4i-a10-ccu.h and
370      * reset/sun4i-a10-ccu.h headers, but we can't include them since
371      * it would trigger a bunch of warnings for redefinitions of
372      * symbols with the other example.
373      */
374 
375     #define CLK_AHB_LCD0        56
376     #define CLK_TCON0_CH0       149
377     #define CLK_TCON0_CH1       155
378     #define RST_TCON0           11
379 
380     lcd-controller@1c0c000 {
381         compatible = "allwinner,sun4i-a10-tcon";
382         reg = <0x01c0c000 0x1000>;
383         interrupts = <44>;
384         resets = <&ccu RST_TCON0>;
385         reset-names = "lcd";
386         clocks = <&ccu CLK_AHB_LCD0>,
387                  <&ccu CLK_TCON0_CH0>,
388                  <&ccu CLK_TCON0_CH1>;
389         clock-names = "ahb",
390                       "tcon-ch0",
391                       "tcon-ch1";
392         clock-output-names = "tcon0-pixel-clock";
393         #clock-cells = <0>;
394         dmas = <&dma SUN4I_DMA_DEDICATED 14>;
395 
396         ports {
397             #address-cells = <1>;
398             #size-cells = <0>;
399 
400             port@0 {
401                 #address-cells = <1>;
402                 #size-cells = <0>;
403                 reg = <0>;
404 
405                 endpoint@0 {
406                     reg = <0>;
407                     remote-endpoint = <&be0_out_tcon0>;
408                 };
409 
410                 endpoint@1 {
411                     reg = <1>;
412                     remote-endpoint = <&be1_out_tcon0>;
413                 };
414             };
415 
416             port@1 {
417                 #address-cells = <1>;
418                 #size-cells = <0>;
419                 reg = <1>;
420 
421                 endpoint@1 {
422                     reg = <1>;
423                     remote-endpoint = <&hdmi_in_tcon0>;
424                     allwinner,tcon-channel = <1>;
425                 };
426             };
427         };
428     };
429 
430     #undef CLK_AHB_LCD0
431     #undef CLK_TCON0_CH0
432     #undef CLK_TCON0_CH1
433     #undef RST_TCON0
434 
435   - |
436     #include <dt-bindings/interrupt-controller/arm-gic.h>
437 
438     /*
439      * This comes from the clock/sun6i-a31-ccu.h and
440      * reset/sun6i-a31-ccu.h headers, but we can't include them since
441      * it would trigger a bunch of warnings for redefinitions of
442      * symbols with the other example.
443      */
444 
445     #define CLK_PLL_MIPI        15
446     #define CLK_AHB1_LCD0       47
447     #define CLK_LCD0_CH0        127
448     #define CLK_LCD0_CH1        129
449     #define RST_AHB1_LCD0       27
450     #define RST_AHB1_LVDS       41
451 
452     lcd-controller@1c0c000 {
453         compatible = "allwinner,sun6i-a31-tcon";
454         reg = <0x01c0c000 0x1000>;
455         interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
456         dmas = <&dma 11>;
457         resets = <&ccu RST_AHB1_LCD0>, <&ccu RST_AHB1_LVDS>;
458         reset-names = "lcd", "lvds";
459         clocks = <&ccu CLK_AHB1_LCD0>,
460                  <&ccu CLK_LCD0_CH0>,
461                  <&ccu CLK_LCD0_CH1>,
462                  <&ccu CLK_PLL_MIPI>;
463         clock-names = "ahb",
464                       "tcon-ch0",
465                       "tcon-ch1",
466                       "lvds-alt";
467         clock-output-names = "tcon0-pixel-clock";
468         #clock-cells = <0>;
469 
470         ports {
471             #address-cells = <1>;
472             #size-cells = <0>;
473 
474             port@0 {
475                 #address-cells = <1>;
476                 #size-cells = <0>;
477                 reg = <0>;
478 
479                 endpoint@0 {
480                     reg = <0>;
481                     remote-endpoint = <&drc0_out_tcon0>;
482                 };
483 
484                 endpoint@1 {
485                     reg = <1>;
486                     remote-endpoint = <&drc1_out_tcon0>;
487                 };
488             };
489 
490             port@1 {
491                 #address-cells = <1>;
492                 #size-cells = <0>;
493                 reg = <1>;
494 
495                 endpoint@1 {
496                     reg = <1>;
497                     remote-endpoint = <&hdmi_in_tcon0>;
498                     allwinner,tcon-channel = <1>;
499                 };
500             };
501         };
502     };
503 
504     #undef CLK_PLL_MIPI
505     #undef CLK_AHB1_LCD0
506     #undef CLK_LCD0_CH0
507     #undef CLK_LCD0_CH1
508     #undef RST_AHB1_LCD0
509     #undef RST_AHB1_LVDS
510 
511   - |
512     #include <dt-bindings/interrupt-controller/arm-gic.h>
513 
514     /*
515      * This comes from the clock/sun9i-a80-ccu.h and
516      * reset/sun9i-a80-ccu.h headers, but we can't include them since
517      * it would trigger a bunch of warnings for redefinitions of
518      * symbols with the other example.
519      */
520 
521     #define CLK_BUS_LCD0        102
522     #define CLK_LCD0            58
523     #define RST_BUS_LCD0        22
524     #define RST_BUS_EDP         24
525     #define RST_BUS_LVDS        25
526 
527     lcd-controller@3c00000 {
528         compatible = "allwinner,sun9i-a80-tcon-lcd";
529         reg = <0x03c00000 0x10000>;
530         interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
531         clocks = <&ccu CLK_BUS_LCD0>, <&ccu CLK_LCD0>;
532         clock-names = "ahb", "tcon-ch0";
533         resets = <&ccu RST_BUS_LCD0>, <&ccu RST_BUS_EDP>, <&ccu RST_BUS_LVDS>;
534         reset-names = "lcd", "edp", "lvds";
535         clock-output-names = "tcon0-pixel-clock";
536         #clock-cells = <0>;
537 
538         ports {
539             #address-cells = <1>;
540             #size-cells = <0>;
541 
542             port@0 {
543                 reg = <0>;
544 
545                 endpoint {
546                     remote-endpoint = <&drc0_out_tcon0>;
547                 };
548             };
549 
550             port@1 {
551                 reg = <1>;
552             };
553         };
554     };
555 
556     #undef CLK_BUS_TCON0
557     #undef CLK_TCON0
558     #undef RST_BUS_TCON0
559     #undef RST_BUS_EDP
560     #undef RST_BUS_LVDS
561 
562   - |
563     #include <dt-bindings/interrupt-controller/arm-gic.h>
564 
565     /*
566      * This comes from the clock/sun8i-a83t-ccu.h and
567      * reset/sun8i-a83t-ccu.h headers, but we can't include them since
568      * it would trigger a bunch of warnings for redefinitions of
569      * symbols with the other example.
570      */
571 
572     #define CLK_BUS_TCON0       36
573     #define CLK_TCON0           85
574     #define RST_BUS_TCON0       22
575     #define RST_BUS_LVDS        31
576 
577     lcd-controller@1c0c000 {
578         compatible = "allwinner,sun8i-a83t-tcon-lcd";
579         reg = <0x01c0c000 0x1000>;
580         interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
581         clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>;
582         clock-names = "ahb", "tcon-ch0";
583         clock-output-names = "tcon-pixel-clock";
584         #clock-cells = <0>;
585         resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>;
586         reset-names = "lcd", "lvds";
587 
588         ports {
589             #address-cells = <1>;
590             #size-cells = <0>;
591 
592             port@0 {
593                 #address-cells = <1>;
594                 #size-cells = <0>;
595                 reg = <0>;
596 
597                 endpoint@0 {
598                     reg = <0>;
599                     remote-endpoint = <&mixer0_out_tcon0>;
600                 };
601 
602                 endpoint@1 {
603                     reg = <1>;
604                     remote-endpoint = <&mixer1_out_tcon0>;
605                 };
606             };
607 
608             port@1 {
609                 reg = <1>;
610             };
611         };
612     };
613 
614     #undef CLK_BUS_TCON0
615     #undef CLK_TCON0
616     #undef RST_BUS_TCON0
617     #undef RST_BUS_LVDS
618 
619   - |
620     #include <dt-bindings/interrupt-controller/arm-gic.h>
621 
622     /*
623      * This comes from the clock/sun8i-r40-ccu.h and
624      * reset/sun8i-r40-ccu.h headers, but we can't include them since
625      * it would trigger a bunch of warnings for redefinitions of
626      * symbols with the other example.
627      */
628 
629     #define CLK_BUS_TCON_TV0    73
630     #define RST_BUS_TCON_TV0    49
631 
632     tcon_tv0: lcd-controller@1c73000 {
633         compatible = "allwinner,sun8i-r40-tcon-tv";
634         reg = <0x01c73000 0x1000>;
635         interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
636         clocks = <&ccu CLK_BUS_TCON_TV0>, <&tcon_top 0>;
637         clock-names = "ahb", "tcon-ch1";
638         resets = <&ccu RST_BUS_TCON_TV0>;
639         reset-names = "lcd";
640 
641         ports {
642             #address-cells = <1>;
643             #size-cells = <0>;
644 
645             port@0 {
646                 #address-cells = <1>;
647                 #size-cells = <0>;
648                 reg = <0>;
649 
650                 endpoint@0 {
651                     reg = <0>;
652                     remote-endpoint = <&tcon_top_mixer0_out_tcon_tv0>;
653                 };
654 
655                 endpoint@1 {
656                     reg = <1>;
657                     remote-endpoint = <&tcon_top_mixer1_out_tcon_tv0>;
658                 };
659             };
660 
661             tcon_tv0_out: port@1 {
662                 #address-cells = <1>;
663                 #size-cells = <0>;
664                 reg = <1>;
665 
666                 endpoint@1 {
667                     reg = <1>;
668                     remote-endpoint = <&tcon_top_hdmi_in_tcon_tv0>;
669                 };
670             };
671         };
672     };
673 
674     #undef CLK_BUS_TCON_TV0
675     #undef RST_BUS_TCON_TV0
676 
677 ...

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php