18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/display/allwinner,sun4i-a10-tcon.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Allwinner A10 Timings Controller (TCON) Device Tree Bindings
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Chen-Yu Tsai <wens@csie.org>
118c2ecf20Sopenharmony_ci  - Maxime Ripard <mripard@kernel.org>
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_cidescription: |
148c2ecf20Sopenharmony_ci  The TCON acts as a timing controller for RGB, LVDS and TV
158c2ecf20Sopenharmony_ci  interfaces.
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ciproperties:
188c2ecf20Sopenharmony_ci  "#clock-cells":
198c2ecf20Sopenharmony_ci    const: 0
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci  compatible:
228c2ecf20Sopenharmony_ci    oneOf:
238c2ecf20Sopenharmony_ci      - const: allwinner,sun4i-a10-tcon
248c2ecf20Sopenharmony_ci      - const: allwinner,sun5i-a13-tcon
258c2ecf20Sopenharmony_ci      - const: allwinner,sun6i-a31-tcon
268c2ecf20Sopenharmony_ci      - const: allwinner,sun6i-a31s-tcon
278c2ecf20Sopenharmony_ci      - const: allwinner,sun7i-a20-tcon
288c2ecf20Sopenharmony_ci      - const: allwinner,sun8i-a23-tcon
298c2ecf20Sopenharmony_ci      - const: allwinner,sun8i-a33-tcon
308c2ecf20Sopenharmony_ci      - const: allwinner,sun8i-a83t-tcon-lcd
318c2ecf20Sopenharmony_ci      - const: allwinner,sun8i-a83t-tcon-tv
328c2ecf20Sopenharmony_ci      - const: allwinner,sun8i-r40-tcon-tv
338c2ecf20Sopenharmony_ci      - const: allwinner,sun8i-v3s-tcon
348c2ecf20Sopenharmony_ci      - const: allwinner,sun9i-a80-tcon-lcd
358c2ecf20Sopenharmony_ci      - const: allwinner,sun9i-a80-tcon-tv
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ci      - items:
388c2ecf20Sopenharmony_ci          - enum:
398c2ecf20Sopenharmony_ci              - allwinner,sun7i-a20-tcon0
408c2ecf20Sopenharmony_ci              - allwinner,sun7i-a20-tcon1
418c2ecf20Sopenharmony_ci          - const: allwinner,sun7i-a20-tcon
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci      - items:
448c2ecf20Sopenharmony_ci          - enum:
458c2ecf20Sopenharmony_ci              - allwinner,sun50i-a64-tcon-lcd
468c2ecf20Sopenharmony_ci          - const: allwinner,sun8i-a83t-tcon-lcd
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci      - items:
498c2ecf20Sopenharmony_ci          - enum:
508c2ecf20Sopenharmony_ci              - allwinner,sun8i-h3-tcon-tv
518c2ecf20Sopenharmony_ci              - allwinner,sun50i-a64-tcon-tv
528c2ecf20Sopenharmony_ci          - const: allwinner,sun8i-a83t-tcon-tv
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ci      - items:
558c2ecf20Sopenharmony_ci          - enum:
568c2ecf20Sopenharmony_ci              - allwinner,sun50i-h6-tcon-tv
578c2ecf20Sopenharmony_ci          - const: allwinner,sun8i-r40-tcon-tv
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ci  reg:
608c2ecf20Sopenharmony_ci    maxItems: 1
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ci  interrupts:
638c2ecf20Sopenharmony_ci    maxItems: 1
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci  clocks:
668c2ecf20Sopenharmony_ci    minItems: 1
678c2ecf20Sopenharmony_ci    maxItems: 4
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_ci  clock-names:
708c2ecf20Sopenharmony_ci    minItems: 1
718c2ecf20Sopenharmony_ci    maxItems: 4
728c2ecf20Sopenharmony_ci
738c2ecf20Sopenharmony_ci  clock-output-names:
748c2ecf20Sopenharmony_ci    description:
758c2ecf20Sopenharmony_ci      Name of the LCD pixel clock created.
768c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/string-array
778c2ecf20Sopenharmony_ci    maxItems: 1
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_ci  dmas:
808c2ecf20Sopenharmony_ci    maxItems: 1
818c2ecf20Sopenharmony_ci
828c2ecf20Sopenharmony_ci  resets:
838c2ecf20Sopenharmony_ci    anyOf:
848c2ecf20Sopenharmony_ci      - items:
858c2ecf20Sopenharmony_ci          - description: TCON Reset Line
868c2ecf20Sopenharmony_ci
878c2ecf20Sopenharmony_ci      - items:
888c2ecf20Sopenharmony_ci          - description: TCON Reset Line
898c2ecf20Sopenharmony_ci          - description: TCON LVDS Reset Line
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ci      - items:
928c2ecf20Sopenharmony_ci          - description: TCON Reset Line
938c2ecf20Sopenharmony_ci          - description: TCON eDP Reset Line
948c2ecf20Sopenharmony_ci
958c2ecf20Sopenharmony_ci      - items:
968c2ecf20Sopenharmony_ci          - description: TCON Reset Line
978c2ecf20Sopenharmony_ci          - description: TCON eDP Reset Line
988c2ecf20Sopenharmony_ci          - description: TCON LVDS Reset Line
998c2ecf20Sopenharmony_ci
1008c2ecf20Sopenharmony_ci  reset-names:
1018c2ecf20Sopenharmony_ci    oneOf:
1028c2ecf20Sopenharmony_ci      - const: lcd
1038c2ecf20Sopenharmony_ci
1048c2ecf20Sopenharmony_ci      - items:
1058c2ecf20Sopenharmony_ci          - const: lcd
1068c2ecf20Sopenharmony_ci          - const: lvds
1078c2ecf20Sopenharmony_ci
1088c2ecf20Sopenharmony_ci      - items:
1098c2ecf20Sopenharmony_ci          - const: lcd
1108c2ecf20Sopenharmony_ci          - const: edp
1118c2ecf20Sopenharmony_ci
1128c2ecf20Sopenharmony_ci      - items:
1138c2ecf20Sopenharmony_ci          - const: lcd
1148c2ecf20Sopenharmony_ci          - const: edp
1158c2ecf20Sopenharmony_ci          - const: lvds
1168c2ecf20Sopenharmony_ci
1178c2ecf20Sopenharmony_ci  ports:
1188c2ecf20Sopenharmony_ci    type: object
1198c2ecf20Sopenharmony_ci    description: |
1208c2ecf20Sopenharmony_ci      A ports node with endpoint definitions as defined in
1218c2ecf20Sopenharmony_ci      Documentation/devicetree/bindings/media/video-interfaces.txt.
1228c2ecf20Sopenharmony_ci
1238c2ecf20Sopenharmony_ci    properties:
1248c2ecf20Sopenharmony_ci      "#address-cells":
1258c2ecf20Sopenharmony_ci        const: 1
1268c2ecf20Sopenharmony_ci
1278c2ecf20Sopenharmony_ci      "#size-cells":
1288c2ecf20Sopenharmony_ci        const: 0
1298c2ecf20Sopenharmony_ci
1308c2ecf20Sopenharmony_ci      port@0:
1318c2ecf20Sopenharmony_ci        type: object
1328c2ecf20Sopenharmony_ci        description: |
1338c2ecf20Sopenharmony_ci          Input endpoints of the controller.
1348c2ecf20Sopenharmony_ci
1358c2ecf20Sopenharmony_ci      port@1:
1368c2ecf20Sopenharmony_ci        type: object
1378c2ecf20Sopenharmony_ci        description: |
1388c2ecf20Sopenharmony_ci          Output endpoints of the controller.
1398c2ecf20Sopenharmony_ci
1408c2ecf20Sopenharmony_ci        patternProperties:
1418c2ecf20Sopenharmony_ci          "^endpoint(@[0-9])$":
1428c2ecf20Sopenharmony_ci            type: object
1438c2ecf20Sopenharmony_ci
1448c2ecf20Sopenharmony_ci            properties:
1458c2ecf20Sopenharmony_ci              allwinner,tcon-channel:
1468c2ecf20Sopenharmony_ci                $ref: /schemas/types.yaml#/definitions/uint32
1478c2ecf20Sopenharmony_ci                description: |
1488c2ecf20Sopenharmony_ci                  TCON can have 1 or 2 channels, usually with the
1498c2ecf20Sopenharmony_ci                  first channel being used for the panels interfaces
1508c2ecf20Sopenharmony_ci                  (RGB, LVDS, etc.), and the second being used for the
1518c2ecf20Sopenharmony_ci                  outputs that require another controller (TV Encoder,
1528c2ecf20Sopenharmony_ci                  HDMI, etc.).
1538c2ecf20Sopenharmony_ci
1548c2ecf20Sopenharmony_ci                  If that property is present, specifies the TCON
1558c2ecf20Sopenharmony_ci                  channel the endpoint is associated to. If that
1568c2ecf20Sopenharmony_ci                  property is not present, the endpoint number will be
1578c2ecf20Sopenharmony_ci                  used as the channel number.
1588c2ecf20Sopenharmony_ci
1598c2ecf20Sopenharmony_ci            unevaluatedProperties: true
1608c2ecf20Sopenharmony_ci
1618c2ecf20Sopenharmony_ci    required:
1628c2ecf20Sopenharmony_ci      - "#address-cells"
1638c2ecf20Sopenharmony_ci      - "#size-cells"
1648c2ecf20Sopenharmony_ci      - port@0
1658c2ecf20Sopenharmony_ci      - port@1
1668c2ecf20Sopenharmony_ci
1678c2ecf20Sopenharmony_ci    additionalProperties: false
1688c2ecf20Sopenharmony_ci
1698c2ecf20Sopenharmony_cirequired:
1708c2ecf20Sopenharmony_ci  - compatible
1718c2ecf20Sopenharmony_ci  - reg
1728c2ecf20Sopenharmony_ci  - interrupts
1738c2ecf20Sopenharmony_ci  - clocks
1748c2ecf20Sopenharmony_ci  - clock-names
1758c2ecf20Sopenharmony_ci  - resets
1768c2ecf20Sopenharmony_ci  - ports
1778c2ecf20Sopenharmony_ci
1788c2ecf20Sopenharmony_ciadditionalProperties: false
1798c2ecf20Sopenharmony_ci
1808c2ecf20Sopenharmony_ciallOf:
1818c2ecf20Sopenharmony_ci  - if:
1828c2ecf20Sopenharmony_ci      properties:
1838c2ecf20Sopenharmony_ci        compatible:
1848c2ecf20Sopenharmony_ci          contains:
1858c2ecf20Sopenharmony_ci            enum:
1868c2ecf20Sopenharmony_ci              - allwinner,sun4i-a10-tcon
1878c2ecf20Sopenharmony_ci              - allwinner,sun5i-a13-tcon
1888c2ecf20Sopenharmony_ci              - allwinner,sun7i-a20-tcon
1898c2ecf20Sopenharmony_ci
1908c2ecf20Sopenharmony_ci    then:
1918c2ecf20Sopenharmony_ci      properties:
1928c2ecf20Sopenharmony_ci        clocks:
1938c2ecf20Sopenharmony_ci          minItems: 3
1948c2ecf20Sopenharmony_ci
1958c2ecf20Sopenharmony_ci        clock-names:
1968c2ecf20Sopenharmony_ci          items:
1978c2ecf20Sopenharmony_ci            - const: ahb
1988c2ecf20Sopenharmony_ci            - const: tcon-ch0
1998c2ecf20Sopenharmony_ci            - const: tcon-ch1
2008c2ecf20Sopenharmony_ci
2018c2ecf20Sopenharmony_ci  - if:
2028c2ecf20Sopenharmony_ci      properties:
2038c2ecf20Sopenharmony_ci        compatible:
2048c2ecf20Sopenharmony_ci          contains:
2058c2ecf20Sopenharmony_ci            enum:
2068c2ecf20Sopenharmony_ci              - allwinner,sun6i-a31-tcon
2078c2ecf20Sopenharmony_ci              - allwinner,sun6i-a31s-tcon
2088c2ecf20Sopenharmony_ci
2098c2ecf20Sopenharmony_ci    then:
2108c2ecf20Sopenharmony_ci      properties:
2118c2ecf20Sopenharmony_ci        clocks:
2128c2ecf20Sopenharmony_ci          minItems: 4
2138c2ecf20Sopenharmony_ci
2148c2ecf20Sopenharmony_ci        clock-names:
2158c2ecf20Sopenharmony_ci          items:
2168c2ecf20Sopenharmony_ci            - const: ahb
2178c2ecf20Sopenharmony_ci            - const: tcon-ch0
2188c2ecf20Sopenharmony_ci            - const: tcon-ch1
2198c2ecf20Sopenharmony_ci            - const: lvds-alt
2208c2ecf20Sopenharmony_ci
2218c2ecf20Sopenharmony_ci  - if:
2228c2ecf20Sopenharmony_ci      properties:
2238c2ecf20Sopenharmony_ci        compatible:
2248c2ecf20Sopenharmony_ci          contains:
2258c2ecf20Sopenharmony_ci            enum:
2268c2ecf20Sopenharmony_ci              - allwinner,sun8i-a23-tcon
2278c2ecf20Sopenharmony_ci              - allwinner,sun8i-a33-tcon
2288c2ecf20Sopenharmony_ci
2298c2ecf20Sopenharmony_ci    then:
2308c2ecf20Sopenharmony_ci      properties:
2318c2ecf20Sopenharmony_ci        clocks:
2328c2ecf20Sopenharmony_ci          minItems: 3
2338c2ecf20Sopenharmony_ci
2348c2ecf20Sopenharmony_ci        clock-names:
2358c2ecf20Sopenharmony_ci          items:
2368c2ecf20Sopenharmony_ci            - const: ahb
2378c2ecf20Sopenharmony_ci            - const: tcon-ch0
2388c2ecf20Sopenharmony_ci            - const: lvds-alt
2398c2ecf20Sopenharmony_ci
2408c2ecf20Sopenharmony_ci  - if:
2418c2ecf20Sopenharmony_ci      properties:
2428c2ecf20Sopenharmony_ci        compatible:
2438c2ecf20Sopenharmony_ci          contains:
2448c2ecf20Sopenharmony_ci            enum:
2458c2ecf20Sopenharmony_ci              - allwinner,sun8i-a83t-tcon-lcd
2468c2ecf20Sopenharmony_ci              - allwinner,sun8i-v3s-tcon
2478c2ecf20Sopenharmony_ci              - allwinner,sun9i-a80-tcon-lcd
2488c2ecf20Sopenharmony_ci
2498c2ecf20Sopenharmony_ci    then:
2508c2ecf20Sopenharmony_ci      properties:
2518c2ecf20Sopenharmony_ci        clocks:
2528c2ecf20Sopenharmony_ci          minItems: 2
2538c2ecf20Sopenharmony_ci
2548c2ecf20Sopenharmony_ci        clock-names:
2558c2ecf20Sopenharmony_ci          items:
2568c2ecf20Sopenharmony_ci            - const: ahb
2578c2ecf20Sopenharmony_ci            - const: tcon-ch0
2588c2ecf20Sopenharmony_ci
2598c2ecf20Sopenharmony_ci  - if:
2608c2ecf20Sopenharmony_ci      properties:
2618c2ecf20Sopenharmony_ci        compatible:
2628c2ecf20Sopenharmony_ci          contains:
2638c2ecf20Sopenharmony_ci            enum:
2648c2ecf20Sopenharmony_ci              - allwinner,sun8i-a83t-tcon-tv
2658c2ecf20Sopenharmony_ci              - allwinner,sun8i-r40-tcon-tv
2668c2ecf20Sopenharmony_ci              - allwinner,sun9i-a80-tcon-tv
2678c2ecf20Sopenharmony_ci
2688c2ecf20Sopenharmony_ci    then:
2698c2ecf20Sopenharmony_ci      properties:
2708c2ecf20Sopenharmony_ci        clocks:
2718c2ecf20Sopenharmony_ci          minItems: 2
2728c2ecf20Sopenharmony_ci
2738c2ecf20Sopenharmony_ci        clock-names:
2748c2ecf20Sopenharmony_ci          items:
2758c2ecf20Sopenharmony_ci            - const: ahb
2768c2ecf20Sopenharmony_ci            - const: tcon-ch1
2778c2ecf20Sopenharmony_ci
2788c2ecf20Sopenharmony_ci  - if:
2798c2ecf20Sopenharmony_ci      properties:
2808c2ecf20Sopenharmony_ci        compatible:
2818c2ecf20Sopenharmony_ci          contains:
2828c2ecf20Sopenharmony_ci            enum:
2838c2ecf20Sopenharmony_ci              - allwinner,sun5i-a13-tcon
2848c2ecf20Sopenharmony_ci              - allwinner,sun6i-a31-tcon
2858c2ecf20Sopenharmony_ci              - allwinner,sun6i-a31s-tcon
2868c2ecf20Sopenharmony_ci              - allwinner,sun7i-a20-tcon
2878c2ecf20Sopenharmony_ci              - allwinner,sun8i-a23-tcon
2888c2ecf20Sopenharmony_ci              - allwinner,sun8i-a33-tcon
2898c2ecf20Sopenharmony_ci              - allwinner,sun8i-v3s-tcon
2908c2ecf20Sopenharmony_ci              - allwinner,sun9i-a80-tcon-lcd
2918c2ecf20Sopenharmony_ci              - allwinner,sun4i-a10-tcon
2928c2ecf20Sopenharmony_ci              - allwinner,sun8i-a83t-tcon-lcd
2938c2ecf20Sopenharmony_ci
2948c2ecf20Sopenharmony_ci    then:
2958c2ecf20Sopenharmony_ci      required:
2968c2ecf20Sopenharmony_ci        - "#clock-cells"
2978c2ecf20Sopenharmony_ci        - clock-output-names
2988c2ecf20Sopenharmony_ci
2998c2ecf20Sopenharmony_ci  - if:
3008c2ecf20Sopenharmony_ci      properties:
3018c2ecf20Sopenharmony_ci        compatible:
3028c2ecf20Sopenharmony_ci          contains:
3038c2ecf20Sopenharmony_ci            enum:
3048c2ecf20Sopenharmony_ci              - allwinner,sun6i-a31-tcon
3058c2ecf20Sopenharmony_ci              - allwinner,sun6i-a31s-tcon
3068c2ecf20Sopenharmony_ci              - allwinner,sun8i-a23-tcon
3078c2ecf20Sopenharmony_ci              - allwinner,sun8i-a33-tcon
3088c2ecf20Sopenharmony_ci              - allwinner,sun8i-a83t-tcon-lcd
3098c2ecf20Sopenharmony_ci
3108c2ecf20Sopenharmony_ci    then:
3118c2ecf20Sopenharmony_ci      properties:
3128c2ecf20Sopenharmony_ci        resets:
3138c2ecf20Sopenharmony_ci          minItems: 2
3148c2ecf20Sopenharmony_ci
3158c2ecf20Sopenharmony_ci        reset-names:
3168c2ecf20Sopenharmony_ci          items:
3178c2ecf20Sopenharmony_ci            - const: lcd
3188c2ecf20Sopenharmony_ci            - const: lvds
3198c2ecf20Sopenharmony_ci
3208c2ecf20Sopenharmony_ci  - if:
3218c2ecf20Sopenharmony_ci      properties:
3228c2ecf20Sopenharmony_ci        compatible:
3238c2ecf20Sopenharmony_ci          contains:
3248c2ecf20Sopenharmony_ci            enum:
3258c2ecf20Sopenharmony_ci              - allwinner,sun9i-a80-tcon-lcd
3268c2ecf20Sopenharmony_ci
3278c2ecf20Sopenharmony_ci    then:
3288c2ecf20Sopenharmony_ci      properties:
3298c2ecf20Sopenharmony_ci        resets:
3308c2ecf20Sopenharmony_ci          minItems: 3
3318c2ecf20Sopenharmony_ci
3328c2ecf20Sopenharmony_ci        reset-names:
3338c2ecf20Sopenharmony_ci          items:
3348c2ecf20Sopenharmony_ci            - const: lcd
3358c2ecf20Sopenharmony_ci            - const: edp
3368c2ecf20Sopenharmony_ci            - const: lvds
3378c2ecf20Sopenharmony_ci
3388c2ecf20Sopenharmony_ci  - if:
3398c2ecf20Sopenharmony_ci      properties:
3408c2ecf20Sopenharmony_ci        compatible:
3418c2ecf20Sopenharmony_ci          contains:
3428c2ecf20Sopenharmony_ci            enum:
3438c2ecf20Sopenharmony_ci              - allwinner,sun9i-a80-tcon-tv
3448c2ecf20Sopenharmony_ci
3458c2ecf20Sopenharmony_ci    then:
3468c2ecf20Sopenharmony_ci      properties:
3478c2ecf20Sopenharmony_ci        resets:
3488c2ecf20Sopenharmony_ci          minItems: 2
3498c2ecf20Sopenharmony_ci
3508c2ecf20Sopenharmony_ci        reset-names:
3518c2ecf20Sopenharmony_ci          items:
3528c2ecf20Sopenharmony_ci            - const: lcd
3538c2ecf20Sopenharmony_ci            - const: edp
3548c2ecf20Sopenharmony_ci
3558c2ecf20Sopenharmony_ci  - if:
3568c2ecf20Sopenharmony_ci      properties:
3578c2ecf20Sopenharmony_ci        compatible:
3588c2ecf20Sopenharmony_ci          contains:
3598c2ecf20Sopenharmony_ci            enum:
3608c2ecf20Sopenharmony_ci              - allwinner,sun4i-a10-tcon
3618c2ecf20Sopenharmony_ci              - allwinner,sun5i-a13-tcon
3628c2ecf20Sopenharmony_ci              - allwinner,sun6i-a31-tcon
3638c2ecf20Sopenharmony_ci              - allwinner,sun6i-a31s-tcon
3648c2ecf20Sopenharmony_ci              - allwinner,sun7i-a20-tcon
3658c2ecf20Sopenharmony_ci              - allwinner,sun8i-a23-tcon
3668c2ecf20Sopenharmony_ci              - allwinner,sun8i-a33-tcon
3678c2ecf20Sopenharmony_ci
3688c2ecf20Sopenharmony_ci    then:
3698c2ecf20Sopenharmony_ci      required:
3708c2ecf20Sopenharmony_ci        - dmas
3718c2ecf20Sopenharmony_ci
3728c2ecf20Sopenharmony_ciexamples:
3738c2ecf20Sopenharmony_ci  - |
3748c2ecf20Sopenharmony_ci    #include <dt-bindings/dma/sun4i-a10.h>
3758c2ecf20Sopenharmony_ci
3768c2ecf20Sopenharmony_ci    /*
3778c2ecf20Sopenharmony_ci     * This comes from the clock/sun4i-a10-ccu.h and
3788c2ecf20Sopenharmony_ci     * reset/sun4i-a10-ccu.h headers, but we can't include them since
3798c2ecf20Sopenharmony_ci     * it would trigger a bunch of warnings for redefinitions of
3808c2ecf20Sopenharmony_ci     * symbols with the other example.
3818c2ecf20Sopenharmony_ci     */
3828c2ecf20Sopenharmony_ci
3838c2ecf20Sopenharmony_ci    #define CLK_AHB_LCD0	56
3848c2ecf20Sopenharmony_ci    #define CLK_TCON0_CH0	149
3858c2ecf20Sopenharmony_ci    #define CLK_TCON0_CH1	155
3868c2ecf20Sopenharmony_ci    #define RST_TCON0		11
3878c2ecf20Sopenharmony_ci
3888c2ecf20Sopenharmony_ci    lcd-controller@1c0c000 {
3898c2ecf20Sopenharmony_ci        compatible = "allwinner,sun4i-a10-tcon";
3908c2ecf20Sopenharmony_ci        reg = <0x01c0c000 0x1000>;
3918c2ecf20Sopenharmony_ci        interrupts = <44>;
3928c2ecf20Sopenharmony_ci        resets = <&ccu RST_TCON0>;
3938c2ecf20Sopenharmony_ci        reset-names = "lcd";
3948c2ecf20Sopenharmony_ci        clocks = <&ccu CLK_AHB_LCD0>,
3958c2ecf20Sopenharmony_ci                 <&ccu CLK_TCON0_CH0>,
3968c2ecf20Sopenharmony_ci                 <&ccu CLK_TCON0_CH1>;
3978c2ecf20Sopenharmony_ci        clock-names = "ahb",
3988c2ecf20Sopenharmony_ci                      "tcon-ch0",
3998c2ecf20Sopenharmony_ci                      "tcon-ch1";
4008c2ecf20Sopenharmony_ci        clock-output-names = "tcon0-pixel-clock";
4018c2ecf20Sopenharmony_ci        #clock-cells = <0>;
4028c2ecf20Sopenharmony_ci        dmas = <&dma SUN4I_DMA_DEDICATED 14>;
4038c2ecf20Sopenharmony_ci
4048c2ecf20Sopenharmony_ci        ports {
4058c2ecf20Sopenharmony_ci            #address-cells = <1>;
4068c2ecf20Sopenharmony_ci            #size-cells = <0>;
4078c2ecf20Sopenharmony_ci
4088c2ecf20Sopenharmony_ci            port@0 {
4098c2ecf20Sopenharmony_ci                #address-cells = <1>;
4108c2ecf20Sopenharmony_ci                #size-cells = <0>;
4118c2ecf20Sopenharmony_ci                reg = <0>;
4128c2ecf20Sopenharmony_ci
4138c2ecf20Sopenharmony_ci                endpoint@0 {
4148c2ecf20Sopenharmony_ci                    reg = <0>;
4158c2ecf20Sopenharmony_ci                    remote-endpoint = <&be0_out_tcon0>;
4168c2ecf20Sopenharmony_ci                };
4178c2ecf20Sopenharmony_ci
4188c2ecf20Sopenharmony_ci                endpoint@1 {
4198c2ecf20Sopenharmony_ci                    reg = <1>;
4208c2ecf20Sopenharmony_ci                    remote-endpoint = <&be1_out_tcon0>;
4218c2ecf20Sopenharmony_ci                };
4228c2ecf20Sopenharmony_ci            };
4238c2ecf20Sopenharmony_ci
4248c2ecf20Sopenharmony_ci            port@1 {
4258c2ecf20Sopenharmony_ci                #address-cells = <1>;
4268c2ecf20Sopenharmony_ci                #size-cells = <0>;
4278c2ecf20Sopenharmony_ci                reg = <1>;
4288c2ecf20Sopenharmony_ci
4298c2ecf20Sopenharmony_ci                endpoint@1 {
4308c2ecf20Sopenharmony_ci                    reg = <1>;
4318c2ecf20Sopenharmony_ci                    remote-endpoint = <&hdmi_in_tcon0>;
4328c2ecf20Sopenharmony_ci                    allwinner,tcon-channel = <1>;
4338c2ecf20Sopenharmony_ci                };
4348c2ecf20Sopenharmony_ci            };
4358c2ecf20Sopenharmony_ci        };
4368c2ecf20Sopenharmony_ci    };
4378c2ecf20Sopenharmony_ci
4388c2ecf20Sopenharmony_ci    #undef CLK_AHB_LCD0
4398c2ecf20Sopenharmony_ci    #undef CLK_TCON0_CH0
4408c2ecf20Sopenharmony_ci    #undef CLK_TCON0_CH1
4418c2ecf20Sopenharmony_ci    #undef RST_TCON0
4428c2ecf20Sopenharmony_ci
4438c2ecf20Sopenharmony_ci  - |
4448c2ecf20Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
4458c2ecf20Sopenharmony_ci
4468c2ecf20Sopenharmony_ci    /*
4478c2ecf20Sopenharmony_ci     * This comes from the clock/sun6i-a31-ccu.h and
4488c2ecf20Sopenharmony_ci     * reset/sun6i-a31-ccu.h headers, but we can't include them since
4498c2ecf20Sopenharmony_ci     * it would trigger a bunch of warnings for redefinitions of
4508c2ecf20Sopenharmony_ci     * symbols with the other example.
4518c2ecf20Sopenharmony_ci     */
4528c2ecf20Sopenharmony_ci
4538c2ecf20Sopenharmony_ci    #define CLK_PLL_MIPI	15
4548c2ecf20Sopenharmony_ci    #define CLK_AHB1_LCD0	47
4558c2ecf20Sopenharmony_ci    #define CLK_LCD0_CH0	127
4568c2ecf20Sopenharmony_ci    #define CLK_LCD0_CH1	129
4578c2ecf20Sopenharmony_ci    #define RST_AHB1_LCD0	27
4588c2ecf20Sopenharmony_ci    #define RST_AHB1_LVDS	41
4598c2ecf20Sopenharmony_ci
4608c2ecf20Sopenharmony_ci    lcd-controller@1c0c000 {
4618c2ecf20Sopenharmony_ci        compatible = "allwinner,sun6i-a31-tcon";
4628c2ecf20Sopenharmony_ci        reg = <0x01c0c000 0x1000>;
4638c2ecf20Sopenharmony_ci        interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
4648c2ecf20Sopenharmony_ci        dmas = <&dma 11>;
4658c2ecf20Sopenharmony_ci        resets = <&ccu RST_AHB1_LCD0>, <&ccu RST_AHB1_LVDS>;
4668c2ecf20Sopenharmony_ci        reset-names = "lcd", "lvds";
4678c2ecf20Sopenharmony_ci        clocks = <&ccu CLK_AHB1_LCD0>,
4688c2ecf20Sopenharmony_ci                 <&ccu CLK_LCD0_CH0>,
4698c2ecf20Sopenharmony_ci                 <&ccu CLK_LCD0_CH1>,
4708c2ecf20Sopenharmony_ci                 <&ccu CLK_PLL_MIPI>;
4718c2ecf20Sopenharmony_ci        clock-names = "ahb",
4728c2ecf20Sopenharmony_ci                      "tcon-ch0",
4738c2ecf20Sopenharmony_ci                      "tcon-ch1",
4748c2ecf20Sopenharmony_ci                      "lvds-alt";
4758c2ecf20Sopenharmony_ci        clock-output-names = "tcon0-pixel-clock";
4768c2ecf20Sopenharmony_ci        #clock-cells = <0>;
4778c2ecf20Sopenharmony_ci
4788c2ecf20Sopenharmony_ci        ports {
4798c2ecf20Sopenharmony_ci            #address-cells = <1>;
4808c2ecf20Sopenharmony_ci            #size-cells = <0>;
4818c2ecf20Sopenharmony_ci
4828c2ecf20Sopenharmony_ci            port@0 {
4838c2ecf20Sopenharmony_ci                #address-cells = <1>;
4848c2ecf20Sopenharmony_ci                #size-cells = <0>;
4858c2ecf20Sopenharmony_ci                reg = <0>;
4868c2ecf20Sopenharmony_ci
4878c2ecf20Sopenharmony_ci                endpoint@0 {
4888c2ecf20Sopenharmony_ci                    reg = <0>;
4898c2ecf20Sopenharmony_ci                    remote-endpoint = <&drc0_out_tcon0>;
4908c2ecf20Sopenharmony_ci                };
4918c2ecf20Sopenharmony_ci
4928c2ecf20Sopenharmony_ci                endpoint@1 {
4938c2ecf20Sopenharmony_ci                    reg = <1>;
4948c2ecf20Sopenharmony_ci                    remote-endpoint = <&drc1_out_tcon0>;
4958c2ecf20Sopenharmony_ci                };
4968c2ecf20Sopenharmony_ci            };
4978c2ecf20Sopenharmony_ci
4988c2ecf20Sopenharmony_ci            port@1 {
4998c2ecf20Sopenharmony_ci                #address-cells = <1>;
5008c2ecf20Sopenharmony_ci                #size-cells = <0>;
5018c2ecf20Sopenharmony_ci                reg = <1>;
5028c2ecf20Sopenharmony_ci
5038c2ecf20Sopenharmony_ci                endpoint@1 {
5048c2ecf20Sopenharmony_ci                    reg = <1>;
5058c2ecf20Sopenharmony_ci                    remote-endpoint = <&hdmi_in_tcon0>;
5068c2ecf20Sopenharmony_ci                    allwinner,tcon-channel = <1>;
5078c2ecf20Sopenharmony_ci                };
5088c2ecf20Sopenharmony_ci            };
5098c2ecf20Sopenharmony_ci        };
5108c2ecf20Sopenharmony_ci    };
5118c2ecf20Sopenharmony_ci
5128c2ecf20Sopenharmony_ci    #undef CLK_PLL_MIPI
5138c2ecf20Sopenharmony_ci    #undef CLK_AHB1_LCD0
5148c2ecf20Sopenharmony_ci    #undef CLK_LCD0_CH0
5158c2ecf20Sopenharmony_ci    #undef CLK_LCD0_CH1
5168c2ecf20Sopenharmony_ci    #undef RST_AHB1_LCD0
5178c2ecf20Sopenharmony_ci    #undef RST_AHB1_LVDS
5188c2ecf20Sopenharmony_ci
5198c2ecf20Sopenharmony_ci  - |
5208c2ecf20Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
5218c2ecf20Sopenharmony_ci
5228c2ecf20Sopenharmony_ci    /*
5238c2ecf20Sopenharmony_ci     * This comes from the clock/sun9i-a80-ccu.h and
5248c2ecf20Sopenharmony_ci     * reset/sun9i-a80-ccu.h headers, but we can't include them since
5258c2ecf20Sopenharmony_ci     * it would trigger a bunch of warnings for redefinitions of
5268c2ecf20Sopenharmony_ci     * symbols with the other example.
5278c2ecf20Sopenharmony_ci     */
5288c2ecf20Sopenharmony_ci
5298c2ecf20Sopenharmony_ci    #define CLK_BUS_LCD0	102
5308c2ecf20Sopenharmony_ci    #define CLK_LCD0		58
5318c2ecf20Sopenharmony_ci    #define RST_BUS_LCD0	22
5328c2ecf20Sopenharmony_ci    #define RST_BUS_EDP		24
5338c2ecf20Sopenharmony_ci    #define RST_BUS_LVDS	25
5348c2ecf20Sopenharmony_ci
5358c2ecf20Sopenharmony_ci    lcd-controller@3c00000 {
5368c2ecf20Sopenharmony_ci        compatible = "allwinner,sun9i-a80-tcon-lcd";
5378c2ecf20Sopenharmony_ci        reg = <0x03c00000 0x10000>;
5388c2ecf20Sopenharmony_ci        interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
5398c2ecf20Sopenharmony_ci        clocks = <&ccu CLK_BUS_LCD0>, <&ccu CLK_LCD0>;
5408c2ecf20Sopenharmony_ci        clock-names = "ahb", "tcon-ch0";
5418c2ecf20Sopenharmony_ci        resets = <&ccu RST_BUS_LCD0>, <&ccu RST_BUS_EDP>, <&ccu RST_BUS_LVDS>;
5428c2ecf20Sopenharmony_ci        reset-names = "lcd", "edp", "lvds";
5438c2ecf20Sopenharmony_ci        clock-output-names = "tcon0-pixel-clock";
5448c2ecf20Sopenharmony_ci        #clock-cells = <0>;
5458c2ecf20Sopenharmony_ci
5468c2ecf20Sopenharmony_ci        ports {
5478c2ecf20Sopenharmony_ci            #address-cells = <1>;
5488c2ecf20Sopenharmony_ci            #size-cells = <0>;
5498c2ecf20Sopenharmony_ci
5508c2ecf20Sopenharmony_ci            port@0 {
5518c2ecf20Sopenharmony_ci                reg = <0>;
5528c2ecf20Sopenharmony_ci
5538c2ecf20Sopenharmony_ci                endpoint {
5548c2ecf20Sopenharmony_ci                    remote-endpoint = <&drc0_out_tcon0>;
5558c2ecf20Sopenharmony_ci                };
5568c2ecf20Sopenharmony_ci            };
5578c2ecf20Sopenharmony_ci
5588c2ecf20Sopenharmony_ci            port@1 {
5598c2ecf20Sopenharmony_ci                reg = <1>;
5608c2ecf20Sopenharmony_ci            };
5618c2ecf20Sopenharmony_ci        };
5628c2ecf20Sopenharmony_ci    };
5638c2ecf20Sopenharmony_ci
5648c2ecf20Sopenharmony_ci    #undef CLK_BUS_TCON0
5658c2ecf20Sopenharmony_ci    #undef CLK_TCON0
5668c2ecf20Sopenharmony_ci    #undef RST_BUS_TCON0
5678c2ecf20Sopenharmony_ci    #undef RST_BUS_EDP
5688c2ecf20Sopenharmony_ci    #undef RST_BUS_LVDS
5698c2ecf20Sopenharmony_ci
5708c2ecf20Sopenharmony_ci  - |
5718c2ecf20Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
5728c2ecf20Sopenharmony_ci
5738c2ecf20Sopenharmony_ci    /*
5748c2ecf20Sopenharmony_ci     * This comes from the clock/sun8i-a83t-ccu.h and
5758c2ecf20Sopenharmony_ci     * reset/sun8i-a83t-ccu.h headers, but we can't include them since
5768c2ecf20Sopenharmony_ci     * it would trigger a bunch of warnings for redefinitions of
5778c2ecf20Sopenharmony_ci     * symbols with the other example.
5788c2ecf20Sopenharmony_ci     */
5798c2ecf20Sopenharmony_ci
5808c2ecf20Sopenharmony_ci    #define CLK_BUS_TCON0	36
5818c2ecf20Sopenharmony_ci    #define CLK_TCON0		85
5828c2ecf20Sopenharmony_ci    #define RST_BUS_TCON0	22
5838c2ecf20Sopenharmony_ci    #define RST_BUS_LVDS	31
5848c2ecf20Sopenharmony_ci
5858c2ecf20Sopenharmony_ci    lcd-controller@1c0c000 {
5868c2ecf20Sopenharmony_ci        compatible = "allwinner,sun8i-a83t-tcon-lcd";
5878c2ecf20Sopenharmony_ci        reg = <0x01c0c000 0x1000>;
5888c2ecf20Sopenharmony_ci        interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
5898c2ecf20Sopenharmony_ci        clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>;
5908c2ecf20Sopenharmony_ci        clock-names = "ahb", "tcon-ch0";
5918c2ecf20Sopenharmony_ci        clock-output-names = "tcon-pixel-clock";
5928c2ecf20Sopenharmony_ci        #clock-cells = <0>;
5938c2ecf20Sopenharmony_ci        resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>;
5948c2ecf20Sopenharmony_ci        reset-names = "lcd", "lvds";
5958c2ecf20Sopenharmony_ci
5968c2ecf20Sopenharmony_ci        ports {
5978c2ecf20Sopenharmony_ci            #address-cells = <1>;
5988c2ecf20Sopenharmony_ci            #size-cells = <0>;
5998c2ecf20Sopenharmony_ci
6008c2ecf20Sopenharmony_ci            port@0 {
6018c2ecf20Sopenharmony_ci                #address-cells = <1>;
6028c2ecf20Sopenharmony_ci                #size-cells = <0>;
6038c2ecf20Sopenharmony_ci                reg = <0>;
6048c2ecf20Sopenharmony_ci
6058c2ecf20Sopenharmony_ci                endpoint@0 {
6068c2ecf20Sopenharmony_ci                    reg = <0>;
6078c2ecf20Sopenharmony_ci                    remote-endpoint = <&mixer0_out_tcon0>;
6088c2ecf20Sopenharmony_ci                };
6098c2ecf20Sopenharmony_ci
6108c2ecf20Sopenharmony_ci                endpoint@1 {
6118c2ecf20Sopenharmony_ci                    reg = <1>;
6128c2ecf20Sopenharmony_ci                    remote-endpoint = <&mixer1_out_tcon0>;
6138c2ecf20Sopenharmony_ci                };
6148c2ecf20Sopenharmony_ci            };
6158c2ecf20Sopenharmony_ci
6168c2ecf20Sopenharmony_ci            port@1 {
6178c2ecf20Sopenharmony_ci                reg = <1>;
6188c2ecf20Sopenharmony_ci            };
6198c2ecf20Sopenharmony_ci        };
6208c2ecf20Sopenharmony_ci    };
6218c2ecf20Sopenharmony_ci
6228c2ecf20Sopenharmony_ci    #undef CLK_BUS_TCON0
6238c2ecf20Sopenharmony_ci    #undef CLK_TCON0
6248c2ecf20Sopenharmony_ci    #undef RST_BUS_TCON0
6258c2ecf20Sopenharmony_ci    #undef RST_BUS_LVDS
6268c2ecf20Sopenharmony_ci
6278c2ecf20Sopenharmony_ci  - |
6288c2ecf20Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
6298c2ecf20Sopenharmony_ci
6308c2ecf20Sopenharmony_ci    /*
6318c2ecf20Sopenharmony_ci     * This comes from the clock/sun8i-r40-ccu.h and
6328c2ecf20Sopenharmony_ci     * reset/sun8i-r40-ccu.h headers, but we can't include them since
6338c2ecf20Sopenharmony_ci     * it would trigger a bunch of warnings for redefinitions of
6348c2ecf20Sopenharmony_ci     * symbols with the other example.
6358c2ecf20Sopenharmony_ci     */
6368c2ecf20Sopenharmony_ci
6378c2ecf20Sopenharmony_ci    #define CLK_BUS_TCON_TV0	73
6388c2ecf20Sopenharmony_ci    #define RST_BUS_TCON_TV0	49
6398c2ecf20Sopenharmony_ci
6408c2ecf20Sopenharmony_ci    tcon_tv0: lcd-controller@1c73000 {
6418c2ecf20Sopenharmony_ci        compatible = "allwinner,sun8i-r40-tcon-tv";
6428c2ecf20Sopenharmony_ci        reg = <0x01c73000 0x1000>;
6438c2ecf20Sopenharmony_ci        interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
6448c2ecf20Sopenharmony_ci        clocks = <&ccu CLK_BUS_TCON_TV0>, <&tcon_top 0>;
6458c2ecf20Sopenharmony_ci        clock-names = "ahb", "tcon-ch1";
6468c2ecf20Sopenharmony_ci        resets = <&ccu RST_BUS_TCON_TV0>;
6478c2ecf20Sopenharmony_ci        reset-names = "lcd";
6488c2ecf20Sopenharmony_ci
6498c2ecf20Sopenharmony_ci        ports {
6508c2ecf20Sopenharmony_ci            #address-cells = <1>;
6518c2ecf20Sopenharmony_ci            #size-cells = <0>;
6528c2ecf20Sopenharmony_ci
6538c2ecf20Sopenharmony_ci            port@0 {
6548c2ecf20Sopenharmony_ci                #address-cells = <1>;
6558c2ecf20Sopenharmony_ci                #size-cells = <0>;
6568c2ecf20Sopenharmony_ci                reg = <0>;
6578c2ecf20Sopenharmony_ci
6588c2ecf20Sopenharmony_ci                endpoint@0 {
6598c2ecf20Sopenharmony_ci                    reg = <0>;
6608c2ecf20Sopenharmony_ci                    remote-endpoint = <&tcon_top_mixer0_out_tcon_tv0>;
6618c2ecf20Sopenharmony_ci                };
6628c2ecf20Sopenharmony_ci
6638c2ecf20Sopenharmony_ci                endpoint@1 {
6648c2ecf20Sopenharmony_ci                    reg = <1>;
6658c2ecf20Sopenharmony_ci                    remote-endpoint = <&tcon_top_mixer1_out_tcon_tv0>;
6668c2ecf20Sopenharmony_ci                };
6678c2ecf20Sopenharmony_ci            };
6688c2ecf20Sopenharmony_ci
6698c2ecf20Sopenharmony_ci            tcon_tv0_out: port@1 {
6708c2ecf20Sopenharmony_ci                #address-cells = <1>;
6718c2ecf20Sopenharmony_ci                #size-cells = <0>;
6728c2ecf20Sopenharmony_ci                reg = <1>;
6738c2ecf20Sopenharmony_ci
6748c2ecf20Sopenharmony_ci                endpoint@1 {
6758c2ecf20Sopenharmony_ci                    reg = <1>;
6768c2ecf20Sopenharmony_ci                    remote-endpoint = <&tcon_top_hdmi_in_tcon_tv0>;
6778c2ecf20Sopenharmony_ci                };
6788c2ecf20Sopenharmony_ci            };
6798c2ecf20Sopenharmony_ci        };
6808c2ecf20Sopenharmony_ci    };
6818c2ecf20Sopenharmony_ci
6828c2ecf20Sopenharmony_ci    #undef CLK_BUS_TCON_TV0
6838c2ecf20Sopenharmony_ci    #undef RST_BUS_TCON_TV0
6848c2ecf20Sopenharmony_ci
6858c2ecf20Sopenharmony_ci...
686