Skip to content

Commit 1da593f

Browse files
committed
[AArch64] Turbo Over-Drive and Turbo Boost High collected from OPP
1 parent 8b02359 commit 1da593f

File tree

8 files changed

+74
-26
lines changed

8 files changed

+74
-26
lines changed

aarch64/corefreq-api.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -347,8 +347,8 @@ typedef struct
347347
enum THERM_PWR_EVENTS Events[eDIM];
348348

349349
struct {
350-
unsigned short Minimum,
351-
Maximum;
350+
unsigned short Minimum,
351+
Maximum;
352352
} ACPI_CPPC;
353353
} PowerThermal;
354354

aarch64/corefreq-cli-json.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -749,8 +749,8 @@ void JsonSysInfo(RO(SHM_STRUCT) *RO(Shm))
749749
json_literal(&s, "%u", RO(Shm)->Proc.Features.TDP_Cfg_Lock);
750750
json_key(&s, "TDP_Cfg_Level");
751751
json_literal(&s, "%u", RO(Shm)->Proc.Features.TDP_Cfg_Level);
752-
json_key(&s, "TurboActivation_Lock");
753-
json_literal(&s, "%u", RO(Shm)->Proc.Features.TurboActiv_Lock);
752+
json_key(&s, "Turbo_OPP");
753+
json_literal(&s, "%u", RO(Shm)->Proc.Features.Turbo_OPP);
754754
json_key(&s, "TargetRatio_Unlock");
755755
json_literal(&s, "%u", RO(Shm)->Proc.Features.TgtRatio_Unlock);
756756
json_key(&s, "ClockRatio_Unlock");

aarch64/corefreq-cli-rsc-en.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1672,13 +1672,15 @@
16721672

16731673
#define RSC_FREQ_UNIT_MHZ_CODE "(MHz)"
16741674
#define RSC_PPIN_CODE "PPIN#"
1675-
#define RSC_PSTATE_CODE "P-State"
1675+
#define RSC_OPP_CODE "OPP"
16761676
#define RSC_UNCORE_CODE "Uncore"
1677-
#define RSC_BOOST_CODE "Turbo Boost"
1677+
#define RSC_TURBO_CODE "Turbo"
16781678
#define RSC_CPPC_CODE "CPPC"
16791679
#define RSC_MAX_CODE "Max"
16801680
#define RSC_MIN_CODE "Min"
16811681
#define RSC_TGT_CODE "TGT"
1682+
#define RSC_TBH_CODE "TBH"
1683+
#define RSC_TBO_CODE "TBO"
16821684
#define RSC_ACT_CODE "Activ"
16831685
#define RSC_HYBRID_CODE "Hybrid"
16841686

aarch64/corefreq-cli-rsc.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -529,13 +529,15 @@ RESOURCE_ST Resource[] = {
529529
LDQ(RSC_SYSGATE),
530530
LDQ(RSC_FREQ_UNIT_MHZ),
531531
LDQ(RSC_PPIN),
532-
LDQ(RSC_PSTATE),
532+
LDQ(RSC_OPP),
533533
LDQ(RSC_UNCORE),
534-
LDQ(RSC_BOOST),
534+
LDQ(RSC_TURBO),
535535
LDQ(RSC_CPPC),
536536
LDQ(RSC_MAX),
537537
LDQ(RSC_MIN),
538538
LDQ(RSC_TGT),
539+
LDQ(RSC_TBH),
540+
LDQ(RSC_TBO),
539541
LDQ(RSC_ACT),
540542
LDT(RSC_SCOPE_NONE),
541543
LDT(RSC_SCOPE_THREAD),

aarch64/corefreq-cli-rsc.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -352,13 +352,15 @@ enum {
352352
RSC_SYSGATE,
353353
RSC_FREQ_UNIT_MHZ,
354354
RSC_PPIN,
355-
RSC_PSTATE,
355+
RSC_OPP,
356356
RSC_UNCORE,
357-
RSC_BOOST,
357+
RSC_TURBO,
358358
RSC_CPPC,
359359
RSC_MAX,
360360
RSC_MIN,
361361
RSC_TGT,
362+
RSC_TBH,
363+
RSC_TBO,
362364
RSC_ACT,
363365
RSC_SCOPE_NONE,
364366
RSC_SCOPE_THREAD,

aarch64/corefreq-cli.c

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1211,8 +1211,6 @@ REASON_CODE SysInfoProc(Window *win,
12111211

12121212
PUT(SCANKEY_NULL, attrib[0], width, 2, "%s", RSC(PERFORMANCE).CODE());
12131213

1214-
PUT(SCANKEY_NULL, attrib[0], width, 3, "%s", RSC(PSTATE).CODE());
1215-
12161214
coreClock = (CLOCK_ARG) {.NC = 0, .Offset = 0};
12171215

12181216
coreClock.NC = BOXKEY_RATIO_CLOCK_OR | CLOCK_MOD_TGT;
@@ -1231,7 +1229,7 @@ REASON_CODE SysInfoProc(Window *win,
12311229
1, coreClock.ullong,
12321230
width, OutFunc, cellPadding, attrib[3] ),
12331231
RefreshTopFreq, BOOST(TGT) );
1234-
1232+
/* Section Mark */
12351233
if ((RO(Shm)->Proc.Features.HWP_Enable == 1)
12361234
|| (RO(Shm)->Proc.Features.ACPI_CPPC == 1))
12371235
{
@@ -1290,12 +1288,48 @@ REASON_CODE SysInfoProc(Window *win,
12901288
width, OutFunc, cellPadding, attrib[3] ),
12911289
RefreshTopFreq, BOOST(HWP_TGT) );
12921290
}
1291+
/* Section Mark */
1292+
if (RO(Shm)->Proc.Features.Turbo_OPP == 1)
1293+
{
12931294
PUT( SCANKEY_NULL, attrib[RO(Shm)->Proc.Features.Turbo_Unlock],
1294-
width, 2, "%s%.*s[%7.*s]", RSC(BOOST).CODE(),
1295-
width - 12 - RSZ(BOOST), hSpace, 6,
1295+
width, 2, "%s%.*s[%7.*s]", RSC(TURBO).CODE(),
1296+
width - 12 - RSZ(TURBO), hSpace, 6,
12961297
RO(Shm)->Proc.Features.Turbo_Unlock ?
12971298
RSC(UNLOCK).CODE() : RSC(LOCK).CODE() );
12981299

1300+
CFlop = &RO(Shm)->Cpu[
1301+
Ruler.Top[ BOOST(TBH) ]
1302+
].FlipFlop[
1303+
!RO(Shm)->Cpu[ Ruler.Top[ BOOST(TBH) ] ].Toggle
1304+
];
1305+
1306+
GridCall( PrintRatioFreq(win, CFlop,
1307+
0, (char*) RSC(TBH).CODE(),
1308+
&RO(Shm)->Cpu[
1309+
Ruler.Top[ BOOST(TBH) ]
1310+
].Boost[ BOOST(TBH) ],
1311+
0, SCANKEY_NULL,
1312+
width, OutFunc, cellPadding, attrib[3] ),
1313+
RefreshTopFreq, BOOST(TBH) );
1314+
1315+
CFlop = &RO(Shm)->Cpu[
1316+
Ruler.Top[ BOOST(TBO) ]
1317+
].FlipFlop[
1318+
!RO(Shm)->Cpu[ Ruler.Top[ BOOST(TBO) ] ].Toggle
1319+
];
1320+
1321+
GridCall( PrintRatioFreq(win, CFlop,
1322+
0, (char*) RSC(TBO).CODE(),
1323+
&RO(Shm)->Cpu[
1324+
Ruler.Top[ BOOST(TBO) ]
1325+
].Boost[BOOST(TBO)],
1326+
0, SCANKEY_NULL,
1327+
width, OutFunc, cellPadding, attrib[3] ),
1328+
RefreshTopFreq, BOOST(TBO) );
1329+
}
1330+
/* Section Mark */
1331+
PUT(SCANKEY_NULL, attrib[0], width, 2, "%s", RSC(OPP).CODE());
1332+
12991333
for(boost = BOOST(1C), activeCores = 1;
13001334
boost > BOOST(1C)-(enum RATIO_BOOST)RO(Shm)->Proc.Features.SpecTurboRatio;
13011335
boost--, activeCores++)
@@ -1349,7 +1383,7 @@ REASON_CODE SysInfoProc(Window *win,
13491383
RefreshHybridFreq, boost );
13501384
}
13511385
}
1352-
1386+
/* Section Mark */
13531387
PUT( SCANKEY_NULL, attrib[RO(Shm)->Proc.Features.Uncore_Unlock],
13541388
width, 2, "%s%.*s[%7.*s]", RSC(UNCORE).CODE(),
13551389
width - 18, hSpace, 6,
@@ -7501,8 +7535,8 @@ unsigned int MultiplierIsRatio(unsigned int cpu, unsigned int multiplier)
75017535
for (boost = BOOST(MIN); boost < BOOST(SIZE); boost++)
75027536
{
75037537
switch (boost) {
7504-
case BOOST(CPB):
7505-
case BOOST(XFR):
7538+
case BOOST(TBO):
7539+
case BOOST(TBH):
75067540
fallthrough;
75077541
default:
75087542
if (RO(Shm)->Cpu[cpu].Boost[boost] == multiplier)

aarch64/corefreqk.c

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1600,7 +1600,7 @@ void Package_Init_Reset(void)
16001600
PUBLIC(RO(Proc))->Features.ClkRatio_Unlock = 0;
16011601
PUBLIC(RO(Proc))->Features.TDP_Unlock = 0;
16021602
PUBLIC(RO(Proc))->Features.Turbo_Unlock = 0;
1603-
PUBLIC(RO(Proc))->Features.TurboActiv_Lock = 1;
1603+
PUBLIC(RO(Proc))->Features.Turbo_OPP = 0;
16041604
PUBLIC(RO(Proc))->Features.TDP_Cfg_Lock = 1;
16051605
PUBLIC(RO(Proc))->Features.Uncore_Unlock = 0;
16061606
}
@@ -1713,14 +1713,22 @@ void Query_DeviceTree(unsigned int cpu)
17131713
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
17141714
cpufreq_for_each_valid_entry(table, pFreqPolicy->freq_table)
17151715
{
1716-
if (table->frequency != max_freq && table->frequency != min_freq)
1717-
{
1716+
if (table->frequency != max_freq && table->frequency != min_freq) {
1717+
if (boost < (BOOST(SIZE) - BOOST(18C)))
1718+
{
17181719
Core->Boost[BOOST(18C) + boost] = table->frequency
17191720
/ UNIT_KHz(PRECISION);
17201721
boost++;
1722+
}
1723+
}
1724+
if ((table->flags & CPUFREQ_BOOST_FREQ) == CPUFREQ_BOOST_FREQ) {
1725+
const unsigned int COF = table->frequency / UNIT_KHz(PRECISION);
1726+
if (COF > Core->Boost[BOOST(TBH)]) {
1727+
Core->Boost[BOOST(TBO)] = Core->Boost[BOOST(TBH)];
1728+
Core->Boost[BOOST(TBH)] = COF;
1729+
}
1730+
PUBLIC(RO(Proc))->Features.Turbo_OPP = 1;
17211731
}
1722-
if (boost == (BOOST(SIZE) - BOOST(18C)))
1723-
break;
17241732
}
17251733
if (boost > BOOST(MIN)) {
17261734
const enum RATIO_BOOST diff = BOOST(SIZE) - (BOOST(18C) + boost);

aarch64/coretypes.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -593,8 +593,8 @@ enum RATIO_BOOST {
593593
RATIO_TDP,
594594
RATIO_TDP1,
595595
RATIO_TDP2,
596-
RATIO_CPB = RATIO_TDP1,
597-
RATIO_XFR = RATIO_TDP2,
596+
RATIO_TBO = RATIO_TDP1,
597+
RATIO_TBH = RATIO_TDP2,
598598
RATIO_HWP_MIN,
599599
RATIO_HWP_MAX,
600600
RATIO_HWP_TGT,
@@ -889,7 +889,7 @@ typedef struct /* BSP features. */
889889
TDP_Levels : 17-15,
890890
TDP_Cfg_Lock : 18-17,
891891
TDP_Cfg_Level : 20-18,
892-
TurboActiv_Lock : 21-20,
892+
Turbo_OPP : 21-20,
893893
Uncore_Unlock : 22-21,
894894
HWP_Enable : 23-22,
895895
Other_Capable : 24-23,

0 commit comments

Comments
 (0)