GNU Linux-libre 6.1.90-gnu
[releases.git] / Documentation / devicetree / bindings / mfd / allwinner,sun8i-a23-prcm.yaml
1 # SPDX-License-Identifier: GPL-2.0+
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/mfd/allwinner,sun8i-a23-prcm.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Allwinner A23 PRCM
8
9 maintainers:
10   - Chen-Yu Tsai <wens@csie.org>
11   - Maxime Ripard <mripard@kernel.org>
12
13 deprecated: true
14
15 properties:
16   compatible:
17     const: allwinner,sun8i-a23-prcm
18
19   reg:
20     maxItems: 1
21
22 patternProperties:
23   "^.*(clk|rst|codec).*$":
24     type: object
25     unevaluatedProperties: false
26
27     properties:
28       compatible:
29         enum:
30           - fixed-factor-clock
31           - allwinner,sun8i-a23-apb0-clk
32           - allwinner,sun8i-a23-apb0-gates-clk
33           - allwinner,sun6i-a31-clock-reset
34           - allwinner,sun8i-a23-codec-analog
35
36     required:
37       - compatible
38
39     allOf:
40       - if:
41           properties:
42             compatible:
43               contains:
44                 const: fixed-factor-clock
45
46         then:
47           $ref: /schemas/clock/fixed-factor-clock.yaml#
48
49       - if:
50           properties:
51             compatible:
52               contains:
53                 const: allwinner,sun8i-a23-apb0-clk
54
55         then:
56           properties:
57             "#clock-cells":
58               const: 0
59
60             # Already checked in the main schema
61             compatible: true
62
63             clocks:
64               maxItems: 1
65
66             clock-output-names:
67               maxItems: 1
68
69             phandle: true
70
71           required:
72             - "#clock-cells"
73             - compatible
74             - clocks
75             - clock-output-names
76
77           additionalProperties: false
78
79       - if:
80           properties:
81             compatible:
82               contains:
83                 const: allwinner,sun8i-a23-apb0-gates-clk
84
85         then:
86           properties:
87             "#clock-cells":
88               const: 1
89               description: >
90                 This additional argument passed to that clock is the
91                 offset of the bit controlling this particular gate in
92                 the register.
93
94             # Already checked in the main schema
95             compatible: true
96
97             clocks:
98               maxItems: 1
99
100             clock-output-names:
101               minItems: 1
102               maxItems: 32
103
104             phandle: true
105
106           required:
107             - "#clock-cells"
108             - compatible
109             - clocks
110             - clock-output-names
111
112           additionalProperties: false
113
114       - if:
115           properties:
116             compatible:
117               contains:
118                 const: allwinner,sun6i-a31-clock-reset
119
120         then:
121           properties:
122             "#reset-cells":
123               const: 1
124
125             # Already checked in the main schema
126             compatible: true
127
128             phandle: true
129
130           required:
131             - "#reset-cells"
132             - compatible
133
134           additionalProperties: false
135
136       - if:
137           properties:
138             compatible:
139               contains:
140                 const: allwinner,sun8i-a23-codec-analog
141
142         then:
143           properties:
144             # Already checked in the main schema
145             compatible: true
146
147             phandle: true
148
149           required:
150             - compatible
151
152           additionalProperties: false
153
154 required:
155   - compatible
156   - reg
157
158 additionalProperties: false
159
160 examples:
161   - |
162     prcm@1f01400 {
163         compatible = "allwinner,sun8i-a23-prcm";
164         reg = <0x01f01400 0x200>;
165
166         ar100: ar100_clk {
167             compatible = "fixed-factor-clock";
168             #clock-cells = <0>;
169             clock-div = <1>;
170             clock-mult = <1>;
171             clocks = <&osc24M>;
172             clock-output-names = "ar100";
173         };
174
175         ahb0: ahb0_clk {
176             compatible = "fixed-factor-clock";
177             #clock-cells = <0>;
178             clock-div = <1>;
179             clock-mult = <1>;
180             clocks = <&ar100>;
181             clock-output-names = "ahb0";
182         };
183
184         apb0: apb0_clk {
185             compatible = "allwinner,sun8i-a23-apb0-clk";
186             #clock-cells = <0>;
187             clocks = <&ahb0>;
188             clock-output-names = "apb0";
189         };
190
191         apb0_gates: apb0_gates_clk {
192             compatible = "allwinner,sun8i-a23-apb0-gates-clk";
193             #clock-cells = <1>;
194             clocks = <&apb0>;
195             clock-output-names = "apb0_pio", "apb0_timer",
196                                  "apb0_rsb", "apb0_uart",
197                                  "apb0_i2c";
198         };
199
200         apb0_rst: apb0_rst {
201             compatible = "allwinner,sun6i-a31-clock-reset";
202             #reset-cells = <1>;
203         };
204
205         codec_analog: codec-analog {
206             compatible = "allwinner,sun8i-a23-codec-analog";
207         };
208     };
209
210 ...