^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) Binding for ST's CPUFreq driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) ===============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) ST's CPUFreq driver attempts to read 'process' and 'version' attributes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) from the SoC, then supplies the OPP framework with 'prop' and 'supported
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) hardware' information respectively. The framework is then able to read
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) the DT and operate in the usual way.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) For more information about the expected DT format [See: ../opp/opp.txt].
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) Frequency Scaling only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) ----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) No vendor specific driver required for this.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) Located in CPU's node:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) - operating-points : [See: ../power/opp.txt]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) Example [safe]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) --------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) cpus {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) cpu@0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) /* kHz uV */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) operating-points = <1500000 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 1200000 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 800000 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 500000 0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) Dynamic Voltage and Frequency Scaling (DVFS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) --------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) This requires the ST CPUFreq driver to supply 'process' and 'version' info.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) Located in CPU's node:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) - operating-points-v2 : [See ../power/opp.txt]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) Example [unsafe]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) ----------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) cpus {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) cpu@0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) operating-points-v2 = <&cpu0_opp_table>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) cpu0_opp_table: opp_table {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) compatible = "operating-points-v2";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) /* ############################################################### */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) /* # WARNING: Do not attempt to copy/replicate these nodes, # */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) /* # they are only to be supplied by the bootloader !!! # */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) /* ############################################################### */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) opp0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) /* Major Minor Substrate */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) /* 2 all all */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) opp-supported-hw = <0x00000004 0xffffffff 0xffffffff>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) opp-hz = /bits/ 64 <1500000000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) clock-latency-ns = <10000000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) opp-microvolt-pcode0 = <1200000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) opp-microvolt-pcode1 = <1200000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) opp-microvolt-pcode2 = <1200000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) opp-microvolt-pcode3 = <1200000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) opp-microvolt-pcode4 = <1170000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) opp-microvolt-pcode5 = <1140000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) opp-microvolt-pcode6 = <1100000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) opp-microvolt-pcode7 = <1070000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) opp1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) /* Major Minor Substrate */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) /* all all all */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) opp-supported-hw = <0xffffffff 0xffffffff 0xffffffff>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) opp-hz = /bits/ 64 <1200000000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) clock-latency-ns = <10000000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) opp-microvolt-pcode0 = <1110000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) opp-microvolt-pcode1 = <1150000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) opp-microvolt-pcode2 = <1100000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) opp-microvolt-pcode3 = <1080000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) opp-microvolt-pcode4 = <1040000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) opp-microvolt-pcode5 = <1020000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) opp-microvolt-pcode6 = <980000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) opp-microvolt-pcode7 = <930000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) };