1 Qualcomm Technologies, Inc. KRYO CPUFreq and OPP bindings
2 ===================================
4 In Certain Qualcomm Technologies, Inc. SoCs like apq8096 and msm8996
5 that have KRYO processors, the CPU ferequencies subset and voltage value
6 of each OPP varies based on 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-kryo 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 and msm8996.
23 - nvmem-cells: A phandle pointing to a nvmem-cells node representing the
24 efuse registers that has information about the
25 speedbin that is used to select the right frequency/voltage
27 Please refer the for nvmem-cells
28 bindings Documentation/devicetree/bindings/nvmem/nvmem.txt
29 and also examples below.
32 - opp-supported-hw: A single 32 bit bitmap value, representing compatible HW.
34 0: MSM8996 V3, speedbin 0
35 1: MSM8996 V3, speedbin 1
36 2: MSM8996 V3, speedbin 2
38 4: MSM8996 SG, speedbin 0
39 5: MSM8996 SG, speedbin 1
40 6: MSM8996 SG, speedbin 2
52 compatible = "qcom,kryo";
54 enable-method = "psci";
56 cpu-supply = <&pm8994_s11_saw>;
57 operating-points-v2 = <&cluster0_opp>;
59 next-level-cache = <&L2_0>;
68 compatible = "qcom,kryo";
70 enable-method = "psci";
72 cpu-supply = <&pm8994_s11_saw>;
73 operating-points-v2 = <&cluster0_opp>;
75 next-level-cache = <&L2_0>;
80 compatible = "qcom,kryo";
82 enable-method = "psci";
84 cpu-supply = <&pm8994_s11_saw>;
85 operating-points-v2 = <&cluster1_opp>;
87 next-level-cache = <&L2_1>;
96 compatible = "qcom,kryo";
98 enable-method = "psci";
100 cpu-supply = <&pm8994_s11_saw>;
101 operating-points-v2 = <&cluster1_opp>;
102 #cooling-cells = <2>;
103 next-level-cache = <&L2_1>;
129 cluster0_opp: opp_table0 {
130 compatible = "operating-points-v2-kryo-cpu";
131 nvmem-cells = <&speedbin_efuse>;
135 opp-hz = /bits/ 64 <307200000>;
136 opp-microvolt = <905000 905000 1140000>;
137 opp-supported-hw = <0x77>;
138 clock-latency-ns = <200000>;
141 opp-hz = /bits/ 64 <384000000>;
142 opp-microvolt = <905000 905000 1140000>;
143 opp-supported-hw = <0x70>;
144 clock-latency-ns = <200000>;
147 opp-hz = /bits/ 64 <422400000>;
148 opp-microvolt = <905000 905000 1140000>;
149 opp-supported-hw = <0x7>;
150 clock-latency-ns = <200000>;
153 opp-hz = /bits/ 64 <460800000>;
154 opp-microvolt = <905000 905000 1140000>;
155 opp-supported-hw = <0x70>;
156 clock-latency-ns = <200000>;
159 opp-hz = /bits/ 64 <480000000>;
160 opp-microvolt = <905000 905000 1140000>;
161 opp-supported-hw = <0x7>;
162 clock-latency-ns = <200000>;
165 opp-hz = /bits/ 64 <537600000>;
166 opp-microvolt = <905000 905000 1140000>;
167 opp-supported-hw = <0x70>;
168 clock-latency-ns = <200000>;
171 opp-hz = /bits/ 64 <556800000>;
172 opp-microvolt = <905000 905000 1140000>;
173 opp-supported-hw = <0x7>;
174 clock-latency-ns = <200000>;
177 opp-hz = /bits/ 64 <614400000>;
178 opp-microvolt = <905000 905000 1140000>;
179 opp-supported-hw = <0x70>;
180 clock-latency-ns = <200000>;
183 opp-hz = /bits/ 64 <652800000>;
184 opp-microvolt = <905000 905000 1140000>;
185 opp-supported-hw = <0x7>;
186 clock-latency-ns = <200000>;
189 opp-hz = /bits/ 64 <691200000>;
190 opp-microvolt = <905000 905000 1140000>;
191 opp-supported-hw = <0x70>;
192 clock-latency-ns = <200000>;
195 opp-hz = /bits/ 64 <729600000>;
196 opp-microvolt = <905000 905000 1140000>;
197 opp-supported-hw = <0x7>;
198 clock-latency-ns = <200000>;
201 opp-hz = /bits/ 64 <768000000>;
202 opp-microvolt = <905000 905000 1140000>;
203 opp-supported-hw = <0x70>;
204 clock-latency-ns = <200000>;
207 opp-hz = /bits/ 64 <844800000>;
208 opp-microvolt = <905000 905000 1140000>;
209 opp-supported-hw = <0x77>;
210 clock-latency-ns = <200000>;
213 opp-hz = /bits/ 64 <902400000>;
214 opp-microvolt = <905000 905000 1140000>;
215 opp-supported-hw = <0x70>;
216 clock-latency-ns = <200000>;
219 opp-hz = /bits/ 64 <960000000>;
220 opp-microvolt = <905000 905000 1140000>;
221 opp-supported-hw = <0x7>;
222 clock-latency-ns = <200000>;
225 opp-hz = /bits/ 64 <979200000>;
226 opp-microvolt = <905000 905000 1140000>;
227 opp-supported-hw = <0x70>;
228 clock-latency-ns = <200000>;
231 opp-hz = /bits/ 64 <1036800000>;
232 opp-microvolt = <905000 905000 1140000>;
233 opp-supported-hw = <0x7>;
234 clock-latency-ns = <200000>;
237 opp-hz = /bits/ 64 <1056000000>;
238 opp-microvolt = <905000 905000 1140000>;
239 opp-supported-hw = <0x70>;
240 clock-latency-ns = <200000>;
243 opp-hz = /bits/ 64 <1113600000>;
244 opp-microvolt = <905000 905000 1140000>;
245 opp-supported-hw = <0x7>;
246 clock-latency-ns = <200000>;
249 opp-hz = /bits/ 64 <1132800000>;
250 opp-microvolt = <905000 905000 1140000>;
251 opp-supported-hw = <0x70>;
252 clock-latency-ns = <200000>;
255 opp-hz = /bits/ 64 <1190400000>;
256 opp-microvolt = <905000 905000 1140000>;
257 opp-supported-hw = <0x7>;
258 clock-latency-ns = <200000>;
261 opp-hz = /bits/ 64 <1209600000>;
262 opp-microvolt = <905000 905000 1140000>;
263 opp-supported-hw = <0x70>;
264 clock-latency-ns = <200000>;
267 opp-hz = /bits/ 64 <1228800000>;
268 opp-microvolt = <905000 905000 1140000>;
269 opp-supported-hw = <0x7>;
270 clock-latency-ns = <200000>;
273 opp-hz = /bits/ 64 <1286400000>;
274 opp-microvolt = <1140000 905000 1140000>;
275 opp-supported-hw = <0x70>;
276 clock-latency-ns = <200000>;
279 opp-hz = /bits/ 64 <1324800000>;
280 opp-microvolt = <1140000 905000 1140000>;
281 opp-supported-hw = <0x5>;
282 clock-latency-ns = <200000>;
285 opp-hz = /bits/ 64 <1363200000>;
286 opp-microvolt = <1140000 905000 1140000>;
287 opp-supported-hw = <0x72>;
288 clock-latency-ns = <200000>;
291 opp-hz = /bits/ 64 <1401600000>;
292 opp-microvolt = <1140000 905000 1140000>;
293 opp-supported-hw = <0x5>;
294 clock-latency-ns = <200000>;
297 opp-hz = /bits/ 64 <1440000000>;
298 opp-microvolt = <1140000 905000 1140000>;
299 opp-supported-hw = <0x70>;
300 clock-latency-ns = <200000>;
303 opp-hz = /bits/ 64 <1478400000>;
304 opp-microvolt = <1140000 905000 1140000>;
305 opp-supported-hw = <0x1>;
306 clock-latency-ns = <200000>;
309 opp-hz = /bits/ 64 <1497600000>;
310 opp-microvolt = <1140000 905000 1140000>;
311 opp-supported-hw = <0x4>;
312 clock-latency-ns = <200000>;
315 opp-hz = /bits/ 64 <1516800000>;
316 opp-microvolt = <1140000 905000 1140000>;
317 opp-supported-hw = <0x70>;
318 clock-latency-ns = <200000>;
321 opp-hz = /bits/ 64 <1593600000>;
322 opp-microvolt = <1140000 905000 1140000>;
323 opp-supported-hw = <0x71>;
324 clock-latency-ns = <200000>;
327 opp-hz = /bits/ 64 <1996800000>;
328 opp-microvolt = <1140000 905000 1140000>;
329 opp-supported-hw = <0x20>;
330 clock-latency-ns = <200000>;
333 opp-hz = /bits/ 64 <2188800000>;
334 opp-microvolt = <1140000 905000 1140000>;
335 opp-supported-hw = <0x10>;
336 clock-latency-ns = <200000>;
340 cluster1_opp: opp_table1 {
341 compatible = "operating-points-v2-kryo-cpu";
342 nvmem-cells = <&speedbin_efuse>;
346 opp-hz = /bits/ 64 <307200000>;
347 opp-microvolt = <905000 905000 1140000>;
348 opp-supported-hw = <0x77>;
349 clock-latency-ns = <200000>;
352 opp-hz = /bits/ 64 <384000000>;
353 opp-microvolt = <905000 905000 1140000>;
354 opp-supported-hw = <0x70>;
355 clock-latency-ns = <200000>;
358 opp-hz = /bits/ 64 <403200000>;
359 opp-microvolt = <905000 905000 1140000>;
360 opp-supported-hw = <0x7>;
361 clock-latency-ns = <200000>;
364 opp-hz = /bits/ 64 <460800000>;
365 opp-microvolt = <905000 905000 1140000>;
366 opp-supported-hw = <0x70>;
367 clock-latency-ns = <200000>;
370 opp-hz = /bits/ 64 <480000000>;
371 opp-microvolt = <905000 905000 1140000>;
372 opp-supported-hw = <0x7>;
373 clock-latency-ns = <200000>;
376 opp-hz = /bits/ 64 <537600000>;
377 opp-microvolt = <905000 905000 1140000>;
378 opp-supported-hw = <0x70>;
379 clock-latency-ns = <200000>;
382 opp-hz = /bits/ 64 <556800000>;
383 opp-microvolt = <905000 905000 1140000>;
384 opp-supported-hw = <0x7>;
385 clock-latency-ns = <200000>;
388 opp-hz = /bits/ 64 <614400000>;
389 opp-microvolt = <905000 905000 1140000>;
390 opp-supported-hw = <0x70>;
391 clock-latency-ns = <200000>;
394 opp-hz = /bits/ 64 <652800000>;
395 opp-microvolt = <905000 905000 1140000>;
396 opp-supported-hw = <0x7>;
397 clock-latency-ns = <200000>;
400 opp-hz = /bits/ 64 <691200000>;
401 opp-microvolt = <905000 905000 1140000>;
402 opp-supported-hw = <0x70>;
403 clock-latency-ns = <200000>;
406 opp-hz = /bits/ 64 <729600000>;
407 opp-microvolt = <905000 905000 1140000>;
408 opp-supported-hw = <0x7>;
409 clock-latency-ns = <200000>;
412 opp-hz = /bits/ 64 <748800000>;
413 opp-microvolt = <905000 905000 1140000>;
414 opp-supported-hw = <0x70>;
415 clock-latency-ns = <200000>;
418 opp-hz = /bits/ 64 <806400000>;
419 opp-microvolt = <905000 905000 1140000>;
420 opp-supported-hw = <0x7>;
421 clock-latency-ns = <200000>;
424 opp-hz = /bits/ 64 <825600000>;
425 opp-microvolt = <905000 905000 1140000>;
426 opp-supported-hw = <0x70>;
427 clock-latency-ns = <200000>;
430 opp-hz = /bits/ 64 <883200000>;
431 opp-microvolt = <905000 905000 1140000>;
432 opp-supported-hw = <0x7>;
433 clock-latency-ns = <200000>;
436 opp-hz = /bits/ 64 <902400000>;
437 opp-microvolt = <905000 905000 1140000>;
438 opp-supported-hw = <0x70>;
439 clock-latency-ns = <200000>;
442 opp-hz = /bits/ 64 <940800000>;
443 opp-microvolt = <905000 905000 1140000>;
444 opp-supported-hw = <0x7>;
445 clock-latency-ns = <200000>;
448 opp-hz = /bits/ 64 <979200000>;
449 opp-microvolt = <905000 905000 1140000>;
450 opp-supported-hw = <0x70>;
451 clock-latency-ns = <200000>;
454 opp-hz = /bits/ 64 <1036800000>;
455 opp-microvolt = <905000 905000 1140000>;
456 opp-supported-hw = <0x7>;
457 clock-latency-ns = <200000>;
460 opp-hz = /bits/ 64 <1056000000>;
461 opp-microvolt = <905000 905000 1140000>;
462 opp-supported-hw = <0x70>;
463 clock-latency-ns = <200000>;
466 opp-hz = /bits/ 64 <1113600000>;
467 opp-microvolt = <905000 905000 1140000>;
468 opp-supported-hw = <0x7>;
469 clock-latency-ns = <200000>;
472 opp-hz = /bits/ 64 <1132800000>;
473 opp-microvolt = <905000 905000 1140000>;
474 opp-supported-hw = <0x70>;
475 clock-latency-ns = <200000>;
478 opp-hz = /bits/ 64 <1190400000>;
479 opp-microvolt = <905000 905000 1140000>;
480 opp-supported-hw = <0x7>;
481 clock-latency-ns = <200000>;
484 opp-hz = /bits/ 64 <1209600000>;
485 opp-microvolt = <905000 905000 1140000>;
486 opp-supported-hw = <0x70>;
487 clock-latency-ns = <200000>;
490 opp-hz = /bits/ 64 <1248000000>;
491 opp-microvolt = <905000 905000 1140000>;
492 opp-supported-hw = <0x7>;
493 clock-latency-ns = <200000>;
496 opp-hz = /bits/ 64 <1286400000>;
497 opp-microvolt = <905000 905000 1140000>;
498 opp-supported-hw = <0x70>;
499 clock-latency-ns = <200000>;
502 opp-hz = /bits/ 64 <1324800000>;
503 opp-microvolt = <1140000 905000 1140000>;
504 opp-supported-hw = <0x7>;
505 clock-latency-ns = <200000>;
508 opp-hz = /bits/ 64 <1363200000>;
509 opp-microvolt = <1140000 905000 1140000>;
510 opp-supported-hw = <0x70>;
511 clock-latency-ns = <200000>;
514 opp-hz = /bits/ 64 <1401600000>;
515 opp-microvolt = <1140000 905000 1140000>;
516 opp-supported-hw = <0x7>;
517 clock-latency-ns = <200000>;
520 opp-hz = /bits/ 64 <1440000000>;
521 opp-microvolt = <1140000 905000 1140000>;
522 opp-supported-hw = <0x70>;
523 clock-latency-ns = <200000>;
526 opp-hz = /bits/ 64 <1478400000>;
527 opp-microvolt = <1140000 905000 1140000>;
528 opp-supported-hw = <0x7>;
529 clock-latency-ns = <200000>;
532 opp-hz = /bits/ 64 <1516800000>;
533 opp-microvolt = <1140000 905000 1140000>;
534 opp-supported-hw = <0x70>;
535 clock-latency-ns = <200000>;
538 opp-hz = /bits/ 64 <1555200000>;
539 opp-microvolt = <1140000 905000 1140000>;
540 opp-supported-hw = <0x7>;
541 clock-latency-ns = <200000>;
544 opp-hz = /bits/ 64 <1593600000>;
545 opp-microvolt = <1140000 905000 1140000>;
546 opp-supported-hw = <0x70>;
547 clock-latency-ns = <200000>;
550 opp-hz = /bits/ 64 <1632000000>;
551 opp-microvolt = <1140000 905000 1140000>;
552 opp-supported-hw = <0x7>;
553 clock-latency-ns = <200000>;
556 opp-hz = /bits/ 64 <1670400000>;
557 opp-microvolt = <1140000 905000 1140000>;
558 opp-supported-hw = <0x70>;
559 clock-latency-ns = <200000>;
562 opp-hz = /bits/ 64 <1708800000>;
563 opp-microvolt = <1140000 905000 1140000>;
564 opp-supported-hw = <0x7>;
565 clock-latency-ns = <200000>;
568 opp-hz = /bits/ 64 <1747200000>;
569 opp-microvolt = <1140000 905000 1140000>;
570 opp-supported-hw = <0x70>;
571 clock-latency-ns = <200000>;
574 opp-hz = /bits/ 64 <1785600000>;
575 opp-microvolt = <1140000 905000 1140000>;
576 opp-supported-hw = <0x7>;
577 clock-latency-ns = <200000>;
580 opp-hz = /bits/ 64 <1804800000>;
581 opp-microvolt = <1140000 905000 1140000>;
582 opp-supported-hw = <0x6>;
583 clock-latency-ns = <200000>;
586 opp-hz = /bits/ 64 <1824000000>;
587 opp-microvolt = <1140000 905000 1140000>;
588 opp-supported-hw = <0x71>;
589 clock-latency-ns = <200000>;
592 opp-hz = /bits/ 64 <1900800000>;
593 opp-microvolt = <1140000 905000 1140000>;
594 opp-supported-hw = <0x74>;
595 clock-latency-ns = <200000>;
598 opp-hz = /bits/ 64 <1920000000>;
599 opp-microvolt = <1140000 905000 1140000>;
600 opp-supported-hw = <0x1>;
601 clock-latency-ns = <200000>;
604 opp-hz = /bits/ 64 <1977600000>;
605 opp-microvolt = <1140000 905000 1140000>;
606 opp-supported-hw = <0x30>;
607 clock-latency-ns = <200000>;
610 opp-hz = /bits/ 64 <1996800000>;
611 opp-microvolt = <1140000 905000 1140000>;
612 opp-supported-hw = <0x1>;
613 clock-latency-ns = <200000>;
616 opp-hz = /bits/ 64 <2054400000>;
617 opp-microvolt = <1140000 905000 1140000>;
618 opp-supported-hw = <0x30>;
619 clock-latency-ns = <200000>;
622 opp-hz = /bits/ 64 <2073600000>;
623 opp-microvolt = <1140000 905000 1140000>;
624 opp-supported-hw = <0x1>;
625 clock-latency-ns = <200000>;
628 opp-hz = /bits/ 64 <2150400000>;
629 opp-microvolt = <1140000 905000 1140000>;
630 opp-supported-hw = <0x31>;
631 clock-latency-ns = <200000>;
634 opp-hz = /bits/ 64 <2246400000>;
635 opp-microvolt = <1140000 905000 1140000>;
636 opp-supported-hw = <0x10>;
637 clock-latency-ns = <200000>;
640 opp-hz = /bits/ 64 <2342400000>;
641 opp-microvolt = <1140000 905000 1140000>;
642 opp-supported-hw = <0x10>;
643 clock-latency-ns = <200000>;
650 #address-cells = <2>;
654 smem_mem: smem-mem@86000000 {
655 reg = <0x0 0x86000000 0x0 0x200000>;
662 compatible = "qcom,smem";
663 memory-region = <&smem_mem>;
664 hwlocks = <&tcsr_mutex 3>;
669 qfprom: qfprom@74000 {
670 compatible = "qcom,qfprom";
671 reg = <0x00074000 0x8ff>;
672 #address-cells = <1>;
675 speedbin_efuse: speedbin@133 {