xref: /freebsd/sys/contrib/device-tree/Bindings/opp/opp-v2.yaml (revision 8bab661a3316d8bd9b9fbd11a3b4371b91507bd2)
1354d7675SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2354d7675SEmmanuel Vadot%YAML 1.2
3354d7675SEmmanuel Vadot---
4354d7675SEmmanuel Vadot$id: http://devicetree.org/schemas/opp/opp-v2.yaml#
5354d7675SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6354d7675SEmmanuel Vadot
7*8bab661aSEmmanuel Vadottitle: Generic OPP (Operating Performance Points)
8354d7675SEmmanuel Vadot
9354d7675SEmmanuel Vadotmaintainers:
10354d7675SEmmanuel Vadot  - Viresh Kumar <viresh.kumar@linaro.org>
11354d7675SEmmanuel Vadot
12354d7675SEmmanuel VadotallOf:
13354d7675SEmmanuel Vadot  - $ref: opp-v2-base.yaml#
14354d7675SEmmanuel Vadot
15354d7675SEmmanuel Vadotproperties:
16354d7675SEmmanuel Vadot  compatible:
17354d7675SEmmanuel Vadot    const: operating-points-v2
18354d7675SEmmanuel Vadot
19354d7675SEmmanuel VadotunevaluatedProperties: false
20354d7675SEmmanuel Vadot
21354d7675SEmmanuel Vadotexamples:
22354d7675SEmmanuel Vadot  - |
23354d7675SEmmanuel Vadot    /*
24354d7675SEmmanuel Vadot     * Example 1: Single cluster Dual-core ARM cortex A9, switch DVFS states
25354d7675SEmmanuel Vadot     * together.
26354d7675SEmmanuel Vadot     */
27354d7675SEmmanuel Vadot    cpus {
28354d7675SEmmanuel Vadot        #address-cells = <1>;
29354d7675SEmmanuel Vadot        #size-cells = <0>;
30354d7675SEmmanuel Vadot
31354d7675SEmmanuel Vadot        cpu@0 {
32354d7675SEmmanuel Vadot            compatible = "arm,cortex-a9";
33354d7675SEmmanuel Vadot            device_type = "cpu";
34354d7675SEmmanuel Vadot            reg = <0>;
35354d7675SEmmanuel Vadot            next-level-cache = <&L2>;
36354d7675SEmmanuel Vadot            clocks = <&clk_controller 0>;
37354d7675SEmmanuel Vadot            clock-names = "cpu";
38354d7675SEmmanuel Vadot            cpu-supply = <&cpu_supply0>;
39354d7675SEmmanuel Vadot            operating-points-v2 = <&cpu0_opp_table0>;
40354d7675SEmmanuel Vadot        };
41354d7675SEmmanuel Vadot
42354d7675SEmmanuel Vadot        cpu@1 {
43354d7675SEmmanuel Vadot            compatible = "arm,cortex-a9";
44354d7675SEmmanuel Vadot            device_type = "cpu";
45354d7675SEmmanuel Vadot            reg = <1>;
46354d7675SEmmanuel Vadot            next-level-cache = <&L2>;
47354d7675SEmmanuel Vadot            clocks = <&clk_controller 0>;
48354d7675SEmmanuel Vadot            clock-names = "cpu";
49354d7675SEmmanuel Vadot            cpu-supply = <&cpu_supply0>;
50354d7675SEmmanuel Vadot            operating-points-v2 = <&cpu0_opp_table0>;
51354d7675SEmmanuel Vadot        };
52354d7675SEmmanuel Vadot    };
53354d7675SEmmanuel Vadot
54354d7675SEmmanuel Vadot    cpu0_opp_table0: opp-table {
55354d7675SEmmanuel Vadot        compatible = "operating-points-v2";
56354d7675SEmmanuel Vadot        opp-shared;
57354d7675SEmmanuel Vadot
58354d7675SEmmanuel Vadot        opp-1000000000 {
59354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <1000000000>;
60354d7675SEmmanuel Vadot            opp-microvolt = <975000 970000 985000>;
61354d7675SEmmanuel Vadot            opp-microamp = <70000>;
62354d7675SEmmanuel Vadot            clock-latency-ns = <300000>;
63354d7675SEmmanuel Vadot            opp-suspend;
64354d7675SEmmanuel Vadot        };
65354d7675SEmmanuel Vadot        opp-1100000000 {
66354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <1100000000>;
67354d7675SEmmanuel Vadot            opp-microvolt = <1000000 980000 1010000>;
68354d7675SEmmanuel Vadot            opp-microamp = <80000>;
69354d7675SEmmanuel Vadot            clock-latency-ns = <310000>;
70354d7675SEmmanuel Vadot        };
71354d7675SEmmanuel Vadot        opp-1200000000 {
72354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <1200000000>;
73354d7675SEmmanuel Vadot            opp-microvolt = <1025000>;
74354d7675SEmmanuel Vadot            clock-latency-ns = <290000>;
75354d7675SEmmanuel Vadot            turbo-mode;
76354d7675SEmmanuel Vadot        };
77354d7675SEmmanuel Vadot    };
78354d7675SEmmanuel Vadot
79354d7675SEmmanuel Vadot  - |
80354d7675SEmmanuel Vadot    /*
81354d7675SEmmanuel Vadot     * Example 2: Single cluster, Quad-core Qualcom-krait, switches DVFS states
82354d7675SEmmanuel Vadot     * independently.
83354d7675SEmmanuel Vadot     */
84354d7675SEmmanuel Vadot    cpus {
85354d7675SEmmanuel Vadot        #address-cells = <1>;
86354d7675SEmmanuel Vadot        #size-cells = <0>;
87354d7675SEmmanuel Vadot
88354d7675SEmmanuel Vadot        cpu@0 {
89354d7675SEmmanuel Vadot            compatible = "qcom,krait";
90354d7675SEmmanuel Vadot            device_type = "cpu";
91354d7675SEmmanuel Vadot            reg = <0>;
92354d7675SEmmanuel Vadot            next-level-cache = <&L2>;
93354d7675SEmmanuel Vadot            clocks = <&clk_controller 0>;
94354d7675SEmmanuel Vadot            clock-names = "cpu";
95354d7675SEmmanuel Vadot            cpu-supply = <&cpu_supply0>;
96354d7675SEmmanuel Vadot            operating-points-v2 = <&cpu_opp_table>;
97354d7675SEmmanuel Vadot        };
98354d7675SEmmanuel Vadot
99354d7675SEmmanuel Vadot        cpu@1 {
100354d7675SEmmanuel Vadot            compatible = "qcom,krait";
101354d7675SEmmanuel Vadot            device_type = "cpu";
102354d7675SEmmanuel Vadot            reg = <1>;
103354d7675SEmmanuel Vadot            next-level-cache = <&L2>;
104354d7675SEmmanuel Vadot            clocks = <&clk_controller 1>;
105354d7675SEmmanuel Vadot            clock-names = "cpu";
106354d7675SEmmanuel Vadot            cpu-supply = <&cpu_supply1>;
107354d7675SEmmanuel Vadot            operating-points-v2 = <&cpu_opp_table>;
108354d7675SEmmanuel Vadot        };
109354d7675SEmmanuel Vadot
110354d7675SEmmanuel Vadot        cpu@2 {
111354d7675SEmmanuel Vadot            compatible = "qcom,krait";
112354d7675SEmmanuel Vadot            device_type = "cpu";
113354d7675SEmmanuel Vadot            reg = <2>;
114354d7675SEmmanuel Vadot            next-level-cache = <&L2>;
115354d7675SEmmanuel Vadot            clocks = <&clk_controller 2>;
116354d7675SEmmanuel Vadot            clock-names = "cpu";
117354d7675SEmmanuel Vadot            cpu-supply = <&cpu_supply2>;
118354d7675SEmmanuel Vadot            operating-points-v2 = <&cpu_opp_table>;
119354d7675SEmmanuel Vadot        };
120354d7675SEmmanuel Vadot
121354d7675SEmmanuel Vadot        cpu@3 {
122354d7675SEmmanuel Vadot            compatible = "qcom,krait";
123354d7675SEmmanuel Vadot            device_type = "cpu";
124354d7675SEmmanuel Vadot            reg = <3>;
125354d7675SEmmanuel Vadot            next-level-cache = <&L2>;
126354d7675SEmmanuel Vadot            clocks = <&clk_controller 3>;
127354d7675SEmmanuel Vadot            clock-names = "cpu";
128354d7675SEmmanuel Vadot            cpu-supply = <&cpu_supply3>;
129354d7675SEmmanuel Vadot            operating-points-v2 = <&cpu_opp_table>;
130354d7675SEmmanuel Vadot        };
131354d7675SEmmanuel Vadot    };
132354d7675SEmmanuel Vadot
133354d7675SEmmanuel Vadot    cpu_opp_table: opp-table {
134354d7675SEmmanuel Vadot        compatible = "operating-points-v2";
135354d7675SEmmanuel Vadot
136354d7675SEmmanuel Vadot        /*
137354d7675SEmmanuel Vadot         * Missing opp-shared property means CPUs switch DVFS states
138354d7675SEmmanuel Vadot         * independently.
139354d7675SEmmanuel Vadot         */
140354d7675SEmmanuel Vadot
141354d7675SEmmanuel Vadot        opp-1000000000 {
142354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <1000000000>;
143354d7675SEmmanuel Vadot            opp-microvolt = <975000 970000 985000>;
144354d7675SEmmanuel Vadot            opp-microamp = <70000>;
145354d7675SEmmanuel Vadot            clock-latency-ns = <300000>;
146354d7675SEmmanuel Vadot            opp-suspend;
147354d7675SEmmanuel Vadot        };
148354d7675SEmmanuel Vadot        opp-1100000000 {
149354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <1100000000>;
150354d7675SEmmanuel Vadot            opp-microvolt = <1000000 980000 1010000>;
151354d7675SEmmanuel Vadot            opp-microamp = <80000>;
152354d7675SEmmanuel Vadot            clock-latency-ns = <310000>;
153354d7675SEmmanuel Vadot        };
154354d7675SEmmanuel Vadot        opp-1200000000 {
155354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <1200000000>;
156354d7675SEmmanuel Vadot            opp-microvolt = <1025000>;
157354d7675SEmmanuel Vadot            opp-microamp = <90000>;
158*8bab661aSEmmanuel Vadot            clock-latency-ns = <290000>;
159354d7675SEmmanuel Vadot            turbo-mode;
160354d7675SEmmanuel Vadot        };
161354d7675SEmmanuel Vadot    };
162354d7675SEmmanuel Vadot
163354d7675SEmmanuel Vadot  - |
164354d7675SEmmanuel Vadot    /*
165354d7675SEmmanuel Vadot     * Example 3: Dual-cluster, Dual-core per cluster. CPUs within a cluster switch
166354d7675SEmmanuel Vadot     * DVFS state together.
167354d7675SEmmanuel Vadot     */
168354d7675SEmmanuel Vadot    cpus {
169354d7675SEmmanuel Vadot        #address-cells = <1>;
170354d7675SEmmanuel Vadot        #size-cells = <0>;
171354d7675SEmmanuel Vadot
172354d7675SEmmanuel Vadot        cpu@0 {
173354d7675SEmmanuel Vadot            compatible = "arm,cortex-a7";
174354d7675SEmmanuel Vadot            device_type = "cpu";
175354d7675SEmmanuel Vadot            reg = <0>;
176354d7675SEmmanuel Vadot            next-level-cache = <&L2>;
177354d7675SEmmanuel Vadot            clocks = <&clk_controller 0>;
178354d7675SEmmanuel Vadot            clock-names = "cpu";
179354d7675SEmmanuel Vadot            cpu-supply = <&cpu_supply0>;
180354d7675SEmmanuel Vadot            operating-points-v2 = <&cluster0_opp>;
181354d7675SEmmanuel Vadot        };
182354d7675SEmmanuel Vadot
183354d7675SEmmanuel Vadot        cpu@1 {
184354d7675SEmmanuel Vadot            compatible = "arm,cortex-a7";
185354d7675SEmmanuel Vadot            device_type = "cpu";
186354d7675SEmmanuel Vadot            reg = <1>;
187354d7675SEmmanuel Vadot            next-level-cache = <&L2>;
188354d7675SEmmanuel Vadot            clocks = <&clk_controller 0>;
189354d7675SEmmanuel Vadot            clock-names = "cpu";
190354d7675SEmmanuel Vadot            cpu-supply = <&cpu_supply0>;
191354d7675SEmmanuel Vadot            operating-points-v2 = <&cluster0_opp>;
192354d7675SEmmanuel Vadot        };
193354d7675SEmmanuel Vadot
194354d7675SEmmanuel Vadot        cpu@100 {
195354d7675SEmmanuel Vadot            compatible = "arm,cortex-a15";
196354d7675SEmmanuel Vadot            device_type = "cpu";
197354d7675SEmmanuel Vadot            reg = <100>;
198354d7675SEmmanuel Vadot            next-level-cache = <&L2>;
199354d7675SEmmanuel Vadot            clocks = <&clk_controller 1>;
200354d7675SEmmanuel Vadot            clock-names = "cpu";
201354d7675SEmmanuel Vadot            cpu-supply = <&cpu_supply1>;
202354d7675SEmmanuel Vadot            operating-points-v2 = <&cluster1_opp>;
203354d7675SEmmanuel Vadot        };
204354d7675SEmmanuel Vadot
205354d7675SEmmanuel Vadot        cpu@101 {
206354d7675SEmmanuel Vadot            compatible = "arm,cortex-a15";
207354d7675SEmmanuel Vadot            device_type = "cpu";
208354d7675SEmmanuel Vadot            reg = <101>;
209354d7675SEmmanuel Vadot            next-level-cache = <&L2>;
210354d7675SEmmanuel Vadot            clocks = <&clk_controller 1>;
211354d7675SEmmanuel Vadot            clock-names = "cpu";
212354d7675SEmmanuel Vadot            cpu-supply = <&cpu_supply1>;
213354d7675SEmmanuel Vadot            operating-points-v2 = <&cluster1_opp>;
214354d7675SEmmanuel Vadot        };
215354d7675SEmmanuel Vadot    };
216354d7675SEmmanuel Vadot
217354d7675SEmmanuel Vadot    cluster0_opp: opp-table-0 {
218354d7675SEmmanuel Vadot        compatible = "operating-points-v2";
219354d7675SEmmanuel Vadot        opp-shared;
220354d7675SEmmanuel Vadot
221354d7675SEmmanuel Vadot        opp-1000000000 {
222354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <1000000000>;
223354d7675SEmmanuel Vadot            opp-microvolt = <975000 970000 985000>;
224354d7675SEmmanuel Vadot            opp-microamp = <70000>;
225354d7675SEmmanuel Vadot            clock-latency-ns = <300000>;
226354d7675SEmmanuel Vadot            opp-suspend;
227354d7675SEmmanuel Vadot        };
228354d7675SEmmanuel Vadot        opp-1100000000 {
229354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <1100000000>;
230354d7675SEmmanuel Vadot            opp-microvolt = <1000000 980000 1010000>;
231354d7675SEmmanuel Vadot            opp-microamp = <80000>;
232354d7675SEmmanuel Vadot            clock-latency-ns = <310000>;
233354d7675SEmmanuel Vadot        };
234354d7675SEmmanuel Vadot        opp-1200000000 {
235354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <1200000000>;
236354d7675SEmmanuel Vadot            opp-microvolt = <1025000>;
237354d7675SEmmanuel Vadot            opp-microamp = <90000>;
238354d7675SEmmanuel Vadot            clock-latency-ns = <290000>;
239354d7675SEmmanuel Vadot            turbo-mode;
240354d7675SEmmanuel Vadot        };
241354d7675SEmmanuel Vadot    };
242354d7675SEmmanuel Vadot
243354d7675SEmmanuel Vadot    cluster1_opp: opp-table-1 {
244354d7675SEmmanuel Vadot        compatible = "operating-points-v2";
245354d7675SEmmanuel Vadot        opp-shared;
246354d7675SEmmanuel Vadot
247354d7675SEmmanuel Vadot        opp-1300000000 {
248354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <1300000000>;
249354d7675SEmmanuel Vadot            opp-microvolt = <1050000 1045000 1055000>;
250354d7675SEmmanuel Vadot            opp-microamp = <95000>;
251354d7675SEmmanuel Vadot            clock-latency-ns = <400000>;
252354d7675SEmmanuel Vadot            opp-suspend;
253354d7675SEmmanuel Vadot        };
254354d7675SEmmanuel Vadot        opp-1400000000 {
255354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <1400000000>;
256354d7675SEmmanuel Vadot            opp-microvolt = <1075000>;
257354d7675SEmmanuel Vadot            opp-microamp = <100000>;
258354d7675SEmmanuel Vadot            clock-latency-ns = <400000>;
259354d7675SEmmanuel Vadot        };
260354d7675SEmmanuel Vadot        opp-1500000000 {
261354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <1500000000>;
262354d7675SEmmanuel Vadot            opp-microvolt = <1100000 1010000 1110000>;
263354d7675SEmmanuel Vadot            opp-microamp = <95000>;
264354d7675SEmmanuel Vadot            clock-latency-ns = <400000>;
265354d7675SEmmanuel Vadot            turbo-mode;
266354d7675SEmmanuel Vadot        };
267354d7675SEmmanuel Vadot    };
268354d7675SEmmanuel Vadot
269354d7675SEmmanuel Vadot  - |
270354d7675SEmmanuel Vadot    /* Example 4: Handling multiple regulators */
271354d7675SEmmanuel Vadot    cpus {
272354d7675SEmmanuel Vadot        #address-cells = <1>;
273354d7675SEmmanuel Vadot        #size-cells = <0>;
274354d7675SEmmanuel Vadot
275354d7675SEmmanuel Vadot        cpu@0 {
276354d7675SEmmanuel Vadot            compatible = "foo,cpu-type";
277354d7675SEmmanuel Vadot            device_type = "cpu";
278354d7675SEmmanuel Vadot            reg = <0>;
279354d7675SEmmanuel Vadot
280354d7675SEmmanuel Vadot            vcc0-supply = <&cpu_supply0>;
281354d7675SEmmanuel Vadot            vcc1-supply = <&cpu_supply1>;
282354d7675SEmmanuel Vadot            vcc2-supply = <&cpu_supply2>;
283354d7675SEmmanuel Vadot            operating-points-v2 = <&cpu0_opp_table4>;
284354d7675SEmmanuel Vadot        };
285354d7675SEmmanuel Vadot    };
286354d7675SEmmanuel Vadot
287354d7675SEmmanuel Vadot    cpu0_opp_table4: opp-table-0 {
288354d7675SEmmanuel Vadot        compatible = "operating-points-v2";
289354d7675SEmmanuel Vadot        opp-shared;
290354d7675SEmmanuel Vadot
291354d7675SEmmanuel Vadot        opp-1000000000 {
292354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <1000000000>;
293354d7675SEmmanuel Vadot            opp-microvolt = <970000>, /* Supply 0 */
294354d7675SEmmanuel Vadot                            <960000>, /* Supply 1 */
295354d7675SEmmanuel Vadot                            <960000>; /* Supply 2 */
296354d7675SEmmanuel Vadot            opp-microamp =  <70000>,  /* Supply 0 */
297354d7675SEmmanuel Vadot                            <70000>,  /* Supply 1 */
298354d7675SEmmanuel Vadot                            <70000>;  /* Supply 2 */
299354d7675SEmmanuel Vadot            clock-latency-ns = <300000>;
300354d7675SEmmanuel Vadot        };
301354d7675SEmmanuel Vadot
302354d7675SEmmanuel Vadot        /* OR */
303354d7675SEmmanuel Vadot
304354d7675SEmmanuel Vadot        opp-1000000001 {
305354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <1000000001>;
306354d7675SEmmanuel Vadot            opp-microvolt = <975000 970000 985000>, /* Supply 0 */
307354d7675SEmmanuel Vadot                            <965000 960000 975000>, /* Supply 1 */
308354d7675SEmmanuel Vadot                            <965000 960000 975000>; /* Supply 2 */
309354d7675SEmmanuel Vadot            opp-microamp =  <70000>,    /* Supply 0 */
310354d7675SEmmanuel Vadot                <70000>,    /* Supply 1 */
311354d7675SEmmanuel Vadot                <70000>;    /* Supply 2 */
312354d7675SEmmanuel Vadot            clock-latency-ns = <300000>;
313354d7675SEmmanuel Vadot        };
314354d7675SEmmanuel Vadot
315354d7675SEmmanuel Vadot        /* OR */
316354d7675SEmmanuel Vadot
317354d7675SEmmanuel Vadot        opp-1000000002 {
318354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <1000000002>;
319354d7675SEmmanuel Vadot            opp-microvolt = <975000 970000 985000>, /* Supply 0 */
320354d7675SEmmanuel Vadot                <965000 960000 975000>, /* Supply 1 */
321354d7675SEmmanuel Vadot                <965000 960000 975000>; /* Supply 2 */
322354d7675SEmmanuel Vadot            opp-microamp =  <70000>,    /* Supply 0 */
323354d7675SEmmanuel Vadot                <0>,      /* Supply 1 doesn't need this */
324354d7675SEmmanuel Vadot                <70000>;    /* Supply 2 */
325354d7675SEmmanuel Vadot            clock-latency-ns = <300000>;
326354d7675SEmmanuel Vadot        };
327354d7675SEmmanuel Vadot    };
328354d7675SEmmanuel Vadot
329354d7675SEmmanuel Vadot  - |
330354d7675SEmmanuel Vadot    /*
331354d7675SEmmanuel Vadot     * Example 5: opp-supported-hw
332354d7675SEmmanuel Vadot     * (example: three level hierarchy of versions: cuts, substrate and process)
333354d7675SEmmanuel Vadot     */
334354d7675SEmmanuel Vadot    cpus {
335354d7675SEmmanuel Vadot        #address-cells = <1>;
336354d7675SEmmanuel Vadot        #size-cells = <0>;
337354d7675SEmmanuel Vadot
338354d7675SEmmanuel Vadot        cpu@0 {
339354d7675SEmmanuel Vadot            compatible = "arm,cortex-a7";
340354d7675SEmmanuel Vadot            device_type = "cpu";
341354d7675SEmmanuel Vadot            reg = <0>;
342354d7675SEmmanuel Vadot            cpu-supply = <&cpu_supply>;
343354d7675SEmmanuel Vadot            operating-points-v2 = <&cpu0_opp_table_slow>;
344354d7675SEmmanuel Vadot        };
345354d7675SEmmanuel Vadot    };
346354d7675SEmmanuel Vadot
347354d7675SEmmanuel Vadot    cpu0_opp_table_slow: opp-table {
348354d7675SEmmanuel Vadot        compatible = "operating-points-v2";
349354d7675SEmmanuel Vadot        opp-shared;
350354d7675SEmmanuel Vadot
351354d7675SEmmanuel Vadot        opp-600000000 {
352354d7675SEmmanuel Vadot            /*
353354d7675SEmmanuel Vadot             * Supports all substrate and process versions for 0xF
354354d7675SEmmanuel Vadot             * cuts, i.e. only first four cuts.
355354d7675SEmmanuel Vadot             */
356354d7675SEmmanuel Vadot            opp-supported-hw = <0xF 0xFFFFFFFF 0xFFFFFFFF>;
357354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <600000000>;
358354d7675SEmmanuel Vadot        };
359354d7675SEmmanuel Vadot
360354d7675SEmmanuel Vadot        opp-800000000 {
361354d7675SEmmanuel Vadot            /*
362354d7675SEmmanuel Vadot             * Supports:
363354d7675SEmmanuel Vadot             * - cuts: only one, 6th cut (represented by 6th bit).
364354d7675SEmmanuel Vadot             * - substrate: supports 16 different substrate versions
365354d7675SEmmanuel Vadot             * - process: supports 9 different process versions
366354d7675SEmmanuel Vadot             */
367354d7675SEmmanuel Vadot            opp-supported-hw = <0x20 0xff0000ff 0x0000f4f0>;
368354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <800000000>;
369354d7675SEmmanuel Vadot        };
370354d7675SEmmanuel Vadot
371354d7675SEmmanuel Vadot        opp-900000000 {
372354d7675SEmmanuel Vadot            /*
373354d7675SEmmanuel Vadot             * Supports:
374354d7675SEmmanuel Vadot             * - All cuts and substrate where process version is 0x2.
375354d7675SEmmanuel Vadot             * - All cuts and process where substrate version is 0x2.
376354d7675SEmmanuel Vadot             */
377354d7675SEmmanuel Vadot            opp-supported-hw = <0xFFFFFFFF 0xFFFFFFFF 0x02>,
378354d7675SEmmanuel Vadot                               <0xFFFFFFFF 0x01 0xFFFFFFFF>;
379354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <900000000>;
380354d7675SEmmanuel Vadot        };
381354d7675SEmmanuel Vadot    };
382354d7675SEmmanuel Vadot
383354d7675SEmmanuel Vadot  - |
384354d7675SEmmanuel Vadot    /*
385354d7675SEmmanuel Vadot     * Example 6: opp-microvolt-<name>, opp-microamp-<name>:
386354d7675SEmmanuel Vadot     * (example: device with two possible microvolt ranges: slow and fast)
387354d7675SEmmanuel Vadot     */
388354d7675SEmmanuel Vadot    cpus {
389354d7675SEmmanuel Vadot        #address-cells = <1>;
390354d7675SEmmanuel Vadot        #size-cells = <0>;
391354d7675SEmmanuel Vadot
392354d7675SEmmanuel Vadot        cpu@0 {
393354d7675SEmmanuel Vadot            compatible = "arm,cortex-a7";
394354d7675SEmmanuel Vadot            device_type = "cpu";
395354d7675SEmmanuel Vadot            reg = <0>;
396354d7675SEmmanuel Vadot            operating-points-v2 = <&cpu0_opp_table6>;
397354d7675SEmmanuel Vadot        };
398354d7675SEmmanuel Vadot    };
399354d7675SEmmanuel Vadot
400354d7675SEmmanuel Vadot    cpu0_opp_table6: opp-table-0 {
401354d7675SEmmanuel Vadot        compatible = "operating-points-v2";
402354d7675SEmmanuel Vadot        opp-shared;
403354d7675SEmmanuel Vadot
404354d7675SEmmanuel Vadot        opp-1000000000 {
405354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <1000000000>;
406354d7675SEmmanuel Vadot            opp-microvolt-slow = <915000 900000 925000>;
407354d7675SEmmanuel Vadot            opp-microvolt-fast = <975000 970000 985000>;
408354d7675SEmmanuel Vadot            opp-microamp-slow =  <70000>;
409354d7675SEmmanuel Vadot            opp-microamp-fast =  <71000>;
410354d7675SEmmanuel Vadot        };
411354d7675SEmmanuel Vadot
412354d7675SEmmanuel Vadot        opp-1200000000 {
413354d7675SEmmanuel Vadot            opp-hz = /bits/ 64 <1200000000>;
414354d7675SEmmanuel Vadot            opp-microvolt-slow = <915000 900000 925000>, /* Supply vcc0 */
415354d7675SEmmanuel Vadot                                 <925000 910000 935000>; /* Supply vcc1 */
416354d7675SEmmanuel Vadot            opp-microvolt-fast = <975000 970000 985000>, /* Supply vcc0 */
417354d7675SEmmanuel Vadot                                 <965000 960000 975000>; /* Supply vcc1 */
418354d7675SEmmanuel Vadot            opp-microamp =  <70000>; /* Will be used for both slow/fast */
419354d7675SEmmanuel Vadot        };
420354d7675SEmmanuel Vadot    };
421354d7675SEmmanuel Vadot
422354d7675SEmmanuel Vadot  - |
423354d7675SEmmanuel Vadot    /*
424354d7675SEmmanuel Vadot     * Example 7: Single cluster Quad-core ARM cortex A53, OPP points from firmware,
425354d7675SEmmanuel Vadot     * distinct clock controls but two sets of clock/voltage/current lines.
426354d7675SEmmanuel Vadot     */
427354d7675SEmmanuel Vadot    cpus {
428354d7675SEmmanuel Vadot        #address-cells = <2>;
429354d7675SEmmanuel Vadot        #size-cells = <0>;
430354d7675SEmmanuel Vadot
431354d7675SEmmanuel Vadot        cpu@0 {
432354d7675SEmmanuel Vadot            compatible = "arm,cortex-a53";
433354d7675SEmmanuel Vadot            device_type = "cpu";
434354d7675SEmmanuel Vadot            reg = <0x0 0x100>;
435354d7675SEmmanuel Vadot            next-level-cache = <&A53_L2>;
436354d7675SEmmanuel Vadot            clocks = <&dvfs_controller 0>;
437354d7675SEmmanuel Vadot            operating-points-v2 = <&cpu_opp0_table>;
438354d7675SEmmanuel Vadot        };
439354d7675SEmmanuel Vadot        cpu@1 {
440354d7675SEmmanuel Vadot            compatible = "arm,cortex-a53";
441354d7675SEmmanuel Vadot            device_type = "cpu";
442354d7675SEmmanuel Vadot            reg = <0x0 0x101>;
443354d7675SEmmanuel Vadot            next-level-cache = <&A53_L2>;
444354d7675SEmmanuel Vadot            clocks = <&dvfs_controller 1>;
445354d7675SEmmanuel Vadot            operating-points-v2 = <&cpu_opp0_table>;
446354d7675SEmmanuel Vadot        };
447354d7675SEmmanuel Vadot        cpu@2 {
448354d7675SEmmanuel Vadot            compatible = "arm,cortex-a53";
449354d7675SEmmanuel Vadot            device_type = "cpu";
450354d7675SEmmanuel Vadot            reg = <0x0 0x102>;
451354d7675SEmmanuel Vadot            next-level-cache = <&A53_L2>;
452354d7675SEmmanuel Vadot            clocks = <&dvfs_controller 2>;
453354d7675SEmmanuel Vadot            operating-points-v2 = <&cpu_opp1_table>;
454354d7675SEmmanuel Vadot        };
455354d7675SEmmanuel Vadot        cpu@3 {
456354d7675SEmmanuel Vadot            compatible = "arm,cortex-a53";
457354d7675SEmmanuel Vadot            device_type = "cpu";
458354d7675SEmmanuel Vadot            reg = <0x0 0x103>;
459354d7675SEmmanuel Vadot            next-level-cache = <&A53_L2>;
460354d7675SEmmanuel Vadot            clocks = <&dvfs_controller 3>;
461354d7675SEmmanuel Vadot            operating-points-v2 = <&cpu_opp1_table>;
462354d7675SEmmanuel Vadot        };
463354d7675SEmmanuel Vadot
464354d7675SEmmanuel Vadot    };
465354d7675SEmmanuel Vadot
466354d7675SEmmanuel Vadot    cpu_opp0_table: opp-table-0 {
467354d7675SEmmanuel Vadot        compatible = "operating-points-v2";
468354d7675SEmmanuel Vadot        opp-shared;
469354d7675SEmmanuel Vadot    };
470354d7675SEmmanuel Vadot
471354d7675SEmmanuel Vadot    cpu_opp1_table: opp-table-1 {
472354d7675SEmmanuel Vadot        compatible = "operating-points-v2";
473354d7675SEmmanuel Vadot        opp-shared;
474354d7675SEmmanuel Vadot    };
475354d7675SEmmanuel Vadot...
476