1bb33270cSSean WangBinding for MediaTek's CPUFreq driver 2bb33270cSSean Wang===================================== 37e17ae86SSean Wang 47e17ae86SSean WangRequired properties: 57e17ae86SSean Wang- clocks: A list of phandle + clock-specifier pairs for the clocks listed in clock names. 67e17ae86SSean Wang- clock-names: Should contain the following: 77e17ae86SSean Wang "cpu" - The multiplexer for clock input of CPU cluster. 87e17ae86SSean Wang "intermediate" - A parent of "cpu" clock which is used as "intermediate" clock 97e17ae86SSean Wang source (usually MAINPLL) when the original CPU PLL is under 107e17ae86SSean Wang transition and not stable yet. 1134962fb8SMauro Carvalho Chehab Please refer to Documentation/devicetree/bindings/clock/clock-bindings.txt for 127e17ae86SSean Wang generic clock consumer properties. 1394274f20SRob Herring- operating-points-v2: Please refer to Documentation/devicetree/bindings/opp/opp-v2.yaml 14bb33270cSSean Wang for detail. 157e17ae86SSean Wang- proc-supply: Regulator for Vproc of CPU cluster. 167e17ae86SSean Wang 177e17ae86SSean WangOptional properties: 187e17ae86SSean Wang- sram-supply: Regulator for Vsram of CPU cluster. When present, the cpufreq driver 197e17ae86SSean Wang needs to do "voltage tracking" to step by step scale up/down Vproc and 207e17ae86SSean Wang Vsram to fit SoC specific needs. When absent, the voltage scaling 217e17ae86SSean Wang flow is handled by hardware, hence no software "voltage tracking" is 227e17ae86SSean Wang needed. 23*818c8321SRex-BC Chen- mediatek,cci: 24*818c8321SRex-BC Chen Used to confirm the link status between cpufreq and mediatek cci. Because 25*818c8321SRex-BC Chen cpufreq and mediatek cci could share the same regulator in some MediaTek SoCs. 26*818c8321SRex-BC Chen To prevent the issue of high frequency and low voltage, we need to use this 27*818c8321SRex-BC Chen property to make sure mediatek cci is ready. 28*818c8321SRex-BC Chen For details of mediatek cci, please refer to 29*818c8321SRex-BC Chen Documentation/devicetree/bindings/interconnect/mediatek,cci.yaml 30bb33270cSSean Wang- #cooling-cells: 31cff1d293SAmit Kucheria For details, please refer to 32cff1d293SAmit Kucheria Documentation/devicetree/bindings/thermal/thermal-cooling-devices.yaml 337e17ae86SSean Wang 34bb33270cSSean WangExample 1 (MT7623 SoC): 35bb33270cSSean Wang 36bb33270cSSean Wang cpu_opp_table: opp_table { 37bb33270cSSean Wang compatible = "operating-points-v2"; 38bb33270cSSean Wang opp-shared; 39bb33270cSSean Wang 40bb33270cSSean Wang opp-598000000 { 41bb33270cSSean Wang opp-hz = /bits/ 64 <598000000>; 42bb33270cSSean Wang opp-microvolt = <1050000>; 43bb33270cSSean Wang }; 44bb33270cSSean Wang 45bb33270cSSean Wang opp-747500000 { 46bb33270cSSean Wang opp-hz = /bits/ 64 <747500000>; 47bb33270cSSean Wang opp-microvolt = <1050000>; 48bb33270cSSean Wang }; 49bb33270cSSean Wang 50bb33270cSSean Wang opp-1040000000 { 51bb33270cSSean Wang opp-hz = /bits/ 64 <1040000000>; 52bb33270cSSean Wang opp-microvolt = <1150000>; 53bb33270cSSean Wang }; 54bb33270cSSean Wang 55bb33270cSSean Wang opp-1196000000 { 56bb33270cSSean Wang opp-hz = /bits/ 64 <1196000000>; 57bb33270cSSean Wang opp-microvolt = <1200000>; 58bb33270cSSean Wang }; 59bb33270cSSean Wang 60bb33270cSSean Wang opp-1300000000 { 61bb33270cSSean Wang opp-hz = /bits/ 64 <1300000000>; 62bb33270cSSean Wang opp-microvolt = <1300000>; 63bb33270cSSean Wang }; 64bb33270cSSean Wang }; 65bb33270cSSean Wang 66bb33270cSSean Wang cpu0: cpu@0 { 67bb33270cSSean Wang device_type = "cpu"; 68bb33270cSSean Wang compatible = "arm,cortex-a7"; 69bb33270cSSean Wang reg = <0x0>; 70bb33270cSSean Wang clocks = <&infracfg CLK_INFRA_CPUSEL>, 71bb33270cSSean Wang <&apmixedsys CLK_APMIXED_MAINPLL>; 72bb33270cSSean Wang clock-names = "cpu", "intermediate"; 73bb33270cSSean Wang operating-points-v2 = <&cpu_opp_table>; 74bb33270cSSean Wang #cooling-cells = <2>; 75bb33270cSSean Wang }; 76bb33270cSSean Wang cpu@1 { 77bb33270cSSean Wang device_type = "cpu"; 78bb33270cSSean Wang compatible = "arm,cortex-a7"; 79bb33270cSSean Wang reg = <0x1>; 80bb33270cSSean Wang operating-points-v2 = <&cpu_opp_table>; 81bb33270cSSean Wang }; 82bb33270cSSean Wang cpu@2 { 83bb33270cSSean Wang device_type = "cpu"; 84bb33270cSSean Wang compatible = "arm,cortex-a7"; 85bb33270cSSean Wang reg = <0x2>; 86bb33270cSSean Wang operating-points-v2 = <&cpu_opp_table>; 87bb33270cSSean Wang }; 88bb33270cSSean Wang cpu@3 { 89bb33270cSSean Wang device_type = "cpu"; 90bb33270cSSean Wang compatible = "arm,cortex-a7"; 91bb33270cSSean Wang reg = <0x3>; 92bb33270cSSean Wang operating-points-v2 = <&cpu_opp_table>; 93bb33270cSSean Wang }; 94bb33270cSSean Wang 95bb33270cSSean WangExample 2 (MT8173 SoC): 96bb33270cSSean Wang cpu_opp_table_a: opp_table_a { 97bb33270cSSean Wang compatible = "operating-points-v2"; 98bb33270cSSean Wang opp-shared; 99bb33270cSSean Wang 100bb33270cSSean Wang opp-507000000 { 101bb33270cSSean Wang opp-hz = /bits/ 64 <507000000>; 102bb33270cSSean Wang opp-microvolt = <859000>; 103bb33270cSSean Wang }; 104bb33270cSSean Wang 105bb33270cSSean Wang opp-702000000 { 106bb33270cSSean Wang opp-hz = /bits/ 64 <702000000>; 107bb33270cSSean Wang opp-microvolt = <908000>; 108bb33270cSSean Wang }; 109bb33270cSSean Wang 110bb33270cSSean Wang opp-1001000000 { 111bb33270cSSean Wang opp-hz = /bits/ 64 <1001000000>; 112bb33270cSSean Wang opp-microvolt = <983000>; 113bb33270cSSean Wang }; 114bb33270cSSean Wang 115bb33270cSSean Wang opp-1105000000 { 116bb33270cSSean Wang opp-hz = /bits/ 64 <1105000000>; 117bb33270cSSean Wang opp-microvolt = <1009000>; 118bb33270cSSean Wang }; 119bb33270cSSean Wang 120bb33270cSSean Wang opp-1183000000 { 121bb33270cSSean Wang opp-hz = /bits/ 64 <1183000000>; 122bb33270cSSean Wang opp-microvolt = <1028000>; 123bb33270cSSean Wang }; 124bb33270cSSean Wang 125bb33270cSSean Wang opp-1404000000 { 126bb33270cSSean Wang opp-hz = /bits/ 64 <1404000000>; 127bb33270cSSean Wang opp-microvolt = <1083000>; 128bb33270cSSean Wang }; 129bb33270cSSean Wang 130bb33270cSSean Wang opp-1508000000 { 131bb33270cSSean Wang opp-hz = /bits/ 64 <1508000000>; 132bb33270cSSean Wang opp-microvolt = <1109000>; 133bb33270cSSean Wang }; 134bb33270cSSean Wang 135bb33270cSSean Wang opp-1573000000 { 136bb33270cSSean Wang opp-hz = /bits/ 64 <1573000000>; 137bb33270cSSean Wang opp-microvolt = <1125000>; 138bb33270cSSean Wang }; 139bb33270cSSean Wang }; 140bb33270cSSean Wang 141bb33270cSSean Wang cpu_opp_table_b: opp_table_b { 142bb33270cSSean Wang compatible = "operating-points-v2"; 143bb33270cSSean Wang opp-shared; 144bb33270cSSean Wang 145bb33270cSSean Wang opp-507000000 { 146bb33270cSSean Wang opp-hz = /bits/ 64 <507000000>; 147bb33270cSSean Wang opp-microvolt = <828000>; 148bb33270cSSean Wang }; 149bb33270cSSean Wang 150bb33270cSSean Wang opp-702000000 { 151bb33270cSSean Wang opp-hz = /bits/ 64 <702000000>; 152bb33270cSSean Wang opp-microvolt = <867000>; 153bb33270cSSean Wang }; 154bb33270cSSean Wang 155bb33270cSSean Wang opp-1001000000 { 156bb33270cSSean Wang opp-hz = /bits/ 64 <1001000000>; 157bb33270cSSean Wang opp-microvolt = <927000>; 158bb33270cSSean Wang }; 159bb33270cSSean Wang 160bb33270cSSean Wang opp-1209000000 { 161bb33270cSSean Wang opp-hz = /bits/ 64 <1209000000>; 162bb33270cSSean Wang opp-microvolt = <968000>; 163bb33270cSSean Wang }; 164bb33270cSSean Wang 165bb33270cSSean Wang opp-1404000000 { 166bb33270cSSean Wang opp-hz = /bits/ 64 <1007000000>; 167bb33270cSSean Wang opp-microvolt = <1028000>; 168bb33270cSSean Wang }; 169bb33270cSSean Wang 170bb33270cSSean Wang opp-1612000000 { 171bb33270cSSean Wang opp-hz = /bits/ 64 <1612000000>; 172bb33270cSSean Wang opp-microvolt = <1049000>; 173bb33270cSSean Wang }; 174bb33270cSSean Wang 175bb33270cSSean Wang opp-1807000000 { 176bb33270cSSean Wang opp-hz = /bits/ 64 <1807000000>; 177bb33270cSSean Wang opp-microvolt = <1089000>; 178bb33270cSSean Wang }; 179bb33270cSSean Wang 180bb33270cSSean Wang opp-1989000000 { 181bb33270cSSean Wang opp-hz = /bits/ 64 <1989000000>; 182bb33270cSSean Wang opp-microvolt = <1125000>; 183bb33270cSSean Wang }; 184bb33270cSSean Wang }; 185bb33270cSSean Wang 1867e17ae86SSean Wang cpu0: cpu@0 { 1877e17ae86SSean Wang device_type = "cpu"; 1887e17ae86SSean Wang compatible = "arm,cortex-a53"; 1897e17ae86SSean Wang reg = <0x000>; 1907e17ae86SSean Wang enable-method = "psci"; 1917e17ae86SSean Wang cpu-idle-states = <&CPU_SLEEP_0>; 1927e17ae86SSean Wang clocks = <&infracfg CLK_INFRA_CA53SEL>, 1937e17ae86SSean Wang <&apmixedsys CLK_APMIXED_MAINPLL>; 1947e17ae86SSean Wang clock-names = "cpu", "intermediate"; 195bb33270cSSean Wang operating-points-v2 = <&cpu_opp_table_a>; 1967e17ae86SSean Wang }; 1977e17ae86SSean Wang 1987e17ae86SSean Wang cpu1: cpu@1 { 1997e17ae86SSean Wang device_type = "cpu"; 2007e17ae86SSean Wang compatible = "arm,cortex-a53"; 2017e17ae86SSean Wang reg = <0x001>; 2027e17ae86SSean Wang enable-method = "psci"; 2037e17ae86SSean Wang cpu-idle-states = <&CPU_SLEEP_0>; 2047e17ae86SSean Wang clocks = <&infracfg CLK_INFRA_CA53SEL>, 2057e17ae86SSean Wang <&apmixedsys CLK_APMIXED_MAINPLL>; 2067e17ae86SSean Wang clock-names = "cpu", "intermediate"; 207bb33270cSSean Wang operating-points-v2 = <&cpu_opp_table_a>; 2087e17ae86SSean Wang }; 2097e17ae86SSean Wang 2107e17ae86SSean Wang cpu2: cpu@100 { 2117e17ae86SSean Wang device_type = "cpu"; 2129821a195SSeiya Wang compatible = "arm,cortex-a72"; 2137e17ae86SSean Wang reg = <0x100>; 2147e17ae86SSean Wang enable-method = "psci"; 2157e17ae86SSean Wang cpu-idle-states = <&CPU_SLEEP_0>; 2169821a195SSeiya Wang clocks = <&infracfg CLK_INFRA_CA72SEL>, 2177e17ae86SSean Wang <&apmixedsys CLK_APMIXED_MAINPLL>; 2187e17ae86SSean Wang clock-names = "cpu", "intermediate"; 219bb33270cSSean Wang operating-points-v2 = <&cpu_opp_table_b>; 2207e17ae86SSean Wang }; 2217e17ae86SSean Wang 2227e17ae86SSean Wang cpu3: cpu@101 { 2237e17ae86SSean Wang device_type = "cpu"; 2249821a195SSeiya Wang compatible = "arm,cortex-a72"; 2257e17ae86SSean Wang reg = <0x101>; 2267e17ae86SSean Wang enable-method = "psci"; 2277e17ae86SSean Wang cpu-idle-states = <&CPU_SLEEP_0>; 2289821a195SSeiya Wang clocks = <&infracfg CLK_INFRA_CA72SEL>, 2297e17ae86SSean Wang <&apmixedsys CLK_APMIXED_MAINPLL>; 2307e17ae86SSean Wang clock-names = "cpu", "intermediate"; 231bb33270cSSean Wang operating-points-v2 = <&cpu_opp_table_b>; 2327e17ae86SSean Wang }; 2337e17ae86SSean Wang 2347e17ae86SSean Wang &cpu0 { 2357e17ae86SSean Wang proc-supply = <&mt6397_vpca15_reg>; 2367e17ae86SSean Wang }; 2377e17ae86SSean Wang 2387e17ae86SSean Wang &cpu1 { 2397e17ae86SSean Wang proc-supply = <&mt6397_vpca15_reg>; 2407e17ae86SSean Wang }; 2417e17ae86SSean Wang 2427e17ae86SSean Wang &cpu2 { 2437e17ae86SSean Wang proc-supply = <&da9211_vcpu_reg>; 2447e17ae86SSean Wang sram-supply = <&mt6397_vsramca7_reg>; 2457e17ae86SSean Wang }; 2467e17ae86SSean Wang 2477e17ae86SSean Wang &cpu3 { 2487e17ae86SSean Wang proc-supply = <&da9211_vcpu_reg>; 2497e17ae86SSean Wang sram-supply = <&mt6397_vsramca7_reg>; 2507e17ae86SSean Wang }; 251