1# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/display/allwinner,sun6i-a31-drc.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Allwinner A31 Dynamic Range Controller Device Tree Bindings
8
9maintainers:
10  - Chen-Yu Tsai <wens@csie.org>
11  - Maxime Ripard <mripard@kernel.org>
12
13description: |
14  The DRC (Dynamic Range Controller) allows to dynamically adjust
15  pixel brightness/contrast based on histogram measurements for LCD
16  content adaptive backlight control.
17
18properties:
19  compatible:
20    enum:
21      - allwinner,sun6i-a31-drc
22      - allwinner,sun6i-a31s-drc
23      - allwinner,sun8i-a23-drc
24      - allwinner,sun8i-a33-drc
25      - allwinner,sun9i-a80-drc
26
27  reg:
28    maxItems: 1
29
30  interrupts:
31    maxItems: 1
32
33  clocks:
34    items:
35      - description: The DRC interface clock
36      - description: The DRC module clock
37      - description: The DRC DRAM clock
38
39  clock-names:
40    items:
41      - const: ahb
42      - const: mod
43      - const: ram
44
45  resets:
46    maxItems: 1
47
48  ports:
49    $ref: /schemas/graph.yaml#/properties/ports
50
51    properties:
52      port@0:
53        $ref: /schemas/graph.yaml#/properties/port
54        description: |
55          Input endpoints of the controller.
56
57      port@1:
58        $ref: /schemas/graph.yaml#/properties/port
59        description: |
60          Output endpoints of the controller.
61
62    required:
63      - port@0
64      - port@1
65
66required:
67  - compatible
68  - reg
69  - interrupts
70  - clocks
71  - clock-names
72  - resets
73  - ports
74
75additionalProperties: false
76
77examples:
78  - |
79    #include <dt-bindings/interrupt-controller/arm-gic.h>
80
81    #include <dt-bindings/clock/sun6i-a31-ccu.h>
82    #include <dt-bindings/reset/sun6i-a31-ccu.h>
83
84    drc0: drc@1e70000 {
85        compatible = "allwinner,sun6i-a31-drc";
86        reg = <0x01e70000 0x10000>;
87        interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
88        clocks = <&ccu CLK_AHB1_DRC0>, <&ccu CLK_IEP_DRC0>,
89                 <&ccu CLK_DRAM_DRC0>;
90        clock-names = "ahb", "mod",
91                      "ram";
92        resets = <&ccu RST_AHB1_DRC0>;
93
94        ports {
95            #address-cells = <1>;
96            #size-cells = <0>;
97
98            drc0_in: port@0 {
99                reg = <0>;
100
101                drc0_in_be0: endpoint {
102                    remote-endpoint = <&be0_out_drc0>;
103                };
104            };
105
106            drc0_out: port@1 {
107                #address-cells = <1>;
108                #size-cells = <0>;
109                reg = <1>;
110
111                drc0_out_tcon0: endpoint@0 {
112                    reg = <0>;
113                    remote-endpoint = <&tcon0_in_drc0>;
114                };
115
116                drc0_out_tcon1: endpoint@1 {
117                    reg = <1>;
118                    remote-endpoint = <&tcon1_in_drc0>;
119                };
120            };
121        };
122    };
123
124
125...
126