diff --git a/Source/sys-clk/overlay/src/ui/gui/misc_gui.cpp b/Source/sys-clk/overlay/src/ui/gui/misc_gui.cpp index 05d27d55..d19df4ea 100644 --- a/Source/sys-clk/overlay/src/ui/gui/misc_gui.cpp +++ b/Source/sys-clk/overlay/src/ui/gui/misc_gui.cpp @@ -701,17 +701,17 @@ protected: this->listElement->addItem(new tsl::elm::CategoryHeader("Memory Latencies")); std::vector rlLabels = { - NamedValue("2133RL", 40), - NamedValue("1866RL", 36), + NamedValue("1333RL", 28), NamedValue("1600RL", 32), - NamedValue("1333RL", 28) + NamedValue("1866RL", 36), + NamedValue("2133RL", 40) }; std::vector wlLabels = { - NamedValue("2133WL", 18), - NamedValue("1866WL", 16), + NamedValue("1333WL", 12), NamedValue("1600WL", 14), - NamedValue("1333WL", 12) + NamedValue("1866WL", 16), + NamedValue("2133WL", 18) }; addConfigButton( diff --git a/Source/sys-clk/sysmodule/src/clock_manager.cpp b/Source/sys-clk/sysmodule/src/clock_manager.cpp index 7d98b014..373df0f4 100644 --- a/Source/sys-clk/sysmodule/src/clock_manager.cpp +++ b/Source/sys-clk/sysmodule/src/clock_manager.cpp @@ -113,40 +113,25 @@ ClockManager::ClockManager() } void ClockManager::FixCpuBug() { - Board::SetHz(SysClkModule_CPU, 1785000000); // this will just set to the max when kip is unloaded so idgaf - Board::SetHz(SysClkModule_CPU, 1887000000); - Board::SetHz(SysClkModule_CPU, 1963000000); - Board::SetHz(SysClkModule_CPU, 2091000000); - Board::SetHz(SysClkModule_CPU, 2193000000); - Board::SetHz(SysClkModule_CPU, 2295000000); - Board::SetHz(SysClkModule_CPU, 2397000000); - Board::SetHz(SysClkModule_CPU, 2499000000); - Board::SetHz(SysClkModule_CPU, 2601000000); - Board::SetHz(SysClkModule_CPU, 2703000000); // i am just replicating what the user would manually do to fix the bug. if 2703 is unstable it will reset to 1020 due to how fast this runs - Board::SetHz(SysClkModule_CPU, 1020000000); + static u32 cpuFreqs[] = { + 1785000000, + 1887000000, + 1963000000, + 2091000000, + 2193000000, + 2295000000, + 2397000000, + 2499000000, + 2601000000, + 2703000000, + 1020000000 + }; + static u32 cpuFreqsSize = sizeof(cpuFreqs) / sizeof(u32); + for(int i = 0; i < cpuFreqsSize; i++) { + Board::SetHz(SysClkModule_CPU, cpuFreqs[i]); + svcSleepThread(2'500'000); // 2.5ms + } ResetToStockClocks(); - u32 targetHz = 0; - u32 maxHz = 0; - u32 nearestHz = 0; - targetHz = this->context->overrideFreqs[SysClkModule_CPU]; - if (!targetHz) - { - targetHz = this->config->GetAutoClockHz(this->context->applicationId, SysClkModule_CPU, this->context->profile, false); - if(!targetHz) - targetHz = this->config->GetAutoClockHz(GLOBAL_PROFILE_ID, SysClkModule_CPU, this->context->profile, false); - } - - if (targetHz) - { - maxHz = this->GetMaxAllowedHz(SysClkModule_CPU, this->context->profile); - nearestHz = this->GetNearestHz(SysClkModule_CPU, targetHz, maxHz); - - if (nearestHz != this->context->freqs[SysClkModule_CPU]) { - - Board::SetHz(SysClkModule_CPU, nearestHz); - this->context->freqs[SysClkModule_CPU] = nearestHz; - } - } } ClockManager::~ClockManager() @@ -450,11 +435,6 @@ void ClockManager::Tick() } bool isBoost = apmExtIsBoostMode(mode); - if (prevBoostMode && !isBoost) { - if(this->config->GetConfigValue(HocClkConfigValue_FixCpuVoltBug)) - FixCpuBug(); - } - prevBoostMode = isBoost; bool noGPU = false; @@ -538,6 +518,9 @@ void ClockManager::Tick() Board::SetHz((SysClkModule)module, nearestHz); this->context->freqs[module] = nearestHz; } + if(module == SysClkModule_CPU) { + FixCpuBug(); + } } } }