@@ -28,7 +28,7 @@ volatile CustomizeTable C = {
|
||||
* NO_ADJ_ALL: No timing adjustment for both Erista and Mariko.
|
||||
* CUSTOMIZED_ALL: Replace with values in customized table for both Erista and Mariko.
|
||||
*/
|
||||
.mtcConf = AUTO_ADJ_ALL,
|
||||
.mtcConf = CUSTOM_ADJ_ALL,
|
||||
|
||||
/* Common:
|
||||
* - Boost Clock in kHz:
|
||||
@@ -36,24 +36,21 @@ volatile CustomizeTable C = {
|
||||
* Boost clock will be applied when applications request higher CPU frequency for quicker loading.
|
||||
* This will be set regardless of whether sys-clk is enabled.
|
||||
*/
|
||||
.marikoCpuBoostClock = 1963500,
|
||||
|
||||
.eristaCpuBoostClock = 1785000,
|
||||
|
||||
.commonCpuBoostClock = 2295000,
|
||||
/* - EMC Vddq (Erista Only) and RAM Vdd2 Voltage in uV
|
||||
* Range: 1100'000 to 1250'000 uV
|
||||
* Erista Default(HOS): 1175'000 (bootloader: 1100'000)
|
||||
* Mariko Default: 1175'000 (It will not work without sys-clk-OC.)
|
||||
* Erista Default(HOS): 1125'000 (bootloader: 1100'000)
|
||||
* Mariko Default: 1100'000 (It will not work without sys-clk-OC.)
|
||||
* Value should be divided evenly by 12'500.
|
||||
* Not enabled by default.
|
||||
*/
|
||||
.commonEmcMemVolt = 1175000,
|
||||
.commonEmcMemVolt = 1212500,
|
||||
|
||||
/* Erista CPU:
|
||||
* - Max Voltage in mV
|
||||
* - CpuVoltL4T: 1235
|
||||
*/
|
||||
.eristaCpuMaxVolt = 1257,
|
||||
.eristaCpuMaxVolt = 1235,
|
||||
|
||||
/* Erista EMC(RAM):
|
||||
* - RAM Clock in kHz
|
||||
@@ -69,7 +66,7 @@ volatile CustomizeTable C = {
|
||||
* - Max Voltage in mV:
|
||||
* Default voltage: 1120
|
||||
*/
|
||||
.marikoCpuMaxVolt = 1120,
|
||||
.marikoCpuMaxVolt = 1235,
|
||||
|
||||
/* Mariko EMC(RAM):
|
||||
* - RAM Clock in kHz:
|
||||
@@ -92,40 +89,38 @@ volatile CustomizeTable C = {
|
||||
|
||||
.marikoCpuUV = 0,
|
||||
|
||||
.marikoCpuHighUV = 0,
|
||||
|
||||
.marikoGpuUV = 0,
|
||||
|
||||
.commonGpuVoltOffset = 0,
|
||||
|
||||
.marikoCpuHighVoltOffset = 0,
|
||||
|
||||
.cpuMaxFreq = 1963,
|
||||
.marikoCpuHighUV = 0,
|
||||
|
||||
.gpuMaxFreq = 1152,
|
||||
.cpuMaxFreq = 1963500,
|
||||
|
||||
.EcpuMaxFreq = 1963,
|
||||
|
||||
.EgpuMaxFreq = 921,
|
||||
.gpuMaxFreq = 1267200,
|
||||
|
||||
.marikoEmcDvbShift = 0,
|
||||
|
||||
.ramTimingPresetOne = 0, // T1-3 EOS
|
||||
.ramTimingPresetOne = 4, // T1-3 EOS
|
||||
|
||||
.ramTimingPresetTwo = 0, // T4
|
||||
.ramTimingPresetTwo = 2, // T4
|
||||
|
||||
.ramTimingPresetThree = 0, // Try all values from 0-6
|
||||
.ramTimingPresetThree = 2, // Try all values from 0-6
|
||||
|
||||
.ramTimingPresetFour = 0, // EOS T5
|
||||
.ramTimingPresetFour = 2, // EOS T5
|
||||
|
||||
.ramTimingPresetFive = 0, // EOS T7
|
||||
.ramTimingPresetFive = 2, // EOS T7
|
||||
|
||||
.ramTimingPresetSix = 0, // EOS T8
|
||||
.ramTimingPresetSix = 2, // EOS T8
|
||||
|
||||
.ramTimingPresetSeven = 0,
|
||||
.ramTimingPresetSeven = 2,
|
||||
|
||||
.marikoGpuVoltArray = {635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 660, 685, 715, 745, 765, 785},
|
||||
|
||||
.marikoGpuVoltArray_RAM_OC = {635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 660, 685, 715, 745, 765, 785},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#define CUST_REV 2
|
||||
#define CUST_REV 1
|
||||
|
||||
#include "oc_common.hpp"
|
||||
#include "pcv/pcv_common.hpp"
|
||||
@@ -45,10 +45,7 @@ typedef struct CustomizeTable {
|
||||
u8 cust[4] = {'C', 'U', 'S', 'T'};
|
||||
u32 custRev = CUST_REV;
|
||||
u32 mtcConf;
|
||||
|
||||
u32 marikoCpuBoostClock;
|
||||
u32 eristaCpuBoostClock;
|
||||
|
||||
u32 commonCpuBoostClock;
|
||||
u32 commonEmcMemVolt;
|
||||
u32 eristaCpuMaxVolt;
|
||||
u32 eristaEmcMaxClock;
|
||||
@@ -56,15 +53,13 @@ typedef struct CustomizeTable {
|
||||
u32 marikoEmcMaxClock;
|
||||
u32 marikoEmcVddqVolt;
|
||||
u32 marikoCpuUV;
|
||||
u32 marikoCpuHighUV;
|
||||
u32 marikoGpuUV;
|
||||
u32 commonGpuVoltOffset;
|
||||
u32 marikoCpuHighVoltOffset;
|
||||
u32 marikoCpuHighUV;
|
||||
|
||||
u32 cpuMaxFreq;
|
||||
u32 gpuMaxFreq;
|
||||
u32 EcpuMaxFreq;
|
||||
u32 EgpuMaxFreq;
|
||||
// advanced config
|
||||
u32 marikoEmcDvbShift;
|
||||
u32 ramTimingPresetOne;
|
||||
|
||||
@@ -111,17 +111,17 @@ void SafetyCheck() {
|
||||
}
|
||||
|
||||
sValidator validators[] = {
|
||||
{ C.commonCpuBoostClock, 1020'000, 3010'000, true },
|
||||
{ C.commonCpuBoostClock, 1020'000, C.cpuMaxFreq + 1, true },
|
||||
{ C.commonEmcMemVolt, 1000'000, C.MemVltMax + 1 },
|
||||
{ C.eristaCpuMaxVolt, 1100, C.eristaCPUvMax + 1 },
|
||||
{ C.eristaEmcMaxClock, 1600'000, 2428'800 },
|
||||
{ C.marikoCpuMaxVolt, 800, C.marikoCPUvMax + 1 },
|
||||
{ C.marikoEmcMaxClock, 1600'000, 3504'000 },
|
||||
{ C.marikoEmcVddqVolt, 550'000, C.marikoVDDQMax + 1 },
|
||||
{ eristaCpuDvfsMaxFreq, 204'000, (C.EcpuMaxFreq * 1000) + 1000},
|
||||
{ marikoCpuDvfsMaxFreq, 204'000, (C.cpuMaxFreq * 1000) + 1000 },
|
||||
{ eristaGpuDvfsMaxFreq, 76'800, (C.EgpuMaxFreq * 1000) + 1000 },
|
||||
{ marikoGpuDvfsMaxFreq, 76'800, (C.gpuMaxFreq * 1000) + 1000 },
|
||||
{ eristaCpuDvfsMaxFreq, 1785'000, C.cpuMaxFreq + 1 },
|
||||
{ marikoCpuDvfsMaxFreq, 1785'000, C.cpuMaxFreq + 1 },
|
||||
{ eristaGpuDvfsMaxFreq, 768'000, C.gpuMaxFreq + 1 },
|
||||
{ marikoGpuDvfsMaxFreq, 768'000, C.gpuMaxFreq + 1 },
|
||||
};
|
||||
|
||||
for (auto& i : validators) {
|
||||
|
||||
@@ -17,20 +17,12 @@
|
||||
#include "ptm.hpp"
|
||||
|
||||
namespace ams::ldr::oc::ptm {
|
||||
#ifdef ATMOSPHERE_IS_STRATOSPHERE
|
||||
bool isMariko = (spl::GetSocType() == spl::SocType_Mariko);
|
||||
#else
|
||||
bool isMariko = true;
|
||||
#endif
|
||||
|
||||
Result CpuPtmBoost(perf_conf_entry* entry) {
|
||||
if (!C.commonCpuBoostClock)
|
||||
R_SUCCEED();
|
||||
u32 cpuPtmBoostNew;
|
||||
if(isMariko) {
|
||||
cpuPtmBoostNew = C.marikoCpuBoostClock * 1000;
|
||||
} else {
|
||||
cpuPtmBoostNew = C.eristaCpuBoostClock * 1000;
|
||||
}
|
||||
|
||||
u32 cpuPtmBoostNew = C.commonCpuBoostClock * 1000;
|
||||
|
||||
PATCH_OFFSET(&(entry->cpu_freq_1), cpuPtmBoostNew);
|
||||
PATCH_OFFSET(&(entry->cpu_freq_2), cpuPtmBoostNew);
|
||||
@@ -79,6 +71,13 @@ void Patch(uintptr_t mapped_nso, size_t nso_size) {
|
||||
PatcherEntry<perf_conf_entry> cpuPtmBoostPatch = { "CPU Ptm Boost", &CpuPtmBoost, 2, };
|
||||
PatcherEntry<perf_conf_entry> memPtmPatch = { "MEM Ptm", &MemPtm, 16, };
|
||||
|
||||
#ifdef ATMOSPHERE_IS_STRATOSPHERE
|
||||
bool isMariko = (spl::GetSocType() == spl::SocType_Mariko);
|
||||
#else
|
||||
bool isMariko = true;
|
||||
#endif
|
||||
|
||||
|
||||
for (u32 i = 0; i < entryCnt; i++) {
|
||||
perf_conf_entry* entry = confTable + i;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user