162306a36Sopenharmony_ciBinding for MediaTek's CPUFreq driver 262306a36Sopenharmony_ci===================================== 362306a36Sopenharmony_ci 462306a36Sopenharmony_ciRequired properties: 562306a36Sopenharmony_ci- clocks: A list of phandle + clock-specifier pairs for the clocks listed in clock names. 662306a36Sopenharmony_ci- clock-names: Should contain the following: 762306a36Sopenharmony_ci "cpu" - The multiplexer for clock input of CPU cluster. 862306a36Sopenharmony_ci "intermediate" - A parent of "cpu" clock which is used as "intermediate" clock 962306a36Sopenharmony_ci source (usually MAINPLL) when the original CPU PLL is under 1062306a36Sopenharmony_ci transition and not stable yet. 1162306a36Sopenharmony_ci Please refer to Documentation/devicetree/bindings/clock/clock-bindings.txt for 1262306a36Sopenharmony_ci generic clock consumer properties. 1362306a36Sopenharmony_ci- operating-points-v2: Please refer to Documentation/devicetree/bindings/opp/opp-v2.yaml 1462306a36Sopenharmony_ci for detail. 1562306a36Sopenharmony_ci- proc-supply: Regulator for Vproc of CPU cluster. 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ciOptional properties: 1862306a36Sopenharmony_ci- sram-supply: Regulator for Vsram of CPU cluster. When present, the cpufreq driver 1962306a36Sopenharmony_ci needs to do "voltage tracking" to step by step scale up/down Vproc and 2062306a36Sopenharmony_ci Vsram to fit SoC specific needs. When absent, the voltage scaling 2162306a36Sopenharmony_ci flow is handled by hardware, hence no software "voltage tracking" is 2262306a36Sopenharmony_ci needed. 2362306a36Sopenharmony_ci- mediatek,cci: 2462306a36Sopenharmony_ci Used to confirm the link status between cpufreq and mediatek cci. Because 2562306a36Sopenharmony_ci cpufreq and mediatek cci could share the same regulator in some MediaTek SoCs. 2662306a36Sopenharmony_ci To prevent the issue of high frequency and low voltage, we need to use this 2762306a36Sopenharmony_ci property to make sure mediatek cci is ready. 2862306a36Sopenharmony_ci For details of mediatek cci, please refer to 2962306a36Sopenharmony_ci Documentation/devicetree/bindings/interconnect/mediatek,cci.yaml 3062306a36Sopenharmony_ci- #cooling-cells: 3162306a36Sopenharmony_ci For details, please refer to 3262306a36Sopenharmony_ci Documentation/devicetree/bindings/thermal/thermal-cooling-devices.yaml 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ciExample 1 (MT7623 SoC): 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci cpu_opp_table: opp_table { 3762306a36Sopenharmony_ci compatible = "operating-points-v2"; 3862306a36Sopenharmony_ci opp-shared; 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci opp-598000000 { 4162306a36Sopenharmony_ci opp-hz = /bits/ 64 <598000000>; 4262306a36Sopenharmony_ci opp-microvolt = <1050000>; 4362306a36Sopenharmony_ci }; 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci opp-747500000 { 4662306a36Sopenharmony_ci opp-hz = /bits/ 64 <747500000>; 4762306a36Sopenharmony_ci opp-microvolt = <1050000>; 4862306a36Sopenharmony_ci }; 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci opp-1040000000 { 5162306a36Sopenharmony_ci opp-hz = /bits/ 64 <1040000000>; 5262306a36Sopenharmony_ci opp-microvolt = <1150000>; 5362306a36Sopenharmony_ci }; 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci opp-1196000000 { 5662306a36Sopenharmony_ci opp-hz = /bits/ 64 <1196000000>; 5762306a36Sopenharmony_ci opp-microvolt = <1200000>; 5862306a36Sopenharmony_ci }; 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci opp-1300000000 { 6162306a36Sopenharmony_ci opp-hz = /bits/ 64 <1300000000>; 6262306a36Sopenharmony_ci opp-microvolt = <1300000>; 6362306a36Sopenharmony_ci }; 6462306a36Sopenharmony_ci }; 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci cpu0: cpu@0 { 6762306a36Sopenharmony_ci device_type = "cpu"; 6862306a36Sopenharmony_ci compatible = "arm,cortex-a7"; 6962306a36Sopenharmony_ci reg = <0x0>; 7062306a36Sopenharmony_ci clocks = <&infracfg CLK_INFRA_CPUSEL>, 7162306a36Sopenharmony_ci <&apmixedsys CLK_APMIXED_MAINPLL>; 7262306a36Sopenharmony_ci clock-names = "cpu", "intermediate"; 7362306a36Sopenharmony_ci operating-points-v2 = <&cpu_opp_table>; 7462306a36Sopenharmony_ci #cooling-cells = <2>; 7562306a36Sopenharmony_ci }; 7662306a36Sopenharmony_ci cpu@1 { 7762306a36Sopenharmony_ci device_type = "cpu"; 7862306a36Sopenharmony_ci compatible = "arm,cortex-a7"; 7962306a36Sopenharmony_ci reg = <0x1>; 8062306a36Sopenharmony_ci operating-points-v2 = <&cpu_opp_table>; 8162306a36Sopenharmony_ci }; 8262306a36Sopenharmony_ci cpu@2 { 8362306a36Sopenharmony_ci device_type = "cpu"; 8462306a36Sopenharmony_ci compatible = "arm,cortex-a7"; 8562306a36Sopenharmony_ci reg = <0x2>; 8662306a36Sopenharmony_ci operating-points-v2 = <&cpu_opp_table>; 8762306a36Sopenharmony_ci }; 8862306a36Sopenharmony_ci cpu@3 { 8962306a36Sopenharmony_ci device_type = "cpu"; 9062306a36Sopenharmony_ci compatible = "arm,cortex-a7"; 9162306a36Sopenharmony_ci reg = <0x3>; 9262306a36Sopenharmony_ci operating-points-v2 = <&cpu_opp_table>; 9362306a36Sopenharmony_ci }; 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ciExample 2 (MT8173 SoC): 9662306a36Sopenharmony_ci cpu_opp_table_a: opp_table_a { 9762306a36Sopenharmony_ci compatible = "operating-points-v2"; 9862306a36Sopenharmony_ci opp-shared; 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_ci opp-507000000 { 10162306a36Sopenharmony_ci opp-hz = /bits/ 64 <507000000>; 10262306a36Sopenharmony_ci opp-microvolt = <859000>; 10362306a36Sopenharmony_ci }; 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ci opp-702000000 { 10662306a36Sopenharmony_ci opp-hz = /bits/ 64 <702000000>; 10762306a36Sopenharmony_ci opp-microvolt = <908000>; 10862306a36Sopenharmony_ci }; 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ci opp-1001000000 { 11162306a36Sopenharmony_ci opp-hz = /bits/ 64 <1001000000>; 11262306a36Sopenharmony_ci opp-microvolt = <983000>; 11362306a36Sopenharmony_ci }; 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci opp-1105000000 { 11662306a36Sopenharmony_ci opp-hz = /bits/ 64 <1105000000>; 11762306a36Sopenharmony_ci opp-microvolt = <1009000>; 11862306a36Sopenharmony_ci }; 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ci opp-1183000000 { 12162306a36Sopenharmony_ci opp-hz = /bits/ 64 <1183000000>; 12262306a36Sopenharmony_ci opp-microvolt = <1028000>; 12362306a36Sopenharmony_ci }; 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ci opp-1404000000 { 12662306a36Sopenharmony_ci opp-hz = /bits/ 64 <1404000000>; 12762306a36Sopenharmony_ci opp-microvolt = <1083000>; 12862306a36Sopenharmony_ci }; 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ci opp-1508000000 { 13162306a36Sopenharmony_ci opp-hz = /bits/ 64 <1508000000>; 13262306a36Sopenharmony_ci opp-microvolt = <1109000>; 13362306a36Sopenharmony_ci }; 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci opp-1573000000 { 13662306a36Sopenharmony_ci opp-hz = /bits/ 64 <1573000000>; 13762306a36Sopenharmony_ci opp-microvolt = <1125000>; 13862306a36Sopenharmony_ci }; 13962306a36Sopenharmony_ci }; 14062306a36Sopenharmony_ci 14162306a36Sopenharmony_ci cpu_opp_table_b: opp_table_b { 14262306a36Sopenharmony_ci compatible = "operating-points-v2"; 14362306a36Sopenharmony_ci opp-shared; 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_ci opp-507000000 { 14662306a36Sopenharmony_ci opp-hz = /bits/ 64 <507000000>; 14762306a36Sopenharmony_ci opp-microvolt = <828000>; 14862306a36Sopenharmony_ci }; 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ci opp-702000000 { 15162306a36Sopenharmony_ci opp-hz = /bits/ 64 <702000000>; 15262306a36Sopenharmony_ci opp-microvolt = <867000>; 15362306a36Sopenharmony_ci }; 15462306a36Sopenharmony_ci 15562306a36Sopenharmony_ci opp-1001000000 { 15662306a36Sopenharmony_ci opp-hz = /bits/ 64 <1001000000>; 15762306a36Sopenharmony_ci opp-microvolt = <927000>; 15862306a36Sopenharmony_ci }; 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci opp-1209000000 { 16162306a36Sopenharmony_ci opp-hz = /bits/ 64 <1209000000>; 16262306a36Sopenharmony_ci opp-microvolt = <968000>; 16362306a36Sopenharmony_ci }; 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci opp-1404000000 { 16662306a36Sopenharmony_ci opp-hz = /bits/ 64 <1007000000>; 16762306a36Sopenharmony_ci opp-microvolt = <1028000>; 16862306a36Sopenharmony_ci }; 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci opp-1612000000 { 17162306a36Sopenharmony_ci opp-hz = /bits/ 64 <1612000000>; 17262306a36Sopenharmony_ci opp-microvolt = <1049000>; 17362306a36Sopenharmony_ci }; 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci opp-1807000000 { 17662306a36Sopenharmony_ci opp-hz = /bits/ 64 <1807000000>; 17762306a36Sopenharmony_ci opp-microvolt = <1089000>; 17862306a36Sopenharmony_ci }; 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_ci opp-1989000000 { 18162306a36Sopenharmony_ci opp-hz = /bits/ 64 <1989000000>; 18262306a36Sopenharmony_ci opp-microvolt = <1125000>; 18362306a36Sopenharmony_ci }; 18462306a36Sopenharmony_ci }; 18562306a36Sopenharmony_ci 18662306a36Sopenharmony_ci cpu0: cpu@0 { 18762306a36Sopenharmony_ci device_type = "cpu"; 18862306a36Sopenharmony_ci compatible = "arm,cortex-a53"; 18962306a36Sopenharmony_ci reg = <0x000>; 19062306a36Sopenharmony_ci enable-method = "psci"; 19162306a36Sopenharmony_ci cpu-idle-states = <&CPU_SLEEP_0>; 19262306a36Sopenharmony_ci clocks = <&infracfg CLK_INFRA_CA53SEL>, 19362306a36Sopenharmony_ci <&apmixedsys CLK_APMIXED_MAINPLL>; 19462306a36Sopenharmony_ci clock-names = "cpu", "intermediate"; 19562306a36Sopenharmony_ci operating-points-v2 = <&cpu_opp_table_a>; 19662306a36Sopenharmony_ci }; 19762306a36Sopenharmony_ci 19862306a36Sopenharmony_ci cpu1: cpu@1 { 19962306a36Sopenharmony_ci device_type = "cpu"; 20062306a36Sopenharmony_ci compatible = "arm,cortex-a53"; 20162306a36Sopenharmony_ci reg = <0x001>; 20262306a36Sopenharmony_ci enable-method = "psci"; 20362306a36Sopenharmony_ci cpu-idle-states = <&CPU_SLEEP_0>; 20462306a36Sopenharmony_ci clocks = <&infracfg CLK_INFRA_CA53SEL>, 20562306a36Sopenharmony_ci <&apmixedsys CLK_APMIXED_MAINPLL>; 20662306a36Sopenharmony_ci clock-names = "cpu", "intermediate"; 20762306a36Sopenharmony_ci operating-points-v2 = <&cpu_opp_table_a>; 20862306a36Sopenharmony_ci }; 20962306a36Sopenharmony_ci 21062306a36Sopenharmony_ci cpu2: cpu@100 { 21162306a36Sopenharmony_ci device_type = "cpu"; 21262306a36Sopenharmony_ci compatible = "arm,cortex-a72"; 21362306a36Sopenharmony_ci reg = <0x100>; 21462306a36Sopenharmony_ci enable-method = "psci"; 21562306a36Sopenharmony_ci cpu-idle-states = <&CPU_SLEEP_0>; 21662306a36Sopenharmony_ci clocks = <&infracfg CLK_INFRA_CA72SEL>, 21762306a36Sopenharmony_ci <&apmixedsys CLK_APMIXED_MAINPLL>; 21862306a36Sopenharmony_ci clock-names = "cpu", "intermediate"; 21962306a36Sopenharmony_ci operating-points-v2 = <&cpu_opp_table_b>; 22062306a36Sopenharmony_ci }; 22162306a36Sopenharmony_ci 22262306a36Sopenharmony_ci cpu3: cpu@101 { 22362306a36Sopenharmony_ci device_type = "cpu"; 22462306a36Sopenharmony_ci compatible = "arm,cortex-a72"; 22562306a36Sopenharmony_ci reg = <0x101>; 22662306a36Sopenharmony_ci enable-method = "psci"; 22762306a36Sopenharmony_ci cpu-idle-states = <&CPU_SLEEP_0>; 22862306a36Sopenharmony_ci clocks = <&infracfg CLK_INFRA_CA72SEL>, 22962306a36Sopenharmony_ci <&apmixedsys CLK_APMIXED_MAINPLL>; 23062306a36Sopenharmony_ci clock-names = "cpu", "intermediate"; 23162306a36Sopenharmony_ci operating-points-v2 = <&cpu_opp_table_b>; 23262306a36Sopenharmony_ci }; 23362306a36Sopenharmony_ci 23462306a36Sopenharmony_ci &cpu0 { 23562306a36Sopenharmony_ci proc-supply = <&mt6397_vpca15_reg>; 23662306a36Sopenharmony_ci }; 23762306a36Sopenharmony_ci 23862306a36Sopenharmony_ci &cpu1 { 23962306a36Sopenharmony_ci proc-supply = <&mt6397_vpca15_reg>; 24062306a36Sopenharmony_ci }; 24162306a36Sopenharmony_ci 24262306a36Sopenharmony_ci &cpu2 { 24362306a36Sopenharmony_ci proc-supply = <&da9211_vcpu_reg>; 24462306a36Sopenharmony_ci sram-supply = <&mt6397_vsramca7_reg>; 24562306a36Sopenharmony_ci }; 24662306a36Sopenharmony_ci 24762306a36Sopenharmony_ci &cpu3 { 24862306a36Sopenharmony_ci proc-supply = <&da9211_vcpu_reg>; 24962306a36Sopenharmony_ci sram-supply = <&mt6397_vsramca7_reg>; 25062306a36Sopenharmony_ci }; 251