GPU Max frequency is now 1497.6MHz; RAM clocks could be set in sys-clk-OC (1331 and Max); DRAM manu as suffixes in loader.kip file names for references; README
This commit is contained in:
@@ -247,15 +247,23 @@ void ClockManager::Tick()
|
||||
if (hz)
|
||||
{
|
||||
hz = Clocks::GetNearestHz((SysClkModule)module, isEnabledReverseNX ? RealProfile : this->context->profile, hz);
|
||||
if (module == SysClkModule_MEM && hz == 1600'000'000 && this->context->freqs[module] >= hz)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (hz != this->context->freqs[module] && this->context->enabled)
|
||||
{
|
||||
if (cpuBoost)
|
||||
{
|
||||
// Skip setting CPU or GPU clocks in CpuBoostMode if CPU < 1963.5MHz or GPU > 76.8MHz
|
||||
if (module == SysClkModule_CPU && hz < MAX_CPU)
|
||||
{
|
||||
hz = MAX_CPU;
|
||||
FileUtils::LogLine("[mgr] CpuBoostMode detected, bump CPU to max");
|
||||
continue;
|
||||
}
|
||||
if (module == SysClkModule_GPU && hz > 76'800'000)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
FileUtils::LogLine("[mgr] %s clock set : %u.%u Mhz", Clocks::GetModuleName((SysClkModule)module, true), hz/1000000, hz/100000 - hz/1000000*10);
|
||||
@@ -265,19 +273,6 @@ void ClockManager::Tick()
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (FileUtils::IsBoostEnabled())
|
||||
{
|
||||
// If user doesn't set any freq but with sys-clk enabled, then boost CPU in CpuBoostMode
|
||||
if(cpuBoost && this->GetConfig()->Enabled())
|
||||
{
|
||||
if(this->context->freqs[SysClkModule_CPU] != MAX_CPU)
|
||||
{
|
||||
FileUtils::LogLine("[mgr] CpuBoostMode detected, bump CPU to max");
|
||||
Clocks::SetHz(SysClkModule_CPU, MAX_CPU);
|
||||
this->context->freqs[SysClkModule_CPU] = MAX_CPU;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -450,13 +445,6 @@ bool ClockManager::RefreshContext()
|
||||
for (unsigned int module = 0; module < SysClkModule_EnumMax; module++)
|
||||
{
|
||||
hz = Clocks::GetCurrentHz((SysClkModule)module);
|
||||
|
||||
// Skip MEM freq check
|
||||
if (module == SysClkModule_MEM)
|
||||
{
|
||||
this->context->freqs[module] = hz;
|
||||
break;
|
||||
}
|
||||
|
||||
// Round to MHz
|
||||
uint32_t cur_mhz = hz/1000'000;
|
||||
|
||||
@@ -179,8 +179,10 @@ void Clocks::ResetToStock(unsigned int module)
|
||||
{
|
||||
Clocks::SetHz(SysClkModule_GPU, apmConfiguration->gpu_hz);
|
||||
}
|
||||
// We don't need to set MEM freqs any more
|
||||
//Clocks::SetHz(SysClkModule_MEM, apmConfiguration->mem_hz);
|
||||
if (module == SysClkModule_EnumMax || module == SysClkModule_MEM)
|
||||
{
|
||||
Clocks::SetHz(SysClkModule_MEM, apmConfiguration->mem_hz);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -223,10 +225,6 @@ SysClkProfile Clocks::GetCurrentProfile()
|
||||
|
||||
void Clocks::SetHz(SysClkModule module, std::uint32_t hz)
|
||||
{
|
||||
// We don't need to set MEM freqs any more
|
||||
if (module == SysClkModule_MEM)
|
||||
return;
|
||||
|
||||
Result rc = 0;
|
||||
|
||||
if(hosversionAtLeast(8,0,0))
|
||||
@@ -292,11 +290,11 @@ std::uint32_t Clocks::GetMaxAllowedHz(SysClkModule module, SysClkProfile profile
|
||||
{
|
||||
if(profile < SysClkProfile_HandheldCharging)
|
||||
{
|
||||
return isMariko ? 1536000000 : SYSCLK_GPU_HANDHELD_MAX_HZ;
|
||||
return isMariko ? 1344000000 : SYSCLK_GPU_HANDHELD_MAX_HZ;
|
||||
}
|
||||
else if(profile <= SysClkProfile_HandheldChargingUSB)
|
||||
{
|
||||
return isMariko ? 1536000000 : SYSCLK_GPU_UNOFFICIAL_CHARGER_MAX_HZ;
|
||||
return isMariko ? 1344000000 : SYSCLK_GPU_UNOFFICIAL_CHARGER_MAX_HZ;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -305,7 +303,7 @@ std::uint32_t Clocks::GetMaxAllowedHz(SysClkModule module, SysClkProfile profile
|
||||
|
||||
std::uint32_t Clocks::GetNearestHz(SysClkModule module, std::uint32_t inHz)
|
||||
{
|
||||
// Hardcoded values to return, I don't know why it will bump to max when excessive OC
|
||||
// Hardcoded values to return, or the frequency will ramp up to max as dvfs table is not correct
|
||||
if(module == SysClkModule_MEM)
|
||||
{
|
||||
switch(inHz)
|
||||
@@ -381,6 +379,10 @@ std::uint32_t Clocks::GetNearestHz(SysClkModule module, std::uint32_t inHz)
|
||||
return 1382400000;
|
||||
case 1420000000:
|
||||
return 1420800000;
|
||||
case 1459000000:
|
||||
return 1459200000;
|
||||
case 1497000000:
|
||||
return 1497600000;
|
||||
default:
|
||||
return inHz;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user