Remove budget dvfs

This commit is contained in:
Lightos1
2026-02-12 17:15:26 +01:00
parent 7af0721847
commit aa72176196
4 changed files with 7 additions and 43 deletions

View File

@@ -22,7 +22,6 @@
/* Never edit these. */ /* Never edit these. */
#define AUTO 0 #define AUTO 0
#define AUTO_RAM 1
#define ENABLED 1 #define ENABLED 1
#define DISABLED 0 #define DISABLED 0
#define DEACTIVATED_GPU_FREQ 2000 #define DEACTIVATED_GPU_FREQ 2000
@@ -105,7 +104,7 @@ volatile CustomizeTable C = {
/* For automatic vmin detection, set this to AUTO. */ /* For automatic vmin detection, set this to AUTO. */
/* vmin past 795mV won't work due to HOS limitation */ /* vmin past 795mV won't work due to HOS limitation */
/* Vmin is automatically set to 800mV when SoC temperature is below 20C */ /* Vmin is automatically set to 800mV when SoC temperature is below 20C */
.marikoGpuVmin = AUTO_RAM, .marikoGpuVmin = AUTO,
.marikoGpuVmax = 800, .marikoGpuVmax = 800,

View File

@@ -122,16 +122,6 @@ namespace ams::ldr::hoc::pcv {
{0xFFFFFFFF, 35}, {0xFFFFFFFF, 35},
}; };
static const u32 ramBrackets[][22] = {
{ 2133, 2200, 2266, 2300, 2366, 2400, 2433, 2466, 2533, 2566, 2600, 2633, 2700, 2733, 2766, 2833, 2866, 2900, 2933, 3033, 3066, 3100, },
{ 2300, 2366, 2433, 2466, 2533, 2566, 2633, 2700, 2733, 2800, 2833, 2900, 2933, 2966, 3033, 3066, 3100, 3133, 3166, 3200, 3233, 3266, },
{ 2433, 2466, 2533, 2600, 2666, 2733, 2766, 2800, 2833, 2866, 2933, 2966, 3033, 3066, 3100, 3133, 3166, 3200, 3233, 3300, 3333, 3366, },
{ 2500, 2533, 2600, 2633, 2666, 2733, 2800, 2866, 2900, 2966, 3033, 3100, 3166, 3200, 3233, 3266, 3300, 3333, 3366, 3400, 3400, 3400, },
};
static const u32 gpuBudgetDvfsArray[] = { 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710, 720, 730, 740, 750, 760, 770, 780, 790, 800};
/* GPU Max Clock asm Pattern: /* GPU Max Clock asm Pattern:
* *
* MOV W11, #0x1000 MOV (wide immediate) 0x1000 0xB (11) * MOV W11, #0x1000 MOV (wide immediate) 0x1000 0xB (11)

View File

@@ -50,30 +50,6 @@ namespace ams::ldr::hoc::pcv::mariko {
return ramScale; return ramScale;
} }
u32 GetSpeedoBracket() {
u32 speedoBracket = 3;
if ((C.gpuSpeedo < 1754) && (speedoBracket = 2, C.gpuSpeedo < 1690)) {
speedoBracket = !!(1625 < C.gpuSpeedo);
}
return speedoBracket;
}
u32 GetGpuBudgetDvfsVoltage() {
u32 bracket = GetSpeedoBracket();
if (ramFreqMhz <= 1600)
return 0;
for (u32 voltageIndex = 0; voltageIndex < 22; voltageIndex++) {
if (ramFreqMhz <= ramBrackets[bracket][voltageIndex]) {
return gpuBudgetDvfsArray[voltageIndex];
}
}
return 800;
}
/* Note: EOS (probably?) has a bug in this function that always results in high vmin, this is fixed here. */ /* Note: EOS (probably?) has a bug in this function that always results in high vmin, this is fixed here. */
u32 GetAutoVoltage() { u32 GetAutoVoltage() {
u32 voltage = GetGpuVminVoltage(); u32 voltage = GetGpuVminVoltage();
@@ -102,14 +78,13 @@ namespace ams::ldr::hoc::pcv::mariko {
} }
/* C.marikoGpuVmin is non zero, user sets manual voltage. */ /* C.marikoGpuVmin is non zero, user sets manual voltage. */
if (C.marikoGpuVmin != 0 && C.marikoGpuVmin != 1) { if (C.marikoGpuVmin) {
PATCH_OFFSET(ptr, C.marikoGpuVmin); PATCH_OFFSET(ptr, C.marikoGpuVmin);
R_SUCCEED(); R_SUCCEED();
} }
/* C.marikoGpuVmin is zero OR one, auto voltage is applied. */ /* C.marikoGpuVmin is zero, auto voltage is applied. */
/* Get vmin depending on speedo and ram clock. */ u32 autoVmin = GetAutoVoltage();
u32 autoVmin = C.marikoGpuVmin == 0 ? GetAutoVoltage() : GetGpuBudgetDvfsVoltage();
PATCH_OFFSET(ptr, autoVmin); PATCH_OFFSET(ptr, autoVmin);
R_SUCCEED(); R_SUCCEED();
} }
@@ -122,8 +97,8 @@ namespace ams::ldr::hoc::pcv::mariko {
u32 vmin = C.marikoGpuVmin; u32 vmin = C.marikoGpuVmin;
/* Automatic voltage. */ /* Automatic voltage. */
if (!C.marikoGpuVmin || C.marikoGpuVmin == 1) { if (!C.marikoGpuVmin) {
vmin = C.marikoGpuVmin == 0 ? GetAutoVoltage() : GetGpuBudgetDvfsVoltage(); vmin = GetAutoVoltage();
PATCH_OFFSET(ptr, vmin); PATCH_OFFSET(ptr, vmin);
PATCH_OFFSET(ptr + 3, vmin); PATCH_OFFSET(ptr + 3, vmin);
PATCH_OFFSET(ptr + 6, vmin); PATCH_OFFSET(ptr + 6, vmin);

View File

@@ -1001,7 +1001,7 @@ protected:
}; };
std::vector<NamedValue> mGpuVoltsVmin = { std::vector<NamedValue> mGpuVoltsVmin = {
NamedValue("Auto", 0), NamedValue("Auto (RAM)", 1), NamedValue("Auto", 0),
NamedValue("480mV", 480), NamedValue("485mV", 485), NamedValue("490mV", 490), NamedValue("480mV", 480), NamedValue("485mV", 485), NamedValue("490mV", 490),
NamedValue("495mV", 495), NamedValue("500mV", 500), NamedValue("505mV", 505), NamedValue("495mV", 495), NamedValue("500mV", 500), NamedValue("505mV", 505),
NamedValue("510mV", 510), NamedValue("515mV", 515), NamedValue("520mV", 520), NamedValue("510mV", 510), NamedValue("515mV", 515), NamedValue("520mV", 520),