1*4882a593SmuzhiyunBinding for MediaTek's CPUFreq driver 2*4882a593Smuzhiyun===================================== 3*4882a593Smuzhiyun 4*4882a593SmuzhiyunRequired properties: 5*4882a593Smuzhiyun- clocks: A list of phandle + clock-specifier pairs for the clocks listed in clock names. 6*4882a593Smuzhiyun- clock-names: Should contain the following: 7*4882a593Smuzhiyun "cpu" - The multiplexer for clock input of CPU cluster. 8*4882a593Smuzhiyun "intermediate" - A parent of "cpu" clock which is used as "intermediate" clock 9*4882a593Smuzhiyun source (usually MAINPLL) when the original CPU PLL is under 10*4882a593Smuzhiyun transition and not stable yet. 11*4882a593Smuzhiyun Please refer to Documentation/devicetree/bindings/clock/clock-bindings.txt for 12*4882a593Smuzhiyun generic clock consumer properties. 13*4882a593Smuzhiyun- operating-points-v2: Please refer to Documentation/devicetree/bindings/opp/opp.txt 14*4882a593Smuzhiyun for detail. 15*4882a593Smuzhiyun- proc-supply: Regulator for Vproc of CPU cluster. 16*4882a593Smuzhiyun 17*4882a593SmuzhiyunOptional properties: 18*4882a593Smuzhiyun- sram-supply: Regulator for Vsram of CPU cluster. When present, the cpufreq driver 19*4882a593Smuzhiyun needs to do "voltage tracking" to step by step scale up/down Vproc and 20*4882a593Smuzhiyun Vsram to fit SoC specific needs. When absent, the voltage scaling 21*4882a593Smuzhiyun flow is handled by hardware, hence no software "voltage tracking" is 22*4882a593Smuzhiyun needed. 23*4882a593Smuzhiyun- #cooling-cells: 24*4882a593Smuzhiyun For details, please refer to 25*4882a593Smuzhiyun Documentation/devicetree/bindings/thermal/thermal-cooling-devices.yaml 26*4882a593Smuzhiyun 27*4882a593SmuzhiyunExample 1 (MT7623 SoC): 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun cpu_opp_table: opp_table { 30*4882a593Smuzhiyun compatible = "operating-points-v2"; 31*4882a593Smuzhiyun opp-shared; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun opp-598000000 { 34*4882a593Smuzhiyun opp-hz = /bits/ 64 <598000000>; 35*4882a593Smuzhiyun opp-microvolt = <1050000>; 36*4882a593Smuzhiyun }; 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun opp-747500000 { 39*4882a593Smuzhiyun opp-hz = /bits/ 64 <747500000>; 40*4882a593Smuzhiyun opp-microvolt = <1050000>; 41*4882a593Smuzhiyun }; 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun opp-1040000000 { 44*4882a593Smuzhiyun opp-hz = /bits/ 64 <1040000000>; 45*4882a593Smuzhiyun opp-microvolt = <1150000>; 46*4882a593Smuzhiyun }; 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun opp-1196000000 { 49*4882a593Smuzhiyun opp-hz = /bits/ 64 <1196000000>; 50*4882a593Smuzhiyun opp-microvolt = <1200000>; 51*4882a593Smuzhiyun }; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun opp-1300000000 { 54*4882a593Smuzhiyun opp-hz = /bits/ 64 <1300000000>; 55*4882a593Smuzhiyun opp-microvolt = <1300000>; 56*4882a593Smuzhiyun }; 57*4882a593Smuzhiyun }; 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun cpu0: cpu@0 { 60*4882a593Smuzhiyun device_type = "cpu"; 61*4882a593Smuzhiyun compatible = "arm,cortex-a7"; 62*4882a593Smuzhiyun reg = <0x0>; 63*4882a593Smuzhiyun clocks = <&infracfg CLK_INFRA_CPUSEL>, 64*4882a593Smuzhiyun <&apmixedsys CLK_APMIXED_MAINPLL>; 65*4882a593Smuzhiyun clock-names = "cpu", "intermediate"; 66*4882a593Smuzhiyun operating-points-v2 = <&cpu_opp_table>; 67*4882a593Smuzhiyun #cooling-cells = <2>; 68*4882a593Smuzhiyun }; 69*4882a593Smuzhiyun cpu@1 { 70*4882a593Smuzhiyun device_type = "cpu"; 71*4882a593Smuzhiyun compatible = "arm,cortex-a7"; 72*4882a593Smuzhiyun reg = <0x1>; 73*4882a593Smuzhiyun operating-points-v2 = <&cpu_opp_table>; 74*4882a593Smuzhiyun }; 75*4882a593Smuzhiyun cpu@2 { 76*4882a593Smuzhiyun device_type = "cpu"; 77*4882a593Smuzhiyun compatible = "arm,cortex-a7"; 78*4882a593Smuzhiyun reg = <0x2>; 79*4882a593Smuzhiyun operating-points-v2 = <&cpu_opp_table>; 80*4882a593Smuzhiyun }; 81*4882a593Smuzhiyun cpu@3 { 82*4882a593Smuzhiyun device_type = "cpu"; 83*4882a593Smuzhiyun compatible = "arm,cortex-a7"; 84*4882a593Smuzhiyun reg = <0x3>; 85*4882a593Smuzhiyun operating-points-v2 = <&cpu_opp_table>; 86*4882a593Smuzhiyun }; 87*4882a593Smuzhiyun 88*4882a593SmuzhiyunExample 2 (MT8173 SoC): 89*4882a593Smuzhiyun cpu_opp_table_a: opp_table_a { 90*4882a593Smuzhiyun compatible = "operating-points-v2"; 91*4882a593Smuzhiyun opp-shared; 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun opp-507000000 { 94*4882a593Smuzhiyun opp-hz = /bits/ 64 <507000000>; 95*4882a593Smuzhiyun opp-microvolt = <859000>; 96*4882a593Smuzhiyun }; 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun opp-702000000 { 99*4882a593Smuzhiyun opp-hz = /bits/ 64 <702000000>; 100*4882a593Smuzhiyun opp-microvolt = <908000>; 101*4882a593Smuzhiyun }; 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun opp-1001000000 { 104*4882a593Smuzhiyun opp-hz = /bits/ 64 <1001000000>; 105*4882a593Smuzhiyun opp-microvolt = <983000>; 106*4882a593Smuzhiyun }; 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun opp-1105000000 { 109*4882a593Smuzhiyun opp-hz = /bits/ 64 <1105000000>; 110*4882a593Smuzhiyun opp-microvolt = <1009000>; 111*4882a593Smuzhiyun }; 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun opp-1183000000 { 114*4882a593Smuzhiyun opp-hz = /bits/ 64 <1183000000>; 115*4882a593Smuzhiyun opp-microvolt = <1028000>; 116*4882a593Smuzhiyun }; 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun opp-1404000000 { 119*4882a593Smuzhiyun opp-hz = /bits/ 64 <1404000000>; 120*4882a593Smuzhiyun opp-microvolt = <1083000>; 121*4882a593Smuzhiyun }; 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun opp-1508000000 { 124*4882a593Smuzhiyun opp-hz = /bits/ 64 <1508000000>; 125*4882a593Smuzhiyun opp-microvolt = <1109000>; 126*4882a593Smuzhiyun }; 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun opp-1573000000 { 129*4882a593Smuzhiyun opp-hz = /bits/ 64 <1573000000>; 130*4882a593Smuzhiyun opp-microvolt = <1125000>; 131*4882a593Smuzhiyun }; 132*4882a593Smuzhiyun }; 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun cpu_opp_table_b: opp_table_b { 135*4882a593Smuzhiyun compatible = "operating-points-v2"; 136*4882a593Smuzhiyun opp-shared; 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun opp-507000000 { 139*4882a593Smuzhiyun opp-hz = /bits/ 64 <507000000>; 140*4882a593Smuzhiyun opp-microvolt = <828000>; 141*4882a593Smuzhiyun }; 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun opp-702000000 { 144*4882a593Smuzhiyun opp-hz = /bits/ 64 <702000000>; 145*4882a593Smuzhiyun opp-microvolt = <867000>; 146*4882a593Smuzhiyun }; 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun opp-1001000000 { 149*4882a593Smuzhiyun opp-hz = /bits/ 64 <1001000000>; 150*4882a593Smuzhiyun opp-microvolt = <927000>; 151*4882a593Smuzhiyun }; 152*4882a593Smuzhiyun 153*4882a593Smuzhiyun opp-1209000000 { 154*4882a593Smuzhiyun opp-hz = /bits/ 64 <1209000000>; 155*4882a593Smuzhiyun opp-microvolt = <968000>; 156*4882a593Smuzhiyun }; 157*4882a593Smuzhiyun 158*4882a593Smuzhiyun opp-1404000000 { 159*4882a593Smuzhiyun opp-hz = /bits/ 64 <1007000000>; 160*4882a593Smuzhiyun opp-microvolt = <1028000>; 161*4882a593Smuzhiyun }; 162*4882a593Smuzhiyun 163*4882a593Smuzhiyun opp-1612000000 { 164*4882a593Smuzhiyun opp-hz = /bits/ 64 <1612000000>; 165*4882a593Smuzhiyun opp-microvolt = <1049000>; 166*4882a593Smuzhiyun }; 167*4882a593Smuzhiyun 168*4882a593Smuzhiyun opp-1807000000 { 169*4882a593Smuzhiyun opp-hz = /bits/ 64 <1807000000>; 170*4882a593Smuzhiyun opp-microvolt = <1089000>; 171*4882a593Smuzhiyun }; 172*4882a593Smuzhiyun 173*4882a593Smuzhiyun opp-1989000000 { 174*4882a593Smuzhiyun opp-hz = /bits/ 64 <1989000000>; 175*4882a593Smuzhiyun opp-microvolt = <1125000>; 176*4882a593Smuzhiyun }; 177*4882a593Smuzhiyun }; 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun cpu0: cpu@0 { 180*4882a593Smuzhiyun device_type = "cpu"; 181*4882a593Smuzhiyun compatible = "arm,cortex-a53"; 182*4882a593Smuzhiyun reg = <0x000>; 183*4882a593Smuzhiyun enable-method = "psci"; 184*4882a593Smuzhiyun cpu-idle-states = <&CPU_SLEEP_0>; 185*4882a593Smuzhiyun clocks = <&infracfg CLK_INFRA_CA53SEL>, 186*4882a593Smuzhiyun <&apmixedsys CLK_APMIXED_MAINPLL>; 187*4882a593Smuzhiyun clock-names = "cpu", "intermediate"; 188*4882a593Smuzhiyun operating-points-v2 = <&cpu_opp_table_a>; 189*4882a593Smuzhiyun }; 190*4882a593Smuzhiyun 191*4882a593Smuzhiyun cpu1: cpu@1 { 192*4882a593Smuzhiyun device_type = "cpu"; 193*4882a593Smuzhiyun compatible = "arm,cortex-a53"; 194*4882a593Smuzhiyun reg = <0x001>; 195*4882a593Smuzhiyun enable-method = "psci"; 196*4882a593Smuzhiyun cpu-idle-states = <&CPU_SLEEP_0>; 197*4882a593Smuzhiyun clocks = <&infracfg CLK_INFRA_CA53SEL>, 198*4882a593Smuzhiyun <&apmixedsys CLK_APMIXED_MAINPLL>; 199*4882a593Smuzhiyun clock-names = "cpu", "intermediate"; 200*4882a593Smuzhiyun operating-points-v2 = <&cpu_opp_table_a>; 201*4882a593Smuzhiyun }; 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun cpu2: cpu@100 { 204*4882a593Smuzhiyun device_type = "cpu"; 205*4882a593Smuzhiyun compatible = "arm,cortex-a57"; 206*4882a593Smuzhiyun reg = <0x100>; 207*4882a593Smuzhiyun enable-method = "psci"; 208*4882a593Smuzhiyun cpu-idle-states = <&CPU_SLEEP_0>; 209*4882a593Smuzhiyun clocks = <&infracfg CLK_INFRA_CA57SEL>, 210*4882a593Smuzhiyun <&apmixedsys CLK_APMIXED_MAINPLL>; 211*4882a593Smuzhiyun clock-names = "cpu", "intermediate"; 212*4882a593Smuzhiyun operating-points-v2 = <&cpu_opp_table_b>; 213*4882a593Smuzhiyun }; 214*4882a593Smuzhiyun 215*4882a593Smuzhiyun cpu3: cpu@101 { 216*4882a593Smuzhiyun device_type = "cpu"; 217*4882a593Smuzhiyun compatible = "arm,cortex-a57"; 218*4882a593Smuzhiyun reg = <0x101>; 219*4882a593Smuzhiyun enable-method = "psci"; 220*4882a593Smuzhiyun cpu-idle-states = <&CPU_SLEEP_0>; 221*4882a593Smuzhiyun clocks = <&infracfg CLK_INFRA_CA57SEL>, 222*4882a593Smuzhiyun <&apmixedsys CLK_APMIXED_MAINPLL>; 223*4882a593Smuzhiyun clock-names = "cpu", "intermediate"; 224*4882a593Smuzhiyun operating-points-v2 = <&cpu_opp_table_b>; 225*4882a593Smuzhiyun }; 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun &cpu0 { 228*4882a593Smuzhiyun proc-supply = <&mt6397_vpca15_reg>; 229*4882a593Smuzhiyun }; 230*4882a593Smuzhiyun 231*4882a593Smuzhiyun &cpu1 { 232*4882a593Smuzhiyun proc-supply = <&mt6397_vpca15_reg>; 233*4882a593Smuzhiyun }; 234*4882a593Smuzhiyun 235*4882a593Smuzhiyun &cpu2 { 236*4882a593Smuzhiyun proc-supply = <&da9211_vcpu_reg>; 237*4882a593Smuzhiyun sram-supply = <&mt6397_vsramca7_reg>; 238*4882a593Smuzhiyun }; 239*4882a593Smuzhiyun 240*4882a593Smuzhiyun &cpu3 { 241*4882a593Smuzhiyun proc-supply = <&da9211_vcpu_reg>; 242*4882a593Smuzhiyun sram-supply = <&mt6397_vsramca7_reg>; 243*4882a593Smuzhiyun }; 244