hocclk: add auto cpu ram oc
This commit is contained in:
@@ -69,6 +69,10 @@ typedef enum {
|
|||||||
|
|
||||||
HocClkConfigValue_AulaDisplayColorPreset,
|
HocClkConfigValue_AulaDisplayColorPreset,
|
||||||
HocClkConfigValue_MarikoMiddleFreqs,
|
HocClkConfigValue_MarikoMiddleFreqs,
|
||||||
|
|
||||||
|
HocClkConfigValue_AutoRAMCPUOverclock,
|
||||||
|
HocClkConfigValue_AutoRamCpuCpuOCFreq,
|
||||||
|
HocClkConfigValue_AutoRamCpuRamOCThreshold,
|
||||||
|
|
||||||
KipConfigValue_custRev,
|
KipConfigValue_custRev,
|
||||||
KipConfigValue_KipVersion,
|
KipConfigValue_KipVersion,
|
||||||
@@ -274,6 +278,14 @@ static inline const char* hocclkFormatConfigValue(HocClkConfigValue val, bool pr
|
|||||||
return pretty ? "Aula Display Color Preset" : "aula_color_preset";
|
return pretty ? "Aula Display Color Preset" : "aula_color_preset";
|
||||||
case HocClkConfigValue_MarikoMiddleFreqs:
|
case HocClkConfigValue_MarikoMiddleFreqs:
|
||||||
return pretty ? "Mariko Middle Clocks" : "mariko_middle_freqs";
|
return pretty ? "Mariko Middle Clocks" : "mariko_middle_freqs";
|
||||||
|
|
||||||
|
case HocClkConfigValue_AutoRAMCPUOverclock:
|
||||||
|
return pretty ? "Auto High RAM CPU OC" : "auto_high_ram_cpu_oc";
|
||||||
|
case HocClkConfigValue_AutoRamCpuCpuOCFreq:
|
||||||
|
return pretty ? "Auto High RAM CPU OC Freq" : "auto_ram_cpu_cpu_oc_freq";
|
||||||
|
case HocClkConfigValue_AutoRamCpuRamOCThreshold:
|
||||||
|
return pretty ? "Auto High RAM CPU OC RAM Threshold" : "auto_ram_cpu_ram_oc_threshold";
|
||||||
|
|
||||||
// KIP config values
|
// KIP config values
|
||||||
case KipConfigValue_custRev:
|
case KipConfigValue_custRev:
|
||||||
return pretty ? "Custom Revision" : "kip_cust_rev";
|
return pretty ? "Custom Revision" : "kip_cust_rev";
|
||||||
@@ -492,7 +504,12 @@ static inline uint64_t hocclkDefaultConfigValue(HocClkConfigValue val)
|
|||||||
case HocClkConfigValue_ThermalThrottle:
|
case HocClkConfigValue_ThermalThrottle:
|
||||||
case HocClkConfigValue_IsFirstLoad:
|
case HocClkConfigValue_IsFirstLoad:
|
||||||
case HocClkConfigValue_DVFSMode:
|
case HocClkConfigValue_DVFSMode:
|
||||||
|
case HocClkConfigValue_AutoRAMCPUOverclock:
|
||||||
return 1ULL;
|
return 1ULL;
|
||||||
|
case HocClkConfigValue_AutoRamCpuCpuOCFreq:
|
||||||
|
return 1683000ULL;
|
||||||
|
case HocClkConfigValue_AutoRamCpuRamOCThreshold:
|
||||||
|
return 2133000ULL;
|
||||||
case HocClkConfigValue_ThermalThrottleThreshold:
|
case HocClkConfigValue_ThermalThrottleThreshold:
|
||||||
return 70ULL;
|
return 70ULL;
|
||||||
case HocClkConfigValue_CpuGovernorMinimumFreq:
|
case HocClkConfigValue_CpuGovernorMinimumFreq:
|
||||||
@@ -532,6 +549,7 @@ static inline uint64_t hocclkValidConfigValue(HocClkConfigValue val, uint64_t in
|
|||||||
case HocClkConfigValue_LiveCpuUv:
|
case HocClkConfigValue_LiveCpuUv:
|
||||||
case HocClkConfigValue_GPUSchedulingMethod:
|
case HocClkConfigValue_GPUSchedulingMethod:
|
||||||
case HocClkConfigValue_MarikoMiddleFreqs:
|
case HocClkConfigValue_MarikoMiddleFreqs:
|
||||||
|
case HocClkConfigValue_AutoRAMCPUOverclock:
|
||||||
return (input & 0x1) == input;
|
return (input & 0x1) == input;
|
||||||
|
|
||||||
case KipConfigValue_KipVersion:
|
case KipConfigValue_KipVersion:
|
||||||
@@ -647,6 +665,8 @@ static inline uint64_t hocclkValidConfigValue(HocClkConfigValue val, uint64_t in
|
|||||||
case HocClkConfigValue_MemoryFrequencyMeasurementMode:
|
case HocClkConfigValue_MemoryFrequencyMeasurementMode:
|
||||||
case HocClkConfigValue_RamDisplayUnit:
|
case HocClkConfigValue_RamDisplayUnit:
|
||||||
case HocClkConfigValue_AulaDisplayColorPreset:
|
case HocClkConfigValue_AulaDisplayColorPreset:
|
||||||
|
case HocClkConfigValue_AutoRamCpuCpuOCFreq:
|
||||||
|
case HocClkConfigValue_AutoRamCpuRamOCThreshold:
|
||||||
return true;
|
return true;
|
||||||
case HocClkConfigValue_BatteryChargeCurrent:
|
case HocClkConfigValue_BatteryChargeCurrent:
|
||||||
return ((input >= 1024) && (input <= 3072)) || !input;
|
return ((input >= 1024) && (input <= 3072)) || !input;
|
||||||
|
|||||||
@@ -435,6 +435,23 @@ std::vector<std::string> ConfigInfoStrings(HocClkConfigValue val, bool isMariko,
|
|||||||
"The clock used for the CPU in \"boost mode\"",
|
"The clock used for the CPU in \"boost mode\"",
|
||||||
"Default: 1785 MHz"
|
"Default: 1785 MHz"
|
||||||
};
|
};
|
||||||
|
case HocClkConfigValue_AutoRAMCPUOverclock:
|
||||||
|
return {
|
||||||
|
"When enabled, automatically raises the CPU clock to the configured OC frequency when RAM clock meets or exceeds the threshold to meet the increased voltage requirement.",
|
||||||
|
"Default: ON"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_AutoRamCpuCpuOCFreq:
|
||||||
|
return {
|
||||||
|
"The CPU clock (in MHz) applied when Auto High RAM CPU OC is enabled and the RAM threshold is met.",
|
||||||
|
"Default: 1683 MHz"
|
||||||
|
};
|
||||||
|
|
||||||
|
case HocClkConfigValue_AutoRamCpuRamOCThreshold:
|
||||||
|
return {
|
||||||
|
"The RAM clock threshold (in MHz) at or above which the Auto High RAM CPU OC will activate.",
|
||||||
|
"Default: 2133MHz"
|
||||||
|
};
|
||||||
|
|
||||||
case HocClkConfigValue_OverwriteBoostMode:
|
case HocClkConfigValue_OverwriteBoostMode:
|
||||||
return {
|
return {
|
||||||
@@ -464,7 +481,7 @@ std::vector<std::string> ConfigInfoStrings(HocClkConfigValue val, bool isMariko,
|
|||||||
"Maximum GPU voltage",
|
"Maximum GPU voltage",
|
||||||
"Default: 800 mV"
|
"Default: 800 mV"
|
||||||
};
|
};
|
||||||
|
|
||||||
case HocClkConfigValue_DVFSMode:
|
case HocClkConfigValue_DVFSMode:
|
||||||
return {
|
return {
|
||||||
"The mode used for GPU DVFS",
|
"The mode used for GPU DVFS",
|
||||||
|
|||||||
@@ -2037,6 +2037,20 @@ protected:
|
|||||||
NamedValue("2601 MHz", 2601000),
|
NamedValue("2601 MHz", 2601000),
|
||||||
NamedValue("2703 MHz", 2703000),
|
NamedValue("2703 MHz", 2703000),
|
||||||
};
|
};
|
||||||
|
std::vector<NamedValue> ClkOptionsRamOc = {
|
||||||
|
NamedValue("1581 MHz", 1581000),
|
||||||
|
NamedValue("1683 MHz", 1683000),
|
||||||
|
NamedValue("1785 MHz", 1785000),
|
||||||
|
NamedValue("1887 MHz", 1887000),
|
||||||
|
NamedValue("1963 MHz", 1963500),
|
||||||
|
NamedValue("2091 MHz", 2091000),
|
||||||
|
NamedValue("2193 MHz", 2193000),
|
||||||
|
NamedValue("2295 MHz", 2295000),
|
||||||
|
NamedValue("2397 MHz", 2397000),
|
||||||
|
NamedValue("2499 MHz", 2499000),
|
||||||
|
NamedValue("2601 MHz", 2601000),
|
||||||
|
NamedValue("2703 MHz", 2703000),
|
||||||
|
};
|
||||||
|
|
||||||
addConfigButton(
|
addConfigButton(
|
||||||
KipConfigValue_marikoCpuBoostClock,
|
KipConfigValue_marikoCpuBoostClock,
|
||||||
@@ -2049,6 +2063,85 @@ protected:
|
|||||||
false,
|
false,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
|
std::vector<NamedValue> emcMaxClock = {
|
||||||
|
NamedValue("1600 MHz", 1600000),
|
||||||
|
NamedValue("1633 MHz", 1633000),
|
||||||
|
NamedValue("1666 MHz", 1666000),
|
||||||
|
NamedValue("1700 MHz", 1700000),
|
||||||
|
NamedValue("1733 MHz", 1733000),
|
||||||
|
NamedValue("1766 MHz", 1766000),
|
||||||
|
NamedValue("1800 MHz", 1800000),
|
||||||
|
NamedValue("1833 MHz", 1833000),
|
||||||
|
NamedValue("1866 MHz", 1866000, "JEDEC."),
|
||||||
|
NamedValue("1900 MHz", 1900000),
|
||||||
|
NamedValue("1933 MHz", 1933000),
|
||||||
|
NamedValue("1966 MHz", 1966000),
|
||||||
|
NamedValue("1996 MHz", 1996800, "JEDEC."),
|
||||||
|
NamedValue("2000 MHz", 2000000),
|
||||||
|
NamedValue("2033 MHz", 2033000),
|
||||||
|
NamedValue("2066 MHz", 2066000),
|
||||||
|
NamedValue("2100 MHz", 2100000),
|
||||||
|
NamedValue("2133 MHz", 2133000, "JEDEC."),
|
||||||
|
NamedValue("2166 MHz", 2166000),
|
||||||
|
NamedValue("2200 MHz", 2200000),
|
||||||
|
NamedValue("2233 MHz", 2233000),
|
||||||
|
NamedValue("2266 MHz", 2266000),
|
||||||
|
NamedValue("2300 MHz", 2300000),
|
||||||
|
NamedValue("2333 MHz", 2333000),
|
||||||
|
NamedValue("2366 MHz", 2366000),
|
||||||
|
NamedValue("2400 MHz", 2400000, "JEDEC."),
|
||||||
|
NamedValue("2433 MHz", 2433000),
|
||||||
|
NamedValue("2466 MHz", 2466000),
|
||||||
|
NamedValue("2500 MHz", 2500000),
|
||||||
|
NamedValue("2533 MHz", 2533000),
|
||||||
|
NamedValue("2566 MHz", 2566000),
|
||||||
|
NamedValue("2600 MHz", 2600000),
|
||||||
|
NamedValue("2633 MHz", 2633000),
|
||||||
|
NamedValue("2666 MHz", 2666000, "JEDEC."),
|
||||||
|
NamedValue("2700 MHz", 2700000),
|
||||||
|
NamedValue("2733 MHz", 2733000),
|
||||||
|
NamedValue("2766 MHz", 2766000),
|
||||||
|
NamedValue("2800 MHz", 2800000),
|
||||||
|
NamedValue("2833 MHz", 2833000),
|
||||||
|
NamedValue("2866 MHz", 2866000),
|
||||||
|
NamedValue("2900 MHz", 2900000),
|
||||||
|
NamedValue("2933 MHz", 2933000, "JEDEC."),
|
||||||
|
NamedValue("2966 MHz", 2966000),
|
||||||
|
NamedValue("3000 MHz", 3000000),
|
||||||
|
NamedValue("3033 MHz", 3033000),
|
||||||
|
NamedValue("3066 MHz", 3066000),
|
||||||
|
NamedValue("3100 MHz", 3100000),
|
||||||
|
NamedValue("3133 MHz", 3133000),
|
||||||
|
NamedValue("3166 MHz", 3166000),
|
||||||
|
NamedValue("3200 MHz", 3200000, "JEDEC."),
|
||||||
|
NamedValue("3233 MHz", 3233000, "High speedo needed!"),
|
||||||
|
NamedValue("3266 MHz", 3266000, "High speedo needed!"),
|
||||||
|
NamedValue("3300 MHz", 3300000, "High speedo needed!"),
|
||||||
|
};
|
||||||
|
addConfigToggle(HocClkConfigValue_AutoRAMCPUOverclock, "Auto CPU RAM OC");
|
||||||
|
addConfigButton(
|
||||||
|
HocClkConfigValue_AutoRamCpuCpuOCFreq,
|
||||||
|
"Auto CPU RAM OC CPU clock",
|
||||||
|
ValueRange(0, 0, 1, "", 1),
|
||||||
|
"CPU Clock",
|
||||||
|
&thresholdsDisabled,
|
||||||
|
{},
|
||||||
|
ClkOptionsRamOc,
|
||||||
|
false,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
addConfigButton(
|
||||||
|
HocClkConfigValue_AutoRamCpuRamOCThreshold,
|
||||||
|
"Auto CPU RAM OC Threshold",
|
||||||
|
ValueRange(0, 0, 1, "", 1),
|
||||||
|
"RAM Clock",
|
||||||
|
&thresholdsDisabled,
|
||||||
|
{},
|
||||||
|
emcMaxClock,
|
||||||
|
false,
|
||||||
|
false
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
addConfigTrackbar(KipConfigValue_eristaCpuUV, "CPU UV", ValueRange(0, 5, 1));
|
addConfigTrackbar(KipConfigValue_eristaCpuUV, "CPU UV", ValueRange(0, 5, 1));
|
||||||
|
|
||||||
|
|||||||
@@ -506,6 +506,25 @@ namespace clockManager {
|
|||||||
HandleFreqReset((HocClkModule)module, isBoost, didHijackPcv);
|
HandleFreqReset((HocClkModule)module, isBoost, didHijackPcv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config::GetConfigValue(HocClkConfigValue_AutoRAMCPUOverclock) && !skipCpuDueToBoost && !governor::isCpuGovernorEnabled) {
|
||||||
|
u32 ramHz = gContext.freqs[HocClkModule_MEM];
|
||||||
|
u32 threshold = (u32)config::GetConfigValue(HocClkConfigValue_AutoRamCpuRamOCThreshold) * 1000;
|
||||||
|
if (ramHz >= threshold) {
|
||||||
|
u32 cpuOverrideHz = (u32)config::GetConfigValue(HocClkConfigValue_AutoRamCpuCpuOCFreq) * 1000;
|
||||||
|
maxHz = GetMaxAllowedHz(HocClkModule_CPU, gContext.profile);
|
||||||
|
nearestHz = GetNearestHz(HocClkModule_CPU, cpuOverrideHz, maxHz);
|
||||||
|
fileUtils::LogLine(
|
||||||
|
"[mgr] AutoRAMCPUOC CPU clock set : %u.%u MHz (ram = %u.%u MHz)",
|
||||||
|
nearestHz / 1000000, nearestHz / 100000 - nearestHz / 1000000 * 10,
|
||||||
|
ramHz / 1000000, ramHz / 100000 - ramHz / 1000000 * 10
|
||||||
|
);
|
||||||
|
board::SetHz(HocClkModule_CPU, nearestHz);
|
||||||
|
gContext.freqs[HocClkModule_CPU] = nearestHz;
|
||||||
|
if (HocClkModule_CPU < HocClkModuleStable_EnumMax)
|
||||||
|
gContext.stable.freqs[HocClkModule_CPU] = nearestHz;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RefreshContext()
|
bool RefreshContext()
|
||||||
|
|||||||
@@ -162,6 +162,15 @@ namespace governor {
|
|||||||
|
|
||||||
if (++cpuTick > 50) {
|
if (++cpuTick > 50) {
|
||||||
minHz = config::GetConfigValue(HocClkConfigValue_CpuGovernorMinimumFreq);
|
minHz = config::GetConfigValue(HocClkConfigValue_CpuGovernorMinimumFreq);
|
||||||
|
if (config::GetConfigValue(HocClkConfigValue_AutoRAMCPUOverclock)) {
|
||||||
|
u32 ramHz = clockManager::gContext.freqs[HocClkModule_MEM];
|
||||||
|
u32 threshold = (u32)config::GetConfigValue(HocClkConfigValue_AutoRamCpuRamOCThreshold) * 1000;
|
||||||
|
if (ramHz >= threshold) {
|
||||||
|
u32 overrideHz = (u32)config::GetConfigValue(HocClkConfigValue_AutoRamCpuCpuOCFreq) * 1000;
|
||||||
|
if (overrideHz > minHz)
|
||||||
|
minHz = overrideHz;
|
||||||
|
}
|
||||||
|
}
|
||||||
cpuTick = 0;
|
cpuTick = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
BIN
dist/atmosphere/contents/00FF0000636C6BFF/exefs.nsp
vendored
BIN
dist/atmosphere/contents/00FF0000636C6BFF/exefs.nsp
vendored
Binary file not shown.
BIN
dist/atmosphere/kips/hoc.kip
vendored
BIN
dist/atmosphere/kips/hoc.kip
vendored
Binary file not shown.
BIN
dist/switch/.overlays/horizon-oc-overlay.ovl
vendored
BIN
dist/switch/.overlays/horizon-oc-overlay.ovl
vendored
Binary file not shown.
Reference in New Issue
Block a user