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