1 Qualcomm Technologies, Inc. NVMEM CPUFreq and OPP bindings
2 ===================================
4 In Certain Qualcomm Technologies, Inc. SoCs like apq8096 and msm8996,
5 the CPU frequencies subset and voltage value of each OPP varies based on
6 the silicon variant in use.
7 Qualcomm Technologies, Inc. Process Voltage Scaling Tables
8 defines the voltage and frequency value based on the msm-id in SMEM
9 and speedbin blown in the efuse combination.
10 The qcom-cpufreq-nvmem driver reads the msm-id and efuse value from the SoC
11 to provide the OPP framework with required information (existing HW bitmap).
12 This is used to determine the voltage and frequency value for each OPP of
13 operating-points-v2 table when it is parsed by the OPP framework.
18 - operating-points-v2: Phandle to the operating-points-v2 table to use.
20 In 'operating-points-v2' table:
21 - compatible: Should be
22 - 'operating-points-v2-kryo-cpu' for apq8096, msm8996, msm8974,
23 apq8064, ipq8064, msm8960 and ipq8074.
28 - power-domains: A phandle pointing to the PM domain specifier which provides
29 the performance states available for active state management.
30 Please refer to the power-domains bindings
31 Documentation/devicetree/bindings/power/power_domain.txt
32 and also examples below.
33 - power-domain-names: Should be
36 In 'operating-points-v2' table:
37 - nvmem-cells: A phandle pointing to a nvmem-cells node representing the
38 efuse registers that has information about the
39 speedbin that is used to select the right frequency/voltage
41 Please refer the for nvmem-cells
42 bindings Documentation/devicetree/bindings/nvmem/nvmem.txt
43 and also examples below.
46 - opp-supported-hw: A single 32 bit bitmap value, representing compatible HW.
48 0: MSM8996 V3, speedbin 0
49 1: MSM8996 V3, speedbin 1
50 2: MSM8996 V3, speedbin 2
52 4: MSM8996 SG, speedbin 0
53 5: MSM8996 SG, speedbin 1
54 6: MSM8996 SG, speedbin 2
66 compatible = "qcom,kryo";
68 enable-method = "psci";
70 cpu-supply = <&pm8994_s11_saw>;
71 operating-points-v2 = <&cluster0_opp>;
73 next-level-cache = <&L2_0>;
82 compatible = "qcom,kryo";
84 enable-method = "psci";
86 cpu-supply = <&pm8994_s11_saw>;
87 operating-points-v2 = <&cluster0_opp>;
89 next-level-cache = <&L2_0>;
94 compatible = "qcom,kryo";
96 enable-method = "psci";
98 cpu-supply = <&pm8994_s11_saw>;
99 operating-points-v2 = <&cluster1_opp>;
100 #cooling-cells = <2>;
101 next-level-cache = <&L2_1>;
103 compatible = "cache";
110 compatible = "qcom,kryo";
112 enable-method = "psci";
113 clocks = <&kryocc 1>;
114 cpu-supply = <&pm8994_s11_saw>;
115 operating-points-v2 = <&cluster1_opp>;
116 #cooling-cells = <2>;
117 next-level-cache = <&L2_1>;
143 cluster0_opp: opp_table0 {
144 compatible = "operating-points-v2-kryo-cpu";
145 nvmem-cells = <&speedbin_efuse>;
149 opp-hz = /bits/ 64 <307200000>;
150 opp-microvolt = <905000 905000 1140000>;
151 opp-supported-hw = <0x77>;
152 clock-latency-ns = <200000>;
155 opp-hz = /bits/ 64 <384000000>;
156 opp-microvolt = <905000 905000 1140000>;
157 opp-supported-hw = <0x70>;
158 clock-latency-ns = <200000>;
161 opp-hz = /bits/ 64 <422400000>;
162 opp-microvolt = <905000 905000 1140000>;
163 opp-supported-hw = <0x7>;
164 clock-latency-ns = <200000>;
167 opp-hz = /bits/ 64 <460800000>;
168 opp-microvolt = <905000 905000 1140000>;
169 opp-supported-hw = <0x70>;
170 clock-latency-ns = <200000>;
173 opp-hz = /bits/ 64 <480000000>;
174 opp-microvolt = <905000 905000 1140000>;
175 opp-supported-hw = <0x7>;
176 clock-latency-ns = <200000>;
179 opp-hz = /bits/ 64 <537600000>;
180 opp-microvolt = <905000 905000 1140000>;
181 opp-supported-hw = <0x70>;
182 clock-latency-ns = <200000>;
185 opp-hz = /bits/ 64 <556800000>;
186 opp-microvolt = <905000 905000 1140000>;
187 opp-supported-hw = <0x7>;
188 clock-latency-ns = <200000>;
191 opp-hz = /bits/ 64 <614400000>;
192 opp-microvolt = <905000 905000 1140000>;
193 opp-supported-hw = <0x70>;
194 clock-latency-ns = <200000>;
197 opp-hz = /bits/ 64 <652800000>;
198 opp-microvolt = <905000 905000 1140000>;
199 opp-supported-hw = <0x7>;
200 clock-latency-ns = <200000>;
203 opp-hz = /bits/ 64 <691200000>;
204 opp-microvolt = <905000 905000 1140000>;
205 opp-supported-hw = <0x70>;
206 clock-latency-ns = <200000>;
209 opp-hz = /bits/ 64 <729600000>;
210 opp-microvolt = <905000 905000 1140000>;
211 opp-supported-hw = <0x7>;
212 clock-latency-ns = <200000>;
215 opp-hz = /bits/ 64 <768000000>;
216 opp-microvolt = <905000 905000 1140000>;
217 opp-supported-hw = <0x70>;
218 clock-latency-ns = <200000>;
221 opp-hz = /bits/ 64 <844800000>;
222 opp-microvolt = <905000 905000 1140000>;
223 opp-supported-hw = <0x77>;
224 clock-latency-ns = <200000>;
227 opp-hz = /bits/ 64 <902400000>;
228 opp-microvolt = <905000 905000 1140000>;
229 opp-supported-hw = <0x70>;
230 clock-latency-ns = <200000>;
233 opp-hz = /bits/ 64 <960000000>;
234 opp-microvolt = <905000 905000 1140000>;
235 opp-supported-hw = <0x7>;
236 clock-latency-ns = <200000>;
239 opp-hz = /bits/ 64 <979200000>;
240 opp-microvolt = <905000 905000 1140000>;
241 opp-supported-hw = <0x70>;
242 clock-latency-ns = <200000>;
245 opp-hz = /bits/ 64 <1036800000>;
246 opp-microvolt = <905000 905000 1140000>;
247 opp-supported-hw = <0x7>;
248 clock-latency-ns = <200000>;
251 opp-hz = /bits/ 64 <1056000000>;
252 opp-microvolt = <905000 905000 1140000>;
253 opp-supported-hw = <0x70>;
254 clock-latency-ns = <200000>;
257 opp-hz = /bits/ 64 <1113600000>;
258 opp-microvolt = <905000 905000 1140000>;
259 opp-supported-hw = <0x7>;
260 clock-latency-ns = <200000>;
263 opp-hz = /bits/ 64 <1132800000>;
264 opp-microvolt = <905000 905000 1140000>;
265 opp-supported-hw = <0x70>;
266 clock-latency-ns = <200000>;
269 opp-hz = /bits/ 64 <1190400000>;
270 opp-microvolt = <905000 905000 1140000>;
271 opp-supported-hw = <0x7>;
272 clock-latency-ns = <200000>;
275 opp-hz = /bits/ 64 <1209600000>;
276 opp-microvolt = <905000 905000 1140000>;
277 opp-supported-hw = <0x70>;
278 clock-latency-ns = <200000>;
281 opp-hz = /bits/ 64 <1228800000>;
282 opp-microvolt = <905000 905000 1140000>;
283 opp-supported-hw = <0x7>;
284 clock-latency-ns = <200000>;
287 opp-hz = /bits/ 64 <1286400000>;
288 opp-microvolt = <1140000 905000 1140000>;
289 opp-supported-hw = <0x70>;
290 clock-latency-ns = <200000>;
293 opp-hz = /bits/ 64 <1324800000>;
294 opp-microvolt = <1140000 905000 1140000>;
295 opp-supported-hw = <0x5>;
296 clock-latency-ns = <200000>;
299 opp-hz = /bits/ 64 <1363200000>;
300 opp-microvolt = <1140000 905000 1140000>;
301 opp-supported-hw = <0x72>;
302 clock-latency-ns = <200000>;
305 opp-hz = /bits/ 64 <1401600000>;
306 opp-microvolt = <1140000 905000 1140000>;
307 opp-supported-hw = <0x5>;
308 clock-latency-ns = <200000>;
311 opp-hz = /bits/ 64 <1440000000>;
312 opp-microvolt = <1140000 905000 1140000>;
313 opp-supported-hw = <0x70>;
314 clock-latency-ns = <200000>;
317 opp-hz = /bits/ 64 <1478400000>;
318 opp-microvolt = <1140000 905000 1140000>;
319 opp-supported-hw = <0x1>;
320 clock-latency-ns = <200000>;
323 opp-hz = /bits/ 64 <1497600000>;
324 opp-microvolt = <1140000 905000 1140000>;
325 opp-supported-hw = <0x4>;
326 clock-latency-ns = <200000>;
329 opp-hz = /bits/ 64 <1516800000>;
330 opp-microvolt = <1140000 905000 1140000>;
331 opp-supported-hw = <0x70>;
332 clock-latency-ns = <200000>;
335 opp-hz = /bits/ 64 <1593600000>;
336 opp-microvolt = <1140000 905000 1140000>;
337 opp-supported-hw = <0x71>;
338 clock-latency-ns = <200000>;
341 opp-hz = /bits/ 64 <1996800000>;
342 opp-microvolt = <1140000 905000 1140000>;
343 opp-supported-hw = <0x20>;
344 clock-latency-ns = <200000>;
347 opp-hz = /bits/ 64 <2188800000>;
348 opp-microvolt = <1140000 905000 1140000>;
349 opp-supported-hw = <0x10>;
350 clock-latency-ns = <200000>;
354 cluster1_opp: opp_table1 {
355 compatible = "operating-points-v2-kryo-cpu";
356 nvmem-cells = <&speedbin_efuse>;
360 opp-hz = /bits/ 64 <307200000>;
361 opp-microvolt = <905000 905000 1140000>;
362 opp-supported-hw = <0x77>;
363 clock-latency-ns = <200000>;
366 opp-hz = /bits/ 64 <384000000>;
367 opp-microvolt = <905000 905000 1140000>;
368 opp-supported-hw = <0x70>;
369 clock-latency-ns = <200000>;
372 opp-hz = /bits/ 64 <403200000>;
373 opp-microvolt = <905000 905000 1140000>;
374 opp-supported-hw = <0x7>;
375 clock-latency-ns = <200000>;
378 opp-hz = /bits/ 64 <460800000>;
379 opp-microvolt = <905000 905000 1140000>;
380 opp-supported-hw = <0x70>;
381 clock-latency-ns = <200000>;
384 opp-hz = /bits/ 64 <480000000>;
385 opp-microvolt = <905000 905000 1140000>;
386 opp-supported-hw = <0x7>;
387 clock-latency-ns = <200000>;
390 opp-hz = /bits/ 64 <537600000>;
391 opp-microvolt = <905000 905000 1140000>;
392 opp-supported-hw = <0x70>;
393 clock-latency-ns = <200000>;
396 opp-hz = /bits/ 64 <556800000>;
397 opp-microvolt = <905000 905000 1140000>;
398 opp-supported-hw = <0x7>;
399 clock-latency-ns = <200000>;
402 opp-hz = /bits/ 64 <614400000>;
403 opp-microvolt = <905000 905000 1140000>;
404 opp-supported-hw = <0x70>;
405 clock-latency-ns = <200000>;
408 opp-hz = /bits/ 64 <652800000>;
409 opp-microvolt = <905000 905000 1140000>;
410 opp-supported-hw = <0x7>;
411 clock-latency-ns = <200000>;
414 opp-hz = /bits/ 64 <691200000>;
415 opp-microvolt = <905000 905000 1140000>;
416 opp-supported-hw = <0x70>;
417 clock-latency-ns = <200000>;
420 opp-hz = /bits/ 64 <729600000>;
421 opp-microvolt = <905000 905000 1140000>;
422 opp-supported-hw = <0x7>;
423 clock-latency-ns = <200000>;
426 opp-hz = /bits/ 64 <748800000>;
427 opp-microvolt = <905000 905000 1140000>;
428 opp-supported-hw = <0x70>;
429 clock-latency-ns = <200000>;
432 opp-hz = /bits/ 64 <806400000>;
433 opp-microvolt = <905000 905000 1140000>;
434 opp-supported-hw = <0x7>;
435 clock-latency-ns = <200000>;
438 opp-hz = /bits/ 64 <825600000>;
439 opp-microvolt = <905000 905000 1140000>;
440 opp-supported-hw = <0x70>;
441 clock-latency-ns = <200000>;
444 opp-hz = /bits/ 64 <883200000>;
445 opp-microvolt = <905000 905000 1140000>;
446 opp-supported-hw = <0x7>;
447 clock-latency-ns = <200000>;
450 opp-hz = /bits/ 64 <902400000>;
451 opp-microvolt = <905000 905000 1140000>;
452 opp-supported-hw = <0x70>;
453 clock-latency-ns = <200000>;
456 opp-hz = /bits/ 64 <940800000>;
457 opp-microvolt = <905000 905000 1140000>;
458 opp-supported-hw = <0x7>;
459 clock-latency-ns = <200000>;
462 opp-hz = /bits/ 64 <979200000>;
463 opp-microvolt = <905000 905000 1140000>;
464 opp-supported-hw = <0x70>;
465 clock-latency-ns = <200000>;
468 opp-hz = /bits/ 64 <1036800000>;
469 opp-microvolt = <905000 905000 1140000>;
470 opp-supported-hw = <0x7>;
471 clock-latency-ns = <200000>;
474 opp-hz = /bits/ 64 <1056000000>;
475 opp-microvolt = <905000 905000 1140000>;
476 opp-supported-hw = <0x70>;
477 clock-latency-ns = <200000>;
480 opp-hz = /bits/ 64 <1113600000>;
481 opp-microvolt = <905000 905000 1140000>;
482 opp-supported-hw = <0x7>;
483 clock-latency-ns = <200000>;
486 opp-hz = /bits/ 64 <1132800000>;
487 opp-microvolt = <905000 905000 1140000>;
488 opp-supported-hw = <0x70>;
489 clock-latency-ns = <200000>;
492 opp-hz = /bits/ 64 <1190400000>;
493 opp-microvolt = <905000 905000 1140000>;
494 opp-supported-hw = <0x7>;
495 clock-latency-ns = <200000>;
498 opp-hz = /bits/ 64 <1209600000>;
499 opp-microvolt = <905000 905000 1140000>;
500 opp-supported-hw = <0x70>;
501 clock-latency-ns = <200000>;
504 opp-hz = /bits/ 64 <1248000000>;
505 opp-microvolt = <905000 905000 1140000>;
506 opp-supported-hw = <0x7>;
507 clock-latency-ns = <200000>;
510 opp-hz = /bits/ 64 <1286400000>;
511 opp-microvolt = <905000 905000 1140000>;
512 opp-supported-hw = <0x70>;
513 clock-latency-ns = <200000>;
516 opp-hz = /bits/ 64 <1324800000>;
517 opp-microvolt = <1140000 905000 1140000>;
518 opp-supported-hw = <0x7>;
519 clock-latency-ns = <200000>;
522 opp-hz = /bits/ 64 <1363200000>;
523 opp-microvolt = <1140000 905000 1140000>;
524 opp-supported-hw = <0x70>;
525 clock-latency-ns = <200000>;
528 opp-hz = /bits/ 64 <1401600000>;
529 opp-microvolt = <1140000 905000 1140000>;
530 opp-supported-hw = <0x7>;
531 clock-latency-ns = <200000>;
534 opp-hz = /bits/ 64 <1440000000>;
535 opp-microvolt = <1140000 905000 1140000>;
536 opp-supported-hw = <0x70>;
537 clock-latency-ns = <200000>;
540 opp-hz = /bits/ 64 <1478400000>;
541 opp-microvolt = <1140000 905000 1140000>;
542 opp-supported-hw = <0x7>;
543 clock-latency-ns = <200000>;
546 opp-hz = /bits/ 64 <1516800000>;
547 opp-microvolt = <1140000 905000 1140000>;
548 opp-supported-hw = <0x70>;
549 clock-latency-ns = <200000>;
552 opp-hz = /bits/ 64 <1555200000>;
553 opp-microvolt = <1140000 905000 1140000>;
554 opp-supported-hw = <0x7>;
555 clock-latency-ns = <200000>;
558 opp-hz = /bits/ 64 <1593600000>;
559 opp-microvolt = <1140000 905000 1140000>;
560 opp-supported-hw = <0x70>;
561 clock-latency-ns = <200000>;
564 opp-hz = /bits/ 64 <1632000000>;
565 opp-microvolt = <1140000 905000 1140000>;
566 opp-supported-hw = <0x7>;
567 clock-latency-ns = <200000>;
570 opp-hz = /bits/ 64 <1670400000>;
571 opp-microvolt = <1140000 905000 1140000>;
572 opp-supported-hw = <0x70>;
573 clock-latency-ns = <200000>;
576 opp-hz = /bits/ 64 <1708800000>;
577 opp-microvolt = <1140000 905000 1140000>;
578 opp-supported-hw = <0x7>;
579 clock-latency-ns = <200000>;
582 opp-hz = /bits/ 64 <1747200000>;
583 opp-microvolt = <1140000 905000 1140000>;
584 opp-supported-hw = <0x70>;
585 clock-latency-ns = <200000>;
588 opp-hz = /bits/ 64 <1785600000>;
589 opp-microvolt = <1140000 905000 1140000>;
590 opp-supported-hw = <0x7>;
591 clock-latency-ns = <200000>;
594 opp-hz = /bits/ 64 <1804800000>;
595 opp-microvolt = <1140000 905000 1140000>;
596 opp-supported-hw = <0x6>;
597 clock-latency-ns = <200000>;
600 opp-hz = /bits/ 64 <1824000000>;
601 opp-microvolt = <1140000 905000 1140000>;
602 opp-supported-hw = <0x71>;
603 clock-latency-ns = <200000>;
606 opp-hz = /bits/ 64 <1900800000>;
607 opp-microvolt = <1140000 905000 1140000>;
608 opp-supported-hw = <0x74>;
609 clock-latency-ns = <200000>;
612 opp-hz = /bits/ 64 <1920000000>;
613 opp-microvolt = <1140000 905000 1140000>;
614 opp-supported-hw = <0x1>;
615 clock-latency-ns = <200000>;
618 opp-hz = /bits/ 64 <1977600000>;
619 opp-microvolt = <1140000 905000 1140000>;
620 opp-supported-hw = <0x30>;
621 clock-latency-ns = <200000>;
624 opp-hz = /bits/ 64 <1996800000>;
625 opp-microvolt = <1140000 905000 1140000>;
626 opp-supported-hw = <0x1>;
627 clock-latency-ns = <200000>;
630 opp-hz = /bits/ 64 <2054400000>;
631 opp-microvolt = <1140000 905000 1140000>;
632 opp-supported-hw = <0x30>;
633 clock-latency-ns = <200000>;
636 opp-hz = /bits/ 64 <2073600000>;
637 opp-microvolt = <1140000 905000 1140000>;
638 opp-supported-hw = <0x1>;
639 clock-latency-ns = <200000>;
642 opp-hz = /bits/ 64 <2150400000>;
643 opp-microvolt = <1140000 905000 1140000>;
644 opp-supported-hw = <0x31>;
645 clock-latency-ns = <200000>;
648 opp-hz = /bits/ 64 <2246400000>;
649 opp-microvolt = <1140000 905000 1140000>;
650 opp-supported-hw = <0x10>;
651 clock-latency-ns = <200000>;
654 opp-hz = /bits/ 64 <2342400000>;
655 opp-microvolt = <1140000 905000 1140000>;
656 opp-supported-hw = <0x10>;
657 clock-latency-ns = <200000>;
664 #address-cells = <2>;
668 smem_mem: smem-mem@86000000 {
669 reg = <0x0 0x86000000 0x0 0x200000>;
676 compatible = "qcom,smem";
677 memory-region = <&smem_mem>;
678 hwlocks = <&tcsr_mutex 3>;
683 qfprom: qfprom@74000 {
684 compatible = "qcom,qfprom";
685 reg = <0x00074000 0x8ff>;
686 #address-cells = <1>;
689 speedbin_efuse: speedbin@133 {
700 #address-cells = <1>;
705 compatible = "arm,cortex-a53";
708 clocks = <&apcs_glb>;
709 operating-points-v2 = <&cpu_opp_table>;
710 power-domains = <&cpr>;
711 power-domain-names = "cpr";
716 compatible = "arm,cortex-a53";
719 clocks = <&apcs_glb>;
720 operating-points-v2 = <&cpu_opp_table>;
721 power-domains = <&cpr>;
722 power-domain-names = "cpr";
727 compatible = "arm,cortex-a53";
730 clocks = <&apcs_glb>;
731 operating-points-v2 = <&cpu_opp_table>;
732 power-domains = <&cpr>;
733 power-domain-names = "cpr";
738 compatible = "arm,cortex-a53";
741 clocks = <&apcs_glb>;
742 operating-points-v2 = <&cpu_opp_table>;
743 power-domains = <&cpr>;
744 power-domain-names = "cpr";
748 cpu_opp_table: cpu-opp-table {
749 compatible = "operating-points-v2-kryo-cpu";
753 opp-hz = /bits/ 64 <1094400000>;
754 required-opps = <&cpr_opp1>;
757 opp-hz = /bits/ 64 <1248000000>;
758 required-opps = <&cpr_opp2>;
761 opp-hz = /bits/ 64 <1401600000>;
762 required-opps = <&cpr_opp3>;
766 cpr_opp_table: cpr-opp-table {
767 compatible = "operating-points-v2-qcom-level";
771 qcom,opp-fuse-level = <1>;
775 qcom,opp-fuse-level = <2>;
779 qcom,opp-fuse-level = <3>;
787 cpr: power-controller@b018000 {
788 compatible = "qcom,qcs404-cpr", "qcom,cpr";
789 reg = <0x0b018000 0x1000>;
791 vdd-apc-supply = <&pms405_s3>;
792 #power-domain-cells = <0>;
793 operating-points-v2 = <&cpr_opp_table>;