xref: /openbmc/linux/Documentation/devicetree/bindings/cpufreq/cpufreq-mediatek.txt (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
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