1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2022, Linaro Limited
4 */
5
6#include "msm8996.dtsi"
7
8/ {
9	/delete-node/ opp-table-cluster0;
10	/delete-node/ opp-table-cluster1;
11
12	/*
13	 * On MSM8996 Pro the cpufreq driver shifts speed bins into the high
14	 * nibble of supported hw, so speed bin 0 becomes 0x10, speed bin 1
15	 * becomes 0x20, speed 2 becomes 0x40.
16	 */
17
18	cluster0_opp: opp-table-cluster0 {
19		compatible = "operating-points-v2-kryo-cpu";
20		nvmem-cells = <&speedbin_efuse>;
21		opp-shared;
22
23		opp-307200000 {
24			opp-hz = /bits/ 64 <307200000>;
25			opp-supported-hw = <0x70>;
26			clock-latency-ns = <200000>;
27			opp-peak-kBps = <192000>;
28		};
29		opp-384000000 {
30			opp-hz = /bits/ 64 <384000000>;
31			opp-supported-hw = <0x70>;
32			clock-latency-ns = <200000>;
33			opp-peak-kBps = <192000>;
34		};
35		opp-460800000 {
36			opp-hz = /bits/ 64 <460800000>;
37			opp-supported-hw = <0x70>;
38			clock-latency-ns = <200000>;
39			opp-peak-kBps = <192000>;
40		};
41		opp-537600000 {
42			opp-hz = /bits/ 64 <537600000>;
43			opp-supported-hw = <0x70>;
44			clock-latency-ns = <200000>;
45			opp-peak-kBps = <192000>;
46		};
47		opp-614400000 {
48			opp-hz = /bits/ 64 <614400000>;
49			opp-supported-hw = <0x70>;
50			clock-latency-ns = <200000>;
51			opp-peak-kBps = <192000>;
52		};
53		opp-691200000 {
54			opp-hz = /bits/ 64 <691200000>;
55			opp-supported-hw = <0x70>;
56			clock-latency-ns = <200000>;
57			opp-peak-kBps = <307200>;
58		};
59		opp-768000000 {
60			opp-hz = /bits/ 64 <768000000>;
61			opp-supported-hw = <0x70>;
62			clock-latency-ns = <200000>;
63			opp-peak-kBps = <307200>;
64		};
65		opp-844800000 {
66			opp-hz = /bits/ 64 <844800000>;
67			opp-supported-hw = <0x70>;
68			clock-latency-ns = <200000>;
69			opp-peak-kBps = <384000>;
70		};
71		opp-902400000 {
72			opp-hz = /bits/ 64 <902400000>;
73			opp-supported-hw = <0x70>;
74			clock-latency-ns = <200000>;
75			opp-peak-kBps = <441600>;
76		};
77		opp-979200000 {
78			opp-hz = /bits/ 64 <979200000>;
79			opp-supported-hw = <0x70>;
80			clock-latency-ns = <200000>;
81			opp-peak-kBps = <537600>;
82		};
83		opp-1056000000 {
84			opp-hz = /bits/ 64 <1056000000>;
85			opp-supported-hw = <0x70>;
86			clock-latency-ns = <200000>;
87			opp-peak-kBps = <614400>;
88		};
89		opp-1132800000 {
90			opp-hz = /bits/ 64 <1132800000>;
91			opp-supported-hw = <0x70>;
92			clock-latency-ns = <200000>;
93			opp-peak-kBps = <691200>;
94		};
95		opp-1209600000 {
96			opp-hz = /bits/ 64 <1209600000>;
97			opp-supported-hw = <0x70>;
98			clock-latency-ns = <200000>;
99			opp-peak-kBps = <768000>;
100		};
101		opp-1286400000 {
102			opp-hz = /bits/ 64 <1286400000>;
103			opp-supported-hw = <0x70>;
104			clock-latency-ns = <200000>;
105			opp-peak-kBps = <844800>;
106		};
107		opp-1363200000 {
108			opp-hz = /bits/ 64 <1363200000>;
109			opp-supported-hw = <0x70>;
110			clock-latency-ns = <200000>;
111			opp-peak-kBps = <902400>;
112		};
113		opp-1440000000 {
114			opp-hz = /bits/ 64 <1440000000>;
115			opp-supported-hw = <0x70>;
116			clock-latency-ns = <200000>;
117			opp-peak-kBps = <979200>;
118		};
119		opp-1516800000 {
120			opp-hz = /bits/ 64 <1516800000>;
121			opp-supported-hw = <0x70>;
122			clock-latency-ns = <200000>;
123			opp-peak-kBps = <1132800>;
124		};
125		opp-1593600000 {
126			opp-hz = /bits/ 64 <1593600000>;
127			opp-supported-hw = <0x70>;
128			clock-latency-ns = <200000>;
129			opp-peak-kBps = <1190400>;
130		};
131		opp-1996800000 {
132			opp-hz = /bits/ 64 <1996800000>;
133			opp-supported-hw = <0x20>;
134			clock-latency-ns = <200000>;
135			opp-peak-kBps = <1516800>;
136		};
137		opp-2188800000 {
138			opp-hz = /bits/ 64 <2188800000>;
139			opp-supported-hw = <0x10>;
140			clock-latency-ns = <200000>;
141			opp-peak-kBps = <1593600>;
142		};
143	};
144
145	cluster1_opp: opp-table-cluster1 {
146		compatible = "operating-points-v2-kryo-cpu";
147		nvmem-cells = <&speedbin_efuse>;
148		opp-shared;
149
150		opp-307200000 {
151			opp-hz = /bits/ 64 <307200000>;
152			opp-supported-hw = <0x70>;
153			clock-latency-ns = <200000>;
154			opp-peak-kBps = <192000>;
155		};
156		opp-384000000 {
157			opp-hz = /bits/ 64 <384000000>;
158			opp-supported-hw = <0x70>;
159			clock-latency-ns = <200000>;
160			opp-peak-kBps = <192000>;
161		};
162		opp-460800000 {
163			opp-hz = /bits/ 64 <460800000>;
164			opp-supported-hw = <0x70>;
165			clock-latency-ns = <200000>;
166			opp-peak-kBps = <192000>;
167		};
168		opp-537600000 {
169			opp-hz = /bits/ 64 <537600000>;
170			opp-supported-hw = <0x70>;
171			clock-latency-ns = <200000>;
172			opp-peak-kBps = <192000>;
173		};
174		opp-614400000 {
175			opp-hz = /bits/ 64 <614400000>;
176			opp-supported-hw = <0x70>;
177			clock-latency-ns = <200000>;
178			opp-peak-kBps = <192000>;
179		};
180		opp-691200000 {
181			opp-hz = /bits/ 64 <691200000>;
182			opp-supported-hw = <0x70>;
183			clock-latency-ns = <200000>;
184			opp-peak-kBps = <307200>;
185		};
186		opp-748800000 {
187			opp-hz = /bits/ 64 <748800000>;
188			opp-supported-hw = <0x70>;
189			clock-latency-ns = <200000>;
190			opp-peak-kBps = <307200>;
191		};
192		opp-825600000 {
193			opp-hz = /bits/ 64 <825600000>;
194			opp-supported-hw = <0x70>;
195			clock-latency-ns = <200000>;
196			opp-peak-kBps = <384000>;
197		};
198		opp-902400000 {
199			opp-hz = /bits/ 64 <902400000>;
200			opp-supported-hw = <0x70>;
201			clock-latency-ns = <200000>;
202			opp-peak-kBps = <441600>;
203		};
204		opp-979200000 {
205			opp-hz = /bits/ 64 <979200000>;
206			opp-supported-hw = <0x70>;
207			clock-latency-ns = <200000>;
208			opp-peak-kBps = <441600>;
209		};
210		opp-1056000000 {
211			opp-hz = /bits/ 64 <1056000000>;
212			opp-supported-hw = <0x70>;
213			clock-latency-ns = <200000>;
214			opp-peak-kBps = <537600>;
215		};
216		opp-1132800000 {
217			opp-hz = /bits/ 64 <1132800000>;
218			opp-supported-hw = <0x70>;
219			clock-latency-ns = <200000>;
220			opp-peak-kBps = <614400>;
221		};
222		opp-1209600000 {
223			opp-hz = /bits/ 64 <1209600000>;
224			opp-supported-hw = <0x70>;
225			clock-latency-ns = <200000>;
226			opp-peak-kBps = <691200>;
227		};
228		opp-1286400000 {
229			opp-hz = /bits/ 64 <1286400000>;
230			opp-supported-hw = <0x70>;
231			clock-latency-ns = <200000>;
232			opp-peak-kBps = <768000>;
233		};
234		opp-1363200000 {
235			opp-hz = /bits/ 64 <1363200000>;
236			opp-supported-hw = <0x70>;
237			clock-latency-ns = <200000>;
238			opp-peak-kBps = <844800>;
239		};
240		opp-1440000000 {
241			opp-hz = /bits/ 64 <1440000000>;
242			opp-supported-hw = <0x70>;
243			clock-latency-ns = <200000>;
244			opp-peak-kBps = <902400>;
245		};
246		opp-1516800000 {
247			opp-hz = /bits/ 64 <1516800000>;
248			opp-supported-hw = <0x70>;
249			clock-latency-ns = <200000>;
250			opp-peak-kBps = <979200>;
251		};
252		opp-1593600000 {
253			opp-hz = /bits/ 64 <1593600000>;
254			opp-supported-hw = <0x70>;
255			clock-latency-ns = <200000>;
256			opp-peak-kBps = <1056000>;
257		};
258		opp-1670400000 {
259			opp-hz = /bits/ 64 <1670400000>;
260			opp-supported-hw = <0x70>;
261			clock-latency-ns = <200000>;
262			opp-peak-kBps = <1132800>;
263		};
264		opp-1747200000 {
265			opp-hz = /bits/ 64 <1747200000>;
266			opp-supported-hw = <0x70>;
267			clock-latency-ns = <200000>;
268			opp-peak-kBps = <1190400>;
269		};
270		opp-1824000000 {
271			opp-hz = /bits/ 64 <1824000000>;
272			opp-supported-hw = <0x70>;
273			clock-latency-ns = <200000>;
274			opp-peak-kBps = <1286400>;
275		};
276		opp-1900800000 {
277			opp-hz = /bits/ 64 <1900800000>;
278			opp-supported-hw = <0x70>;
279			clock-latency-ns = <200000>;
280			opp-peak-kBps = <1363200>;
281		};
282		opp-1977600000 {
283			opp-hz = /bits/ 64 <1977600000>;
284			opp-supported-hw = <0x30>;
285			clock-latency-ns = <200000>;
286			opp-peak-kBps = <1440000>;
287		};
288		opp-2054400000 {
289			opp-hz = /bits/ 64 <2054400000>;
290			opp-supported-hw = <0x30>;
291			clock-latency-ns = <200000>;
292			opp-peak-kBps = <1516800>;
293		};
294		opp-2150400000 {
295			opp-hz = /bits/ 64 <2150400000>;
296			opp-supported-hw = <0x30>;
297			clock-latency-ns = <200000>;
298			opp-peak-kBps = <1593600>;
299		};
300		opp-2246400000 {
301			opp-hz = /bits/ 64 <2246400000>;
302			opp-supported-hw = <0x10>;
303			clock-latency-ns = <200000>;
304			opp-peak-kBps = <1593600>;
305		};
306		opp-2342400000 {
307			opp-hz = /bits/ 64 <2342400000>;
308			opp-supported-hw = <0x10>;
309			clock-latency-ns = <200000>;
310			opp-peak-kBps = <1593600>;
311		};
312	};
313};
314
315&gpu_opp_table {
316	/*
317	 * Unlike CPU opp tables, the GPU driver does not shift speed bins.
318	 *
319	 * 652.8 Mhz is available on speed bin 0 only.
320	 * 624 Mhz and 560 Mhz are available on speed bins 0 and 1.
321	 * All the rest are available on all bins of the hardware (like on
322	 * plain 8996).
323	 */
324
325	opp-652800000 {
326		opp-hz = /bits/ 64 <652800000>;
327		opp-supported-hw = <0x01>;
328	};
329	opp-624000000 {
330		opp-hz = /bits/ 64 <624000000>;
331		opp-supported-hw = <0x03>;
332	};
333	opp-560000000 {
334		opp-hz = /bits/ 64 <560000000>;
335		opp-supported-hw = <0x03>;
336	};
337	/* The rest is inherited from msm8996 */
338};
339
340&cbf {
341	compatible = "qcom,msm8996pro-cbf";
342};
343