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