[Sys-clk-OC] Add RAM freq selection

This commit is contained in:
KazushiM
2021-12-11 20:21:20 +08:00
parent 46c0cb88c3
commit 314b769708
14 changed files with 47 additions and 28 deletions

View File

@@ -214,7 +214,7 @@ void ClockManager::Tick()
{
std::uint32_t hz = 0;
std::uint32_t hzForceOverride = 0;
for (unsigned int module = 0; module < SysClkModule_EnumMax - 1; module++)
for (unsigned int module = 0; module < SysClkModule_EnumMax; module++)
{
hz = this->context->overrideFreqs[module];
@@ -239,6 +239,13 @@ void ClockManager::Tick()
else
hz = 768'000'000;
break;
case SysClkModule_MEM:
if (!isDockedReverseNX && ((FileUtils::IsDownclockDockEnabled() && RealProfile == SysClkProfile_Docked)
|| RealProfile != SysClkProfile_Docked))
hz = 1331'200'000;
else
hz = 1600'000'000;
break;
}
}
@@ -247,6 +254,10 @@ 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)
{
@@ -442,13 +453,6 @@ bool ClockManager::RefreshContext()
{
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;
uint32_t be4_mhz = this->context->freqs[module]/1000'000;

View File

@@ -179,10 +179,10 @@ void Clocks::ResetToStock(unsigned int module)
{
Clocks::SetHz(SysClkModule_GPU, apmConfiguration->gpu_hz);
}
// if (module == SysClkModule_EnumMax || module == SysClkModule_MEM)
// {
// Clocks::SetHz(SysClkModule_MEM, apmConfiguration->mem_hz);
// }
if (module == SysClkModule_EnumMax || module == SysClkModule_MEM)
{
Clocks::SetHz(SysClkModule_MEM, apmConfiguration->mem_hz);
}
}
else
{
@@ -225,9 +225,6 @@ SysClkProfile Clocks::GetCurrentProfile()
void Clocks::SetHz(SysClkModule module, std::uint32_t hz)
{
if (module == SysClkModule_MEM)
return;
Result rc = 0;
if(hosversionAtLeast(8,0,0))