The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/device-tree/Bindings/display/allwinner,sun4i-a10-tcon.yaml

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    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) Device Tree Bindings
    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 ...

Cache object: b067ef89a95618c65d5006ff757bebb8


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.