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