hoc-clk: auto cpu ram oc

This commit is contained in:
Lightos1 committed 2026-10-06 19:56:02 +02:00
1 parent 2b3883998a
commit 2c4020e71f
8 files changed
+2 -149

No files matched your search

@@ -79,10 +79,6 @@ typedef enum {
HocClkConfigValue_MarikoMiddleFreqs,
HocClkConfigValue_LiveGpuVoltage,
HocClkConfigValue_AutoRAMCPUOverclock,
HocClkConfigValue_AutoRamCpuCpuOCFreq,
HocClkConfigValue_AutoRamCpuRamOCThreshold,
HocClkConfigValue_Watchdog,
KipConfigValue_custRev,
@@ -343,12 +339,6 @@ static inline const char* hocclkFormatConfigValue(HocClkConfigValue val, bool pr
case HocClkConfigValue_LiveGpuVoltage:
return pretty ? "GPU Voltage Request" : "gpu_voltage_request";
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";
case HocClkConfigValue_Watchdog:
return pretty ? "Watchcat" : "watchdog"; // More dignified
// KIP config values
@@ -617,12 +607,6 @@ static inline uint64_t hocclkDefaultConfigValue(HocClkConfigValue val)
case HocClkConfigValue_GPUDVFSMode:
case HocClkConfigValue_CPUDVFSMode:
return 1ULL;
case HocClkConfigValue_AutoRAMCPUOverclock:
return 0ULL;
case HocClkConfigValue_AutoRamCpuCpuOCFreq:
return 1683000ULL;
case HocClkConfigValue_AutoRamCpuRamOCThreshold:
return 2666000ULL;
case HocClkConfigValue_ThermalThrottleThreshold:
return 70ULL;
case HocClkConfigValue_CpuGovernorMinimumFreq:
@@ -669,7 +653,6 @@ static inline uint64_t hocclkValidConfigValue(HocClkConfigValue val, uint64_t in
case HocClkConfigValue_GPUSchedulingMethod:
case HocClkConfigValue_MarikoMiddleFreqs:
case HocClkConfigValue_LiveGpuVoltage:
case HocClkConfigValue_AutoRAMCPUOverclock:
case HocClkConfigValue_Watchdog:
return (input & 0x1) == input;
@@ -821,8 +804,6 @@ static inline uint64_t hocclkValidConfigValue(HocClkConfigValue val, uint64_t in
case HocClkConfigValue_MemoryFrequencyMeasurementMode:
case HocClkConfigValue_RamDisplayUnit:
case HocClkConfigValue_AulaDisplayColorPreset:
case HocClkConfigValue_AutoRamCpuCpuOCFreq:
case HocClkConfigValue_AutoRamCpuRamOCThreshold:
case KipConfigValue_PcvDebugVerbosity:
return true;
case HocClkConfigValue_BatteryChargeCurrent:
-3
View File
@@ -152,9 +152,6 @@
"JEDEC.": "JEDEC.",
"CPU Boost Clock": "Частота буста",
"Auto CPU RAM OC": "Буст CPU → Разг. RAM",
"Auto CPU RAM OC CPU clock": "Буст CPU: частота CPU",
"Auto CPU RAM OC Threshold": "Буст CPU: порог RAM",
"Overwrite Boost Mode": "Перезаписать буст",
"CPU UV": "Андервольт CPU",
"CPU Unlock": "Разблокировка CPU",
-3
View File
@@ -149,9 +149,6 @@
"RAM-Timing tBreak": "内存时序切换阈值",
"CPU Boost Clock": "CPU加速频率",
"Auto CPU RAM OC": "高内存频率自动提频CPU",
"Auto CPU RAM OC CPU clock": "自动提频CPU频率",
"Auto CPU RAM OC Threshold": "自动提频触发阈值",
"Overwrite Boost Mode": "接管系统CPU调度",
"CPU UV": "CPU降压",
"CPU Unlock": "CPU解锁",
-3
View File
@@ -147,9 +147,6 @@
"RAM-Timing tBreak": "記憶體時序切換閾值",
"CPU Boost Clock": "CPU加速頻率",
"Auto CPU RAM OC": "高記憶體頻率自動提頻CPU",
"Auto CPU RAM OC CPU clock": "自動提頻CPU頻率",
"Auto CPU RAM OC Threshold": "自動提頻觸發閾值",
"Overwrite Boost Mode": "接管系統CPU調度",
"CPU UV": "CPU降壓",
"CPU Unlock": "CPU解鎖",
@@ -457,24 +457,6 @@ std::vector<std::string> ConfigInfoStrings(HocClkConfigValue val, bool isMariko,
"The clock used for the CPU in \"boost mode\"",
"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:
return {
"If enabled, profiles can override the boost mode setting",
@@ -868,85 +868,6 @@ class ExperimentalSettingsSubMenuGui : public MiscGui {
addConfigButton(HocClkConfigValue_GPUSchedulingMethod, "GPU Scheduling Override Method", ValueRange(0, 0, 1, "", 0),
"GPU Scheduling Override Method", &thresholdsDisabled, {}, gpuSchedMethodValues, false);
if (IsMariko()) {
addHeaderSpacer();
this->listElement->addItem(new CompactCategoryHeader("RAM Settings"));
std::vector<NamedValue> clkOptionsRamOc = {
NamedValue("1122 MHz", 1122000), NamedValue("1224 MHz", 1224000), NamedValue("1326 MHz", 1326000), NamedValue("1428 MHz", 1428000),
NamedValue("1581 MHz", 1581000), NamedValue("1683 MHz", 1683000, "Default"), 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),
NamedValue("2805 MHz", 2805000),
};
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, "±1720 speedo"),
NamedValue("3266 MHz", 3266000, "±1740 speedo"),
NamedValue("3300 MHz", 3300000, "±1760 speedo"),
NamedValue("3333 MHz", 3333000, "±1780 speedo"),
NamedValue("3366 MHz", 3366000, "±1800 speedo"),
NamedValue("3400 MHz", 3400000, "±1820 speedo"),
NamedValue("3433 MHz", 3433000, "±???? speedo"),
NamedValue("3466 MHz", 3466000, "±???? speedo"),
NamedValue("3500 MHz", 3500000, "±???? speedo"),
};
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);
}
tsl::elm::CustomDrawer *chargeWarningText = new tsl::elm::CustomDrawer([](tsl::gfx::Renderer *renderer, s32 x, s32 y, s32 w, s32 h) {
renderer->drawString("\uE150 Overriding the charge current", false, x + 20, y + 30, 18, tsl::style::color::ColorText);
renderer->drawString("can be dangerous and may cause", false, x + 20, y + 50, 18, tsl::style::color::ColorText);
@@ -558,8 +558,6 @@ namespace mgr {
prepareBoostExit = false;
}
u32 ramTargetHz = GetNearestOverrideHz(HocClkModule_MEM);
bool returnRaw = false; // Return a value scaled to MHz instead of raw value
for (unsigned int module = 0; module < HocClkModule_EnumMax; module++) {
u32 oldHz = board::GetHz((HocClkModule)module); // Get Old hz (used primarily for DVFS Logic)
@@ -608,20 +606,9 @@ namespace mgr {
if (noGPU && module == HocClkModule_GPU)
continue;
u32 autoCpuOcHz = 0;
if (module == HocClkModule_CPU && file::config::GetConfigValue(HocClkConfigValue_AutoRAMCPUOverclock) && !isBoost &&
!mgr::isCpuGovernorEnabled && (board::GetSocType() == HocClkSocType_Mariko)) {
u32 threshold = (u32)file::config::GetConfigValue(HocClkConfigValue_AutoRamCpuRamOCThreshold) * 1000;
if (ramTargetHz >= threshold)
autoCpuOcHz = (u32)file::config::GetConfigValue(HocClkConfigValue_AutoRamCpuCpuOCFreq) * 1000;
}
if (targetHz || autoCpuOcHz) {
if (targetHz) {
maxHz = GetMaxAllowedHz((HocClkModule)module, gContext.profile);
nearestHz = targetHz ? GetNearestHz((HocClkModule)module, targetHz, maxHz) : 0;
if (autoCpuOcHz > nearestHz)
nearestHz = GetNearestHz(HocClkModule_CPU, autoCpuOcHz, maxHz);
nearestHz = GetNearestHz((HocClkModule)module, targetHz, maxHz);
if (nearestHz != gContext.freqs[module]) {
file::utils::LogLine("[mgr] %s clock set : %u.%u MHz (target = %u.%u MHz)", board::GetModuleName((HocClkModule)module, true),
@@ -182,15 +182,6 @@ namespace mgr {
if (++cpuTick > 50) {
minHz = file::config::GetConfigValue(HocClkConfigValue_CpuGovernorMinimumFreq);
if (file::config::GetConfigValue(HocClkConfigValue_AutoRAMCPUOverclock)) {
u32 ramHz = mgr::gContext.freqs[HocClkModule_MEM];
u32 threshold = (u32)file::config::GetConfigValue(HocClkConfigValue_AutoRamCpuRamOCThreshold) * 1000;
if (ramHz >= threshold) {
u32 overrideHz = (u32)file::config::GetConfigValue(HocClkConfigValue_AutoRamCpuCpuOCFreq) * 1000;
if (overrideHz > minHz)
minHz = overrideHz;
}
}
cpuTick = 0;
}