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