Skip to content

Commit 4b3b999

Browse files
chadmedmarcan
authored andcommitted
arm64: dts: apple: add opp-microwatt to t8103/t600x
This patch adds measured opp-microwatt values for the Firestorm and Icestorm application cores found in Apple's T8103 (M1), T6000 (M1 Pro), T6001 (M1 Max) and T6002 (M1 Ultra) SoCs. Values were measured from the System Management Controller's core cluster power meter. A version of freqbench modified to read this power meter was used to orchestrate testing, running 1,000,000 iterations of coremark on a single core from each cluster at each operating point. The bulk of the testing was done on a T6000. Note that Apple calibrates voltage regulator settings for each SoC as they come off the assembly line, introducing some natural variance between machines. Testing across multiple machines with identical SoCs reveals no measurable impact on the accuracy of the EM subsystem's cost calculations. Signed-off-by: James Calligeros <[email protected]>
1 parent ff0be90 commit 4b3b999

2 files changed

Lines changed: 40 additions & 0 deletions

File tree

arch/arm64/boot/dts/apple/t600x-common.dtsi

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,26 +229,31 @@
229229
opp-hz = /bits/ 64 <600000000>;
230230
opp-level = <1>;
231231
clock-latency-ns = <7500>;
232+
opp-microwatt = <47296>;
232233
};
233234
opp02 {
234235
opp-hz = /bits/ 64 <972000000>;
235236
opp-level = <2>;
236237
clock-latency-ns = <23000>;
238+
opp-microwatt = <99715>;
237239
};
238240
opp03 {
239241
opp-hz = /bits/ 64 <1332000000>;
240242
opp-level = <3>;
241243
clock-latency-ns = <29000>;
244+
opp-microwatt = <188860>;
242245
};
243246
opp04 {
244247
opp-hz = /bits/ 64 <1704000000>;
245248
opp-level = <4>;
246249
clock-latency-ns = <40000>;
250+
opp-microwatt = <288891>;
247251
};
248252
opp05 {
249253
opp-hz = /bits/ 64 <2064000000>;
250254
opp-level = <5>;
251255
clock-latency-ns = <50000>;
256+
opp-microwatt = <412979>;
252257
};
253258
};
254259

@@ -259,78 +264,93 @@
259264
opp-hz = /bits/ 64 <600000000>;
260265
opp-level = <1>;
261266
clock-latency-ns = <8000>;
267+
opp-microwatt = <290230>;
262268
};
263269
opp02 {
264270
opp-hz = /bits/ 64 <828000000>;
265271
opp-level = <2>;
266272
clock-latency-ns = <18000>;
273+
opp-microwatt = <449013>;
267274
};
268275
opp03 {
269276
opp-hz = /bits/ 64 <1056000000>;
270277
opp-level = <3>;
271278
clock-latency-ns = <19000>;
279+
opp-microwatt = <647097>;
272280
};
273281
opp04 {
274282
opp-hz = /bits/ 64 <1296000000>;
275283
opp-level = <4>;
276284
clock-latency-ns = <23000>;
285+
opp-microwatt = <865620>;
277286
};
278287
opp05 {
279288
opp-hz = /bits/ 64 <1524000000>;
280289
opp-level = <5>;
281290
clock-latency-ns = <24000>;
291+
opp-microwatt = <1112838>;
282292
};
283293
opp06 {
284294
opp-hz = /bits/ 64 <1752000000>;
285295
opp-level = <6>;
286296
clock-latency-ns = <28000>;
297+
opp-microwatt = <1453271>;
287298
};
288299
opp07 {
289300
opp-hz = /bits/ 64 <1980000000>;
290301
opp-level = <7>;
291302
clock-latency-ns = <31000>;
303+
opp-microwatt = <1776667>;
292304
};
293305
opp08 {
294306
opp-hz = /bits/ 64 <2208000000>;
295307
opp-level = <8>;
296308
clock-latency-ns = <45000>;
309+
opp-microwatt = <2366690>;
297310
};
298311
opp09 {
299312
opp-hz = /bits/ 64 <2448000000>;
300313
opp-level = <9>;
301314
clock-latency-ns = <49000>;
315+
opp-microwatt = <2892193>;
302316
};
303317
opp10 {
304318
opp-hz = /bits/ 64 <2676000000>;
305319
opp-level = <10>;
306320
clock-latency-ns = <53000>;
321+
opp-microwatt = <3475417>;
307322
};
308323
opp11 {
309324
opp-hz = /bits/ 64 <2904000000>;
310325
opp-level = <11>;
311326
clock-latency-ns = <56000>;
327+
opp-microwatt = <3959410>;
312328
};
313329
opp12 {
314330
opp-hz = /bits/ 64 <3036000000>;
315331
opp-level = <12>;
316332
clock-latency-ns = <56000>;
333+
opp-microwatt = <4540620>;
317334
};
318335
opp13 {
319336
opp-hz = /bits/ 64 <3132000000>;
320337
opp-level = <13>;
321338
clock-latency-ns = <56000>;
339+
opp-microwatt = <4745031>;
322340
turbo-mode;
323341
};
324342
opp14 {
325343
opp-hz = /bits/ 64 <3168000000>;
326344
opp-level = <14>;
327345
clock-latency-ns = <56000>;
346+
opp-microwatt = <4822390>;
328347
turbo-mode;
329348
};
330349
opp15 {
331350
opp-hz = /bits/ 64 <3228000000>;
332351
opp-level = <15>;
333352
clock-latency-ns = <56000>;
353+
opp-microwatt = <4951324>;
334354
turbo-mode;
335355
};
336356
};

arch/arm64/boot/dts/apple/t8103.dtsi

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,26 +194,31 @@
194194
opp-hz = /bits/ 64 <600000000>;
195195
opp-level = <1>;
196196
clock-latency-ns = <7500>;
197+
opp-microwatt = <47296>;
197198
};
198199
opp02 {
199200
opp-hz = /bits/ 64 <972000000>;
200201
opp-level = <2>;
201202
clock-latency-ns = <22000>;
203+
opp-microwatt = <99715>;
202204
};
203205
opp03 {
204206
opp-hz = /bits/ 64 <1332000000>;
205207
opp-level = <3>;
206208
clock-latency-ns = <27000>;
209+
opp-microwatt = <188860>;
207210
};
208211
opp04 {
209212
opp-hz = /bits/ 64 <1704000000>;
210213
opp-level = <4>;
211214
clock-latency-ns = <33000>;
215+
opp-microwatt = <288891>;
212216
};
213217
opp05 {
214218
opp-hz = /bits/ 64 <2064000000>;
215219
opp-level = <5>;
216220
clock-latency-ns = <50000>;
221+
opp-microwatt = <412979>;
217222
};
218223
};
219224

@@ -224,79 +229,94 @@
224229
opp-hz = /bits/ 64 <600000000>;
225230
opp-level = <1>;
226231
clock-latency-ns = <8000>;
232+
opp-microwatt = <290230>;
227233
};
228234
opp02 {
229235
opp-hz = /bits/ 64 <828000000>;
230236
opp-level = <2>;
231237
clock-latency-ns = <19000>;
238+
opp-microwatt = <449013>;
232239
};
233240
opp03 {
234241
opp-hz = /bits/ 64 <1056000000>;
235242
opp-level = <3>;
236243
clock-latency-ns = <21000>;
244+
opp-microwatt = <647097>;
237245
};
238246
opp04 {
239247
opp-hz = /bits/ 64 <1284000000>;
240248
opp-level = <4>;
241249
clock-latency-ns = <23000>;
250+
opp-microwatt = <865620>;
242251
};
243252
opp05 {
244253
opp-hz = /bits/ 64 <1500000000>;
245254
opp-level = <5>;
246255
clock-latency-ns = <24000>;
256+
opp-microwatt = <1112838>;
247257
};
248258
opp06 {
249259
opp-hz = /bits/ 64 <1728000000>;
250260
opp-level = <6>;
251261
clock-latency-ns = <29000>;
262+
opp-microwatt = <1453271>;
252263
};
253264
opp07 {
254265
opp-hz = /bits/ 64 <1956000000>;
255266
opp-level = <7>;
256267
clock-latency-ns = <31000>;
268+
opp-microwatt = <1776667>;
257269
};
258270
opp08 {
259271
opp-hz = /bits/ 64 <2184000000>;
260272
opp-level = <8>;
261273
clock-latency-ns = <34000>;
274+
opp-microwatt = <2366690>;
262275
};
263276
opp09 {
264277
opp-hz = /bits/ 64 <2388000000>;
265278
opp-level = <9>;
266279
clock-latency-ns = <36000>;
280+
opp-microwatt = <2892193>;
267281
};
268282
opp10 {
269283
opp-hz = /bits/ 64 <2592000000>;
270284
opp-level = <10>;
271285
clock-latency-ns = <51000>;
286+
opp-microwatt = <3475417>;
272287
};
273288
opp11 {
274289
opp-hz = /bits/ 64 <2772000000>;
275290
opp-level = <11>;
276291
clock-latency-ns = <54000>;
292+
opp-microwatt = <3959410>;
277293
};
278294
opp12 {
279295
opp-hz = /bits/ 64 <2988000000>;
280296
opp-level = <12>;
281297
clock-latency-ns = <55000>;
298+
opp-microwatt = <4540620>;
282299
};
283300
/* Not available until CPU deep sleep is implemented */
284301
opp13 {
285302
opp-hz = /bits/ 64 <3096000000>;
286303
opp-level = <13>;
287304
clock-latency-ns = <55000>;
305+
opp-microwatt = <4745031>;
288306
turbo-mode;
289307
};
290308
opp14 {
291309
opp-hz = /bits/ 64 <3144000000>;
292310
opp-level = <14>;
293311
clock-latency-ns = <56000>;
312+
opp-microwatt = <4822390>;
294313
turbo-mode;
295314
};
296315
opp15 {
297316
opp-hz = /bits/ 64 <3204000000>;
298317
opp-level = <15>;
299318
clock-latency-ns = <56000>;
319+
opp-microwatt = <4951324>;
300320
turbo-mode;
301321
};
302322
};

0 commit comments

Comments
 (0)