sysclk: rewrite kip config
i am a c programmer, not a c++ programmer.
This commit is contained in:
@@ -59,9 +59,10 @@ typedef enum {
|
|||||||
HocClkConfigValue_LiteTDPLimit,
|
HocClkConfigValue_LiteTDPLimit,
|
||||||
|
|
||||||
HocClkConfigValue_EnforceBoardLimit,
|
HocClkConfigValue_EnforceBoardLimit,
|
||||||
|
|
||||||
KipConfigValue_MTCConf,
|
KipConfigValue_MTCConf,
|
||||||
KipConfigValue_commonCpuBoostClock,
|
KipConfigValue_commonCpuBoostClock,
|
||||||
|
KipConfigValue_hpMode,
|
||||||
KipConfigValue_commonEmcMemVolt,
|
KipConfigValue_commonEmcMemVolt,
|
||||||
KipConfigValue_eristaCpuMaxVolt,
|
KipConfigValue_eristaCpuMaxVolt,
|
||||||
KipConfigValue_eristaEmcMaxClock,
|
KipConfigValue_eristaEmcMaxClock,
|
||||||
@@ -210,9 +211,13 @@ static inline const char* sysclkFormatConfigValue(SysClkConfigValue val, bool pr
|
|||||||
case HocClkConfigValue_LiteTDPLimit:
|
case HocClkConfigValue_LiteTDPLimit:
|
||||||
return pretty ? "Lite TDP Limit" : "tdp_limit_l";
|
return pretty ? "Lite TDP Limit" : "tdp_limit_l";
|
||||||
|
|
||||||
|
// KIP raw values not normally user-facing
|
||||||
|
|
||||||
// KIP config values
|
// KIP config values
|
||||||
case KipConfigValue_MTCConf:
|
case KipConfigValue_MTCConf:
|
||||||
return pretty ? "MTC Config" : "kip_mtc_conf";
|
return pretty ? "MTC Config" : "kip_mtc_conf";
|
||||||
|
case KipConfigValue_hpMode:
|
||||||
|
return pretty ? "KIP HP Mode" : "kip_hp_mode";
|
||||||
case KipConfigValue_commonCpuBoostClock:
|
case KipConfigValue_commonCpuBoostClock:
|
||||||
return pretty ? "Common CPU Boost Clock" : "common_cpu_boost_clock";
|
return pretty ? "Common CPU Boost Clock" : "common_cpu_boost_clock";
|
||||||
case KipConfigValue_commonEmcMemVolt:
|
case KipConfigValue_commonEmcMemVolt:
|
||||||
|
|||||||
@@ -37,6 +37,8 @@
|
|||||||
|
|
||||||
ClockManager *ClockManager::instance = NULL;
|
ClockManager *ClockManager::instance = NULL;
|
||||||
|
|
||||||
|
kip_data_t kip;
|
||||||
|
|
||||||
ClockManager *ClockManager::GetInstance()
|
ClockManager *ClockManager::GetInstance()
|
||||||
{
|
{
|
||||||
return instance;
|
return instance;
|
||||||
@@ -84,7 +86,6 @@ ClockManager::~ClockManager()
|
|||||||
{
|
{
|
||||||
delete this->config;
|
delete this->config;
|
||||||
delete this->context;
|
delete this->context;
|
||||||
delete this->kip;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SysClkContext ClockManager::GetCurrentContext()
|
SysClkContext ClockManager::GetCurrentContext()
|
||||||
@@ -518,214 +519,203 @@ void ClockManager::SetRNXRTMode(ReverseNXMode mode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ClockManager::SetKipData() {
|
void ClockManager::SetKipData() {
|
||||||
// ClockManager::GetInstance()->SetRNXRTMode(mode);
|
|
||||||
// General KIP values
|
// Populate KIP fields from current config. We preserve fields that
|
||||||
this->kip->setMtcConf(this->config->GetConfigValue(KipConfigValue_MTCConf));
|
// don't have corresponding config entries (e.g. custRev, hpMode).
|
||||||
this->kip->setCommonCpuBoostClock(this->config->GetConfigValue(KipConfigValue_commonCpuBoostClock));
|
kip.mtcConf = (uint32_t)this->config->GetConfigValue(KipConfigValue_MTCConf);
|
||||||
this->kip->setCommonEmcMemVolt(this->config->GetConfigValue(KipConfigValue_commonEmcMemVolt));
|
kip.commonCpuBoostClock = (uint32_t)this->config->GetConfigValue(KipConfigValue_commonCpuBoostClock);
|
||||||
|
kip.commonEmcMemVolt = (uint32_t)this->config->GetConfigValue(KipConfigValue_commonEmcMemVolt);
|
||||||
|
|
||||||
// Erista specific
|
// Erista
|
||||||
this->kip->setEristaCpuMaxVolt(this->config->GetConfigValue(KipConfigValue_eristaCpuMaxVolt));
|
kip.eristaCpuMaxVolt = (uint32_t)this->config->GetConfigValue(KipConfigValue_eristaCpuMaxVolt);
|
||||||
this->kip->setEristaEmcMaxClock(this->config->GetConfigValue(KipConfigValue_eristaEmcMaxClock));
|
kip.eristaEmcMaxClock = (uint32_t)this->config->GetConfigValue(KipConfigValue_eristaEmcMaxClock);
|
||||||
|
|
||||||
// Mariko specific
|
// Mariko
|
||||||
this->kip->setMarikoCpuMaxVolt(this->config->GetConfigValue(KipConfigValue_marikoCpuMaxVolt));
|
kip.marikoCpuMaxVolt = (uint32_t)this->config->GetConfigValue(KipConfigValue_marikoCpuMaxVolt);
|
||||||
this->kip->setMarikoEmcMaxClock(this->config->GetConfigValue(KipConfigValue_marikoEmcMaxClock));
|
kip.marikoEmcMaxClock = (uint32_t)this->config->GetConfigValue(KipConfigValue_marikoEmcMaxClock);
|
||||||
this->kip->setMarikoEmcVddqVolt(this->config->GetConfigValue(KipConfigValue_marikoEmcVddqVolt));
|
kip.marikoEmcVddqVolt = (uint32_t)this->config->GetConfigValue(KipConfigValue_marikoEmcVddqVolt);
|
||||||
|
|
||||||
// Undervolt / UV values
|
// Undervolt / UV
|
||||||
this->kip->setMarikoCpuUV(this->config->GetConfigValue(KipConfigValue_marikoCpuUV));
|
kip.marikoCpuUV = (uint32_t)this->config->GetConfigValue(KipConfigValue_marikoCpuUV);
|
||||||
this->kip->setMarikoGpuUV(this->config->GetConfigValue(KipConfigValue_marikoGpuUV));
|
kip.marikoGpuUV = (uint32_t)this->config->GetConfigValue(KipConfigValue_marikoGpuUV);
|
||||||
this->kip->setEristaCpuUV(this->config->GetConfigValue(KipConfigValue_eristaCpuUV));
|
kip.eristaCpuUV = (uint32_t)this->config->GetConfigValue(KipConfigValue_eristaCpuUV);
|
||||||
this->kip->setEristaGpuUV(this->config->GetConfigValue(KipConfigValue_eristaGpuUV));
|
kip.eristaGpuUV = (uint32_t)this->config->GetConfigValue(KipConfigValue_eristaGpuUV);
|
||||||
|
|
||||||
// GPU offset / EMC DVB
|
// GPU offset / EMC DVB
|
||||||
this->kip->setCommonGpuVoltOffset(this->config->GetConfigValue(KipConfigValue_commonGpuVoltOffset));
|
kip.commonGpuVoltOffset = (uint32_t)this->config->GetConfigValue(KipConfigValue_commonGpuVoltOffset);
|
||||||
this->kip->setMarikoEmcDvbShift(this->config->GetConfigValue(KipConfigValue_marikoEmcDvbShift));
|
kip.marikoEmcDvbShift = (uint32_t)this->config->GetConfigValue(KipConfigValue_marikoEmcDvbShift);
|
||||||
|
|
||||||
// Memory timing values
|
// Memory timing values
|
||||||
this->kip->setT1_tRCD(this->config->GetConfigValue(KipConfigValue_t1_tRCD));
|
kip.t1_tRCD = (uint32_t)this->config->GetConfigValue(KipConfigValue_t1_tRCD);
|
||||||
this->kip->setT2_tRP(this->config->GetConfigValue(KipConfigValue_t2_tRP));
|
kip.t2_tRP = (uint32_t)this->config->GetConfigValue(KipConfigValue_t2_tRP);
|
||||||
this->kip->setT3_tRAS(this->config->GetConfigValue(KipConfigValue_t3_tRAS));
|
kip.t3_tRAS = (uint32_t)this->config->GetConfigValue(KipConfigValue_t3_tRAS);
|
||||||
this->kip->setT4_tRRD(this->config->GetConfigValue(KipConfigValue_t4_tRRD));
|
kip.t4_tRRD = (uint32_t)this->config->GetConfigValue(KipConfigValue_t4_tRRD);
|
||||||
this->kip->setT5_tRFC(this->config->GetConfigValue(KipConfigValue_t5_tRFC));
|
kip.t5_tRFC = (uint32_t)this->config->GetConfigValue(KipConfigValue_t5_tRFC);
|
||||||
this->kip->setT6_tRTW(this->config->GetConfigValue(KipConfigValue_t6_tRTW));
|
kip.t6_tRTW = (uint32_t)this->config->GetConfigValue(KipConfigValue_t6_tRTW);
|
||||||
this->kip->setT7_tWTR(this->config->GetConfigValue(KipConfigValue_t7_tWTR));
|
kip.t7_tWTR = (uint32_t)this->config->GetConfigValue(KipConfigValue_t7_tWTR);
|
||||||
this->kip->setT8_tREFI(this->config->GetConfigValue(KipConfigValue_t8_tREFI));
|
kip.t8_tREFI = (uint32_t)this->config->GetConfigValue(KipConfigValue_t8_tREFI);
|
||||||
|
|
||||||
this->kip->setMemBurstReadLatency(this->config->GetConfigValue(KipConfigValue_mem_burst_read_latency));
|
kip.mem_burst_read_latency = (uint32_t)this->config->GetConfigValue(KipConfigValue_mem_burst_read_latency);
|
||||||
this->kip->setMemBurstWriteLatency(this->config->GetConfigValue(KipConfigValue_mem_burst_write_latency));
|
kip.mem_burst_write_latency = (uint32_t)this->config->GetConfigValue(KipConfigValue_mem_burst_write_latency);
|
||||||
|
|
||||||
// Additional voltages
|
// Additional voltages
|
||||||
this->kip->setMarikoCpuHighVmin(this->config->GetConfigValue(KipConfigValue_marikoCpuHighVmin));
|
kip.marikoCpuHighVmin = (uint32_t)this->config->GetConfigValue(KipConfigValue_marikoCpuHighVmin);
|
||||||
this->kip->setMarikoCpuLowVmin(this->config->GetConfigValue(KipConfigValue_marikoCpuLowVmin));
|
kip.marikoCpuLowVmin = (uint32_t)this->config->GetConfigValue(KipConfigValue_marikoCpuLowVmin);
|
||||||
|
kip.eristaGpuVmin = (uint32_t)this->config->GetConfigValue(KipConfigValue_eristaGpuVmin);
|
||||||
|
kip.marikoGpuVmin = (uint32_t)this->config->GetConfigValue(KipConfigValue_marikoGpuVmin);
|
||||||
|
kip.marikoGpuVmax = (uint32_t)this->config->GetConfigValue(KipConfigValue_marikoGpuVmax);
|
||||||
|
|
||||||
this->kip->setEristaGpuVmin(this->config->GetConfigValue(KipConfigValue_eristaGpuVmin));
|
kip.marikoGpuFullUnlock = (uint32_t)this->config->GetConfigValue(KipConfigValue_marikoGpuFullUnlock);
|
||||||
this->kip->setMarikoGpuVmin(this->config->GetConfigValue(KipConfigValue_marikoGpuVmin));
|
|
||||||
this->kip->setMarikoGpuVmax(this->config->GetConfigValue(KipConfigValue_marikoGpuVmax));
|
|
||||||
|
|
||||||
this->kip->setMarikoGpuFullUnlock(this->config->GetConfigValue(KipConfigValue_marikoGpuFullUnlock));
|
|
||||||
|
|
||||||
// Mariko GPU voltages
|
// Mariko GPU voltages
|
||||||
this->kip->setGVolt76800(this->config->GetConfigValue(KipConfigValue_g_volt_76800));
|
kip.g_volt_76800 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_76800);
|
||||||
this->kip->setGVolt153600(this->config->GetConfigValue(KipConfigValue_g_volt_153600));
|
kip.g_volt_153600 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_153600);
|
||||||
this->kip->setGVolt230400(this->config->GetConfigValue(KipConfigValue_g_volt_230400));
|
kip.g_volt_230400 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_230400);
|
||||||
this->kip->setGVolt307200(this->config->GetConfigValue(KipConfigValue_g_volt_307200));
|
kip.g_volt_307200 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_307200);
|
||||||
this->kip->setGVolt384000(this->config->GetConfigValue(KipConfigValue_g_volt_384000));
|
kip.g_volt_384000 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_384000);
|
||||||
this->kip->setGVolt460800(this->config->GetConfigValue(KipConfigValue_g_volt_460800));
|
kip.g_volt_460800 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_460800);
|
||||||
this->kip->setGVolt537600(this->config->GetConfigValue(KipConfigValue_g_volt_537600));
|
kip.g_volt_537600 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_537600);
|
||||||
this->kip->setGVolt614400(this->config->GetConfigValue(KipConfigValue_g_volt_614400));
|
kip.g_volt_614400 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_614400);
|
||||||
this->kip->setGVolt691200(this->config->GetConfigValue(KipConfigValue_g_volt_691200));
|
kip.g_volt_691200 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_691200);
|
||||||
this->kip->setGVolt768000(this->config->GetConfigValue(KipConfigValue_g_volt_768000));
|
kip.g_volt_768000 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_768000);
|
||||||
this->kip->setGVolt844800(this->config->GetConfigValue(KipConfigValue_g_volt_844800));
|
kip.g_volt_844800 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_844800);
|
||||||
this->kip->setGVolt921600(this->config->GetConfigValue(KipConfigValue_g_volt_921600));
|
kip.g_volt_921600 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_921600);
|
||||||
this->kip->setGVolt998400(this->config->GetConfigValue(KipConfigValue_g_volt_998400));
|
kip.g_volt_998400 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_998400);
|
||||||
this->kip->setGVolt1075200(this->config->GetConfigValue(KipConfigValue_g_volt_1075200));
|
kip.g_volt_1075200 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_1075200);
|
||||||
this->kip->setGVolt1152000(this->config->GetConfigValue(KipConfigValue_g_volt_1152000));
|
kip.g_volt_1152000 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_1152000);
|
||||||
this->kip->setGVolt1228800(this->config->GetConfigValue(KipConfigValue_g_volt_1228800));
|
kip.g_volt_1228800 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_1228800);
|
||||||
this->kip->setGVolt1267200(this->config->GetConfigValue(KipConfigValue_g_volt_1267200));
|
kip.g_volt_1267200 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_1267200);
|
||||||
this->kip->setGVolt1305600(this->config->GetConfigValue(KipConfigValue_g_volt_1305600));
|
kip.g_volt_1305600 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_1305600);
|
||||||
this->kip->setGVolt1344000(this->config->GetConfigValue(KipConfigValue_g_volt_1344000));
|
kip.g_volt_1344000 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_1344000);
|
||||||
this->kip->setGVolt1382400(this->config->GetConfigValue(KipConfigValue_g_volt_1382400));
|
kip.g_volt_1382400 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_1382400);
|
||||||
this->kip->setGVolt1420800(this->config->GetConfigValue(KipConfigValue_g_volt_1420800));
|
kip.g_volt_1420800 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_1420800);
|
||||||
this->kip->setGVolt1459200(this->config->GetConfigValue(KipConfigValue_g_volt_1459200));
|
kip.g_volt_1459200 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_1459200);
|
||||||
this->kip->setGVolt1497600(this->config->GetConfigValue(KipConfigValue_g_volt_1497600));
|
kip.g_volt_1497600 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_1497600);
|
||||||
this->kip->setGVolt1536000(this->config->GetConfigValue(KipConfigValue_g_volt_1536000));
|
kip.g_volt_1536000 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_1536000);
|
||||||
|
|
||||||
// Erista GPU voltages
|
// Erista GPU voltages
|
||||||
this->kip->setGVoltE76800(this->config->GetConfigValue(KipConfigValue_g_volt_e_76800));
|
kip.g_volt_e_76800 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_76800);
|
||||||
this->kip->setGVoltE115200(this->config->GetConfigValue(KipConfigValue_g_volt_e_115200));
|
kip.g_volt_e_115200 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_115200);
|
||||||
this->kip->setGVoltE153600(this->config->GetConfigValue(KipConfigValue_g_volt_e_153600));
|
kip.g_volt_e_153600 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_153600);
|
||||||
this->kip->setGVoltE192000(this->config->GetConfigValue(KipConfigValue_g_volt_e_192000));
|
kip.g_volt_e_192000 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_192000);
|
||||||
this->kip->setGVoltE230400(this->config->GetConfigValue(KipConfigValue_g_volt_e_230400));
|
kip.g_volt_e_230400 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_230400);
|
||||||
this->kip->setGVoltE268800(this->config->GetConfigValue(KipConfigValue_g_volt_e_268800));
|
kip.g_volt_e_268800 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_268800);
|
||||||
this->kip->setGVoltE307200(this->config->GetConfigValue(KipConfigValue_g_volt_e_307200));
|
kip.g_volt_e_307200 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_307200);
|
||||||
this->kip->setGVoltE345600(this->config->GetConfigValue(KipConfigValue_g_volt_e_345600));
|
kip.g_volt_e_345600 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_345600);
|
||||||
this->kip->setGVoltE384000(this->config->GetConfigValue(KipConfigValue_g_volt_e_384000));
|
kip.g_volt_e_384000 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_384000);
|
||||||
this->kip->setGVoltE422400(this->config->GetConfigValue(KipConfigValue_g_volt_e_422400));
|
kip.g_volt_e_422400 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_422400);
|
||||||
this->kip->setGVoltE460800(this->config->GetConfigValue(KipConfigValue_g_volt_e_460800));
|
kip.g_volt_e_460800 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_460800);
|
||||||
this->kip->setGVoltE499200(this->config->GetConfigValue(KipConfigValue_g_volt_e_499200));
|
kip.g_volt_e_499200 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_499200);
|
||||||
this->kip->setGVoltE537600(this->config->GetConfigValue(KipConfigValue_g_volt_e_537600));
|
kip.g_volt_e_537600 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_537600);
|
||||||
this->kip->setGVoltE576000(this->config->GetConfigValue(KipConfigValue_g_volt_e_576000));
|
kip.g_volt_e_576000 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_576000);
|
||||||
this->kip->setGVoltE614400(this->config->GetConfigValue(KipConfigValue_g_volt_e_614400));
|
kip.g_volt_e_614400 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_614400);
|
||||||
this->kip->setGVoltE652800(this->config->GetConfigValue(KipConfigValue_g_volt_e_652800));
|
kip.g_volt_e_652800 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_652800);
|
||||||
this->kip->setGVoltE691200(this->config->GetConfigValue(KipConfigValue_g_volt_e_691200));
|
kip.g_volt_e_691200 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_691200);
|
||||||
this->kip->setGVoltE729600(this->config->GetConfigValue(KipConfigValue_g_volt_e_729600));
|
kip.g_volt_e_729600 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_729600);
|
||||||
this->kip->setGVoltE768000(this->config->GetConfigValue(KipConfigValue_g_volt_e_768000));
|
kip.g_volt_e_768000 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_768000);
|
||||||
this->kip->setGVoltE806400(this->config->GetConfigValue(KipConfigValue_g_volt_e_806400));
|
kip.g_volt_e_806400 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_806400);
|
||||||
this->kip->setGVoltE844800(this->config->GetConfigValue(KipConfigValue_g_volt_e_844800));
|
kip.g_volt_e_844800 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_844800);
|
||||||
this->kip->setGVoltE883200(this->config->GetConfigValue(KipConfigValue_g_volt_e_883200));
|
kip.g_volt_e_883200 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_883200);
|
||||||
this->kip->setGVoltE921600(this->config->GetConfigValue(KipConfigValue_g_volt_e_921600));
|
kip.g_volt_e_921600 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_921600);
|
||||||
this->kip->setGVoltE960000(this->config->GetConfigValue(KipConfigValue_g_volt_e_960000));
|
kip.g_volt_e_960000 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_960000);
|
||||||
this->kip->setGVoltE998400(this->config->GetConfigValue(KipConfigValue_g_volt_e_998400));
|
kip.g_volt_e_998400 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_998400);
|
||||||
this->kip->setGVoltE1036800(this->config->GetConfigValue(KipConfigValue_g_volt_e_1036800));
|
kip.g_volt_e_1036800 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_1036800);
|
||||||
this->kip->setGVoltE1075200(this->config->GetConfigValue(KipConfigValue_g_volt_e_1075200));
|
kip.g_volt_e_1075200 = (uint32_t)this->config->GetConfigValue(KipConfigValue_g_volt_e_1075200);
|
||||||
|
|
||||||
// Persist changes to KIP
|
|
||||||
this->kip->writeKip();
|
|
||||||
|
|
||||||
|
kip_write("loader.kip", &kip, sizeof(kip));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClockManager::GetKipConfigValues() {
|
void ClockManager::GetKipData() {
|
||||||
// General KIP values
|
kip_read("loader.kip", &kip, sizeof(kip));
|
||||||
this->config->SetConfigValue(KipConfigValue_MTCConf, this->kip->getMtcConf());
|
|
||||||
this->config->SetConfigValue(KipConfigValue_commonCpuBoostClock, this->kip->getCommonCpuBoostClock());
|
|
||||||
this->config->SetConfigValue(KipConfigValue_commonEmcMemVolt, this->kip->getCommonEmcMemVolt());
|
|
||||||
|
|
||||||
// Erista specific
|
this->config->SetConfigValue(KipConfigValue_MTCConf, kip.mtcConf);
|
||||||
this->config->SetConfigValue(KipConfigValue_eristaCpuMaxVolt, this->kip->getEristaCpuMaxVolt());
|
this->config->SetConfigValue(KipConfigValue_commonCpuBoostClock, kip.commonCpuBoostClock);
|
||||||
this->config->SetConfigValue(KipConfigValue_eristaEmcMaxClock, this->kip->getEristaEmcMaxClock());
|
this->config->SetConfigValue(KipConfigValue_hpMode, kip.hpMode);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_commonEmcMemVolt, kip.commonEmcMemVolt);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_eristaCpuMaxVolt, kip.eristaCpuMaxVolt);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_eristaEmcMaxClock, kip.eristaEmcMaxClock);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_marikoCpuMaxVolt, kip.marikoCpuMaxVolt);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_marikoEmcMaxClock, kip.marikoEmcMaxClock);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_marikoEmcVddqVolt, kip.marikoEmcVddqVolt);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_marikoCpuUV, kip.marikoCpuUV);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_marikoGpuUV, kip.marikoGpuUV);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_eristaCpuUV, kip.eristaCpuUV);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_eristaGpuUV, kip.eristaGpuUV);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_commonGpuVoltOffset, kip.commonGpuVoltOffset);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_marikoEmcDvbShift, kip.marikoEmcDvbShift);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_t1_tRCD, kip.t1_tRCD);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_t2_tRP, kip.t2_tRP);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_t3_tRAS, kip.t3_tRAS);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_t4_tRRD, kip.t4_tRRD);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_t5_tRFC, kip.t5_tRFC);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_t6_tRTW, kip.t6_tRTW);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_t7_tWTR, kip.t7_tWTR);
|
||||||
|
this->config->SetConfigValue(KipConfigValue_t8_tREFI, kip.t8_tREFI);
|
||||||
|
|
||||||
// Mariko specific
|
this->config->SetConfigValue(KipConfigValue_mem_burst_read_latency, kip.mem_burst_read_latency);
|
||||||
this->config->SetConfigValue(KipConfigValue_marikoCpuMaxVolt, this->kip->getMarikoCpuMaxVolt());
|
this->config->SetConfigValue(KipConfigValue_mem_burst_write_latency, kip.mem_burst_write_latency);
|
||||||
this->config->SetConfigValue(KipConfigValue_marikoEmcMaxClock, this->kip->getMarikoEmcMaxClock());
|
|
||||||
this->config->SetConfigValue(KipConfigValue_marikoEmcVddqVolt, this->kip->getMarikoEmcVddqVolt());
|
|
||||||
|
|
||||||
// Undervolt / UV values
|
this->config->SetConfigValue(KipConfigValue_marikoCpuHighVmin, kip.marikoCpuHighVmin);
|
||||||
this->config->SetConfigValue(KipConfigValue_marikoCpuUV, this->kip->getMarikoCpuUV());
|
this->config->SetConfigValue(KipConfigValue_marikoCpuLowVmin, kip.marikoCpuLowVmin);
|
||||||
this->config->SetConfigValue(KipConfigValue_marikoGpuUV, this->kip->getMarikoGpuUV());
|
|
||||||
this->config->SetConfigValue(KipConfigValue_eristaCpuUV, this->kip->getEristaCpuUV());
|
|
||||||
this->config->SetConfigValue(KipConfigValue_eristaGpuUV, this->kip->getEristaGpuUV());
|
|
||||||
|
|
||||||
// GPU offset / EMC DVB
|
this->config->SetConfigValue(KipConfigValue_eristaGpuVmin, kip.eristaGpuVmin);
|
||||||
this->config->SetConfigValue(KipConfigValue_commonGpuVoltOffset, this->kip->getCommonGpuVoltOffset());
|
this->config->SetConfigValue(KipConfigValue_marikoGpuVmin, kip.marikoGpuVmin);
|
||||||
this->config->SetConfigValue(KipConfigValue_marikoEmcDvbShift, this->kip->getMarikoEmcDvbShift());
|
this->config->SetConfigValue(KipConfigValue_marikoGpuVmax, kip.marikoGpuVmax);
|
||||||
|
|
||||||
// Memory timing values
|
this->config->SetConfigValue(KipConfigValue_marikoGpuFullUnlock, kip.marikoGpuFullUnlock);
|
||||||
this->config->SetConfigValue(KipConfigValue_t1_tRCD, this->kip->getT1_tRCD());
|
|
||||||
this->config->SetConfigValue(KipConfigValue_t2_tRP, this->kip->getT2_tRP());
|
|
||||||
this->config->SetConfigValue(KipConfigValue_t3_tRAS, this->kip->getT3_tRAS());
|
|
||||||
this->config->SetConfigValue(KipConfigValue_t4_tRRD, this->kip->getT4_tRRD());
|
|
||||||
this->config->SetConfigValue(KipConfigValue_t5_tRFC, this->kip->getT5_tRFC());
|
|
||||||
this->config->SetConfigValue(KipConfigValue_t6_tRTW, this->kip->getT6_tRTW());
|
|
||||||
this->config->SetConfigValue(KipConfigValue_t7_tWTR, this->kip->getT7_tWTR());
|
|
||||||
this->config->SetConfigValue(KipConfigValue_t8_tREFI, this->kip->getT8_tREFI());
|
|
||||||
|
|
||||||
this->config->SetConfigValue(KipConfigValue_mem_burst_read_latency, this->kip->getMemBurstReadLatency());
|
|
||||||
this->config->SetConfigValue(KipConfigValue_mem_burst_write_latency, this->kip->getMemBurstWriteLatency());
|
|
||||||
|
|
||||||
// Additional voltages
|
|
||||||
this->config->SetConfigValue(KipConfigValue_marikoCpuHighVmin, this->kip->getMarikoCpuHighVmin());
|
|
||||||
this->config->SetConfigValue(KipConfigValue_marikoCpuLowVmin, this->kip->getMarikoCpuLowVmin());
|
|
||||||
|
|
||||||
this->config->SetConfigValue(KipConfigValue_eristaGpuVmin, this->kip->getEristaGpuVmin());
|
|
||||||
this->config->SetConfigValue(KipConfigValue_marikoGpuVmin, this->kip->getMarikoGpuVmin());
|
|
||||||
this->config->SetConfigValue(KipConfigValue_marikoGpuVmax, this->kip->getMarikoGpuVmax());
|
|
||||||
|
|
||||||
this->config->SetConfigValue(KipConfigValue_marikoGpuFullUnlock, this->kip->getMarikoGpuFullUnlock());
|
|
||||||
|
|
||||||
// Mariko GPU voltages
|
// Mariko GPU voltages
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_76800, this->kip->getGVolt76800());
|
this->config->SetConfigValue(KipConfigValue_g_volt_76800, kip.g_volt_76800);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_153600, this->kip->getGVolt153600());
|
this->config->SetConfigValue(KipConfigValue_g_volt_153600, kip.g_volt_153600);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_230400, this->kip->getGVolt230400());
|
this->config->SetConfigValue(KipConfigValue_g_volt_230400, kip.g_volt_230400);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_307200, this->kip->getGVolt307200());
|
this->config->SetConfigValue(KipConfigValue_g_volt_307200, kip.g_volt_307200);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_384000, this->kip->getGVolt384000());
|
this->config->SetConfigValue(KipConfigValue_g_volt_384000, kip.g_volt_384000);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_460800, this->kip->getGVolt460800());
|
this->config->SetConfigValue(KipConfigValue_g_volt_460800, kip.g_volt_460800);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_537600, this->kip->getGVolt537600());
|
this->config->SetConfigValue(KipConfigValue_g_volt_537600, kip.g_volt_537600);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_614400, this->kip->getGVolt614400());
|
this->config->SetConfigValue(KipConfigValue_g_volt_614400, kip.g_volt_614400);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_691200, this->kip->getGVolt691200());
|
this->config->SetConfigValue(KipConfigValue_g_volt_691200, kip.g_volt_691200);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_768000, this->kip->getGVolt768000());
|
this->config->SetConfigValue(KipConfigValue_g_volt_768000, kip.g_volt_768000);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_844800, this->kip->getGVolt844800());
|
this->config->SetConfigValue(KipConfigValue_g_volt_844800, kip.g_volt_844800);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_921600, this->kip->getGVolt921600());
|
this->config->SetConfigValue(KipConfigValue_g_volt_921600, kip.g_volt_921600);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_998400, this->kip->getGVolt998400());
|
this->config->SetConfigValue(KipConfigValue_g_volt_998400, kip.g_volt_998400);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_1075200, this->kip->getGVolt1075200());
|
this->config->SetConfigValue(KipConfigValue_g_volt_1075200, kip.g_volt_1075200);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_1152000, this->kip->getGVolt1152000());
|
this->config->SetConfigValue(KipConfigValue_g_volt_1152000, kip.g_volt_1152000);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_1228800, this->kip->getGVolt1228800());
|
this->config->SetConfigValue(KipConfigValue_g_volt_1228800, kip.g_volt_1228800);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_1267200, this->kip->getGVolt1267200());
|
this->config->SetConfigValue(KipConfigValue_g_volt_1267200, kip.g_volt_1267200);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_1305600, this->kip->getGVolt1305600());
|
this->config->SetConfigValue(KipConfigValue_g_volt_1305600, kip.g_volt_1305600);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_1344000, this->kip->getGVolt1344000());
|
this->config->SetConfigValue(KipConfigValue_g_volt_1344000, kip.g_volt_1344000);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_1382400, this->kip->getGVolt1382400());
|
this->config->SetConfigValue(KipConfigValue_g_volt_1382400, kip.g_volt_1382400);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_1420800, this->kip->getGVolt1420800());
|
this->config->SetConfigValue(KipConfigValue_g_volt_1420800, kip.g_volt_1420800);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_1459200, this->kip->getGVolt1459200());
|
this->config->SetConfigValue(KipConfigValue_g_volt_1459200, kip.g_volt_1459200);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_1497600, this->kip->getGVolt1497600());
|
this->config->SetConfigValue(KipConfigValue_g_volt_1497600, kip.g_volt_1497600);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_1536000, this->kip->getGVolt1536000());
|
this->config->SetConfigValue(KipConfigValue_g_volt_1536000, kip.g_volt_1536000);
|
||||||
|
|
||||||
// Erista GPU voltages
|
// Erista GPU voltages
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_76800, this->kip->getGVoltE76800());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_76800, kip.g_volt_e_76800);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_115200, this->kip->getGVoltE115200());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_115200, kip.g_volt_e_115200);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_153600, this->kip->getGVoltE153600());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_153600, kip.g_volt_e_153600);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_192000, this->kip->getGVoltE192000());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_192000, kip.g_volt_e_192000);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_230400, this->kip->getGVoltE230400());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_230400, kip.g_volt_e_230400);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_268800, this->kip->getGVoltE268800());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_268800, kip.g_volt_e_268800);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_307200, this->kip->getGVoltE307200());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_307200, kip.g_volt_e_307200);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_345600, this->kip->getGVoltE345600());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_345600, kip.g_volt_e_345600);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_384000, this->kip->getGVoltE384000());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_384000, kip.g_volt_e_384000);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_422400, this->kip->getGVoltE422400());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_422400, kip.g_volt_e_422400);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_460800, this->kip->getGVoltE460800());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_460800, kip.g_volt_e_460800);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_499200, this->kip->getGVoltE499200());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_499200, kip.g_volt_e_499200);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_537600, this->kip->getGVoltE537600());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_537600, kip.g_volt_e_537600);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_576000, this->kip->getGVoltE576000());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_576000, kip.g_volt_e_576000);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_614400, this->kip->getGVoltE614400());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_614400, kip.g_volt_e_614400);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_652800, this->kip->getGVoltE652800());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_652800, kip.g_volt_e_652800);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_691200, this->kip->getGVoltE691200());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_691200, kip.g_volt_e_691200);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_729600, this->kip->getGVoltE729600());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_729600, kip.g_volt_e_729600);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_768000, this->kip->getGVoltE768000());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_768000, kip.g_volt_e_768000);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_806400, this->kip->getGVoltE806400());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_806400, kip.g_volt_e_806400);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_844800, this->kip->getGVoltE844800());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_844800, kip.g_volt_e_844800);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_883200, this->kip->getGVoltE883200());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_883200, kip.g_volt_e_883200);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_921600, this->kip->getGVoltE921600());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_921600, kip.g_volt_e_921600);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_960000, this->kip->getGVoltE960000());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_960000, kip.g_volt_e_960000);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_998400, this->kip->getGVoltE998400());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_998400, kip.g_volt_e_998400);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_1036800, this->kip->getGVoltE1036800());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_1036800, kip.g_volt_e_1036800);
|
||||||
this->config->SetConfigValue(KipConfigValue_g_volt_e_1075200, this->kip->getGVoltE1075200());
|
this->config->SetConfigValue(KipConfigValue_g_volt_e_1075200, kip.g_volt_e_1075200);
|
||||||
}
|
}
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
#include "board.h"
|
#include "board.h"
|
||||||
#include <nxExt/cpp/lockable_mutex.h>
|
#include <nxExt/cpp/lockable_mutex.h>
|
||||||
#include "integrations.h"
|
#include "integrations.h"
|
||||||
#include "kip_handler.hpp"
|
#include "kip_handler.h"
|
||||||
|
|
||||||
class ReverseNXSync;
|
class ReverseNXSync;
|
||||||
|
|
||||||
@@ -60,14 +60,12 @@ class ClockManager
|
|||||||
void WaitForNextTick();
|
void WaitForNextTick();
|
||||||
void SetRNXRTMode(ReverseNXMode mode);
|
void SetRNXRTMode(ReverseNXMode mode);
|
||||||
void SetKipData();
|
void SetKipData();
|
||||||
void GetKipConfigValues();
|
void GetKipData();
|
||||||
struct {
|
struct {
|
||||||
std::uint32_t count;
|
std::uint32_t count;
|
||||||
std::uint32_t list[SYSCLK_FREQ_LIST_MAX];
|
std::uint32_t list[SYSCLK_FREQ_LIST_MAX];
|
||||||
} freqTable[SysClkModule_EnumMax];
|
} freqTable[SysClkModule_EnumMax];
|
||||||
protected:
|
protected:
|
||||||
KipHandler* kip = new KipHandler("sdmc:/atmosphere/kips/hoc.kip");
|
|
||||||
|
|
||||||
bool IsAssignableHz(SysClkModule module, std::uint32_t hz);
|
bool IsAssignableHz(SysClkModule module, std::uint32_t hz);
|
||||||
std::uint32_t GetMaxAllowedHz(SysClkModule module, SysClkProfile profile);
|
std::uint32_t GetMaxAllowedHz(SysClkModule module, SysClkProfile profile);
|
||||||
std::uint32_t GetNearestHz(SysClkModule module, std::uint32_t inHz, std::uint32_t maxHz);
|
std::uint32_t GetNearestHz(SysClkModule module, std::uint32_t inHz, std::uint32_t maxHz);
|
||||||
|
|||||||
@@ -370,7 +370,7 @@ Result IpcService::SetKipData() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Result IpcService::GetKipData() {
|
Result IpcService::GetKipData() {
|
||||||
ClockManager::GetInstance()->GetKipConfigValues();
|
ClockManager::GetInstance()->GetKipData();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,6 @@
|
|||||||
#include <nxExt.h>
|
#include <nxExt.h>
|
||||||
#include <sysclk.h>
|
#include <sysclk.h>
|
||||||
#include "clock_manager.h"
|
#include "clock_manager.h"
|
||||||
#include "kip_handler.hpp"
|
|
||||||
|
|
||||||
class IpcService
|
class IpcService
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,297 +0,0 @@
|
|||||||
/*
|
|
||||||
* HOC Configurator - KIP Handler Implementation
|
|
||||||
* Copyright (C) Dominatorul, Souldbminer
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "kip_handler.hpp"
|
|
||||||
#include <fstream>
|
|
||||||
#include <cstring>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
bool KipHandler::readKip() {
|
|
||||||
std::ifstream file(kipPath, std::ios::binary);
|
|
||||||
if (!file.is_open()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read entire file
|
|
||||||
file.seekg(0, std::ios::end);
|
|
||||||
size_t fileSize = file.tellg();
|
|
||||||
file.seekg(0, std::ios::beg);
|
|
||||||
|
|
||||||
std::vector<uint8_t> buffer(fileSize);
|
|
||||||
file.read(reinterpret_cast<char*>(buffer.data()), fileSize);
|
|
||||||
file.close();
|
|
||||||
|
|
||||||
// Find CUST magic
|
|
||||||
size_t magicPos = 0;
|
|
||||||
bool found = false;
|
|
||||||
for (size_t i = 0; i < fileSize - 4; i++) {
|
|
||||||
if (memcmp(&buffer[i], MAGIC, 4) == 0) {
|
|
||||||
magicPos = i + 4;
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!found) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read structure (assuming packed uint32_t structure)
|
|
||||||
size_t offset = magicPos;
|
|
||||||
auto readU32 = [&]() -> uint32_t {
|
|
||||||
uint32_t val;
|
|
||||||
memcpy(&val, &buffer[offset], sizeof(uint32_t));
|
|
||||||
offset += sizeof(uint32_t);
|
|
||||||
return val;
|
|
||||||
};
|
|
||||||
|
|
||||||
data.custRev = readU32();
|
|
||||||
data.mtcConf = readU32();
|
|
||||||
data.hpMode = readU32();
|
|
||||||
|
|
||||||
data.commonCpuBoostClock = readU32();
|
|
||||||
data.commonEmcMemVolt = readU32();
|
|
||||||
data.eristaCpuMaxVolt = readU32();
|
|
||||||
data.eristaEmcMaxClock = readU32();
|
|
||||||
data.marikoCpuMaxVolt = readU32();
|
|
||||||
data.marikoEmcMaxClock = readU32();
|
|
||||||
data.marikoEmcVddqVolt = readU32();
|
|
||||||
data.marikoCpuUV = readU32();
|
|
||||||
data.marikoGpuUV = readU32();
|
|
||||||
data.eristaCpuUV = readU32();
|
|
||||||
data.eristaGpuUV = readU32();
|
|
||||||
data.commonGpuVoltOffset = readU32();
|
|
||||||
data.marikoEmcDvbShift = readU32();
|
|
||||||
|
|
||||||
// Memory timings
|
|
||||||
data.t1_tRCD = readU32();
|
|
||||||
data.t2_tRP = readU32();
|
|
||||||
data.t3_tRAS = readU32();
|
|
||||||
data.t4_tRRD = readU32();
|
|
||||||
data.t5_tRFC = readU32();
|
|
||||||
data.t6_tRTW = readU32();
|
|
||||||
data.t7_tWTR = readU32();
|
|
||||||
data.t8_tREFI = readU32();
|
|
||||||
data.mem_burst_read_latency = readU32();
|
|
||||||
data.mem_burst_write_latency = readU32();
|
|
||||||
|
|
||||||
// Additional voltages
|
|
||||||
data.marikoCpuHighVmin = readU32();
|
|
||||||
data.marikoCpuLowVmin = readU32();
|
|
||||||
data.eristaGpuVmin = readU32();
|
|
||||||
data.marikoGpuVmin = readU32();
|
|
||||||
data.marikoGpuVmax = readU32();
|
|
||||||
|
|
||||||
data.marikoGpuFullUnlock = readU32();
|
|
||||||
|
|
||||||
// GPU voltages Mariko
|
|
||||||
data.g_volt_76800 = readU32();
|
|
||||||
data.g_volt_153600 = readU32();
|
|
||||||
data.g_volt_230400 = readU32();
|
|
||||||
data.g_volt_307200 = readU32();
|
|
||||||
data.g_volt_384000 = readU32();
|
|
||||||
data.g_volt_460800 = readU32();
|
|
||||||
data.g_volt_537600 = readU32();
|
|
||||||
data.g_volt_614400 = readU32();
|
|
||||||
data.g_volt_691200 = readU32();
|
|
||||||
data.g_volt_768000 = readU32();
|
|
||||||
data.g_volt_844800 = readU32();
|
|
||||||
data.g_volt_921600 = readU32();
|
|
||||||
data.g_volt_998400 = readU32();
|
|
||||||
data.g_volt_1075200 = readU32();
|
|
||||||
data.g_volt_1152000 = readU32();
|
|
||||||
data.g_volt_1228800 = readU32();
|
|
||||||
data.g_volt_1267200 = readU32();
|
|
||||||
data.g_volt_1305600 = readU32();
|
|
||||||
data.g_volt_1344000 = readU32();
|
|
||||||
data.g_volt_1382400 = readU32();
|
|
||||||
data.g_volt_1420800 = readU32();
|
|
||||||
data.g_volt_1459200 = readU32();
|
|
||||||
data.g_volt_1497600 = readU32();
|
|
||||||
data.g_volt_1536000 = readU32();
|
|
||||||
|
|
||||||
// GPU voltages Erista
|
|
||||||
data.g_volt_e_76800 = readU32();
|
|
||||||
data.g_volt_e_115200 = readU32();
|
|
||||||
|
|
||||||
data.g_volt_e_153600 = readU32();
|
|
||||||
data.g_volt_e_192000 = readU32();
|
|
||||||
|
|
||||||
data.g_volt_e_230400 = readU32();
|
|
||||||
data.g_volt_e_268800 = readU32();
|
|
||||||
|
|
||||||
data.g_volt_e_307200 = readU32();
|
|
||||||
data.g_volt_e_345600 = readU32();
|
|
||||||
|
|
||||||
data.g_volt_e_384000 = readU32();
|
|
||||||
data.g_volt_e_422400 = readU32();
|
|
||||||
|
|
||||||
data.g_volt_e_460800 = readU32();
|
|
||||||
data.g_volt_e_499200 = readU32();
|
|
||||||
|
|
||||||
data.g_volt_e_537600 = readU32();
|
|
||||||
data.g_volt_e_576000 = readU32();
|
|
||||||
|
|
||||||
data.g_volt_e_614400 = readU32();
|
|
||||||
data.g_volt_e_652800 = readU32();
|
|
||||||
|
|
||||||
data.g_volt_e_691200 = readU32();
|
|
||||||
data.g_volt_e_729600 = readU32();
|
|
||||||
|
|
||||||
data.g_volt_e_768000 = readU32();
|
|
||||||
data.g_volt_e_806400 = readU32();
|
|
||||||
|
|
||||||
data.g_volt_e_844800 = readU32();
|
|
||||||
data.g_volt_e_883200 = readU32();
|
|
||||||
|
|
||||||
data.g_volt_e_921600 = readU32();
|
|
||||||
data.g_volt_e_960000 = readU32();
|
|
||||||
|
|
||||||
data.g_volt_e_998400 = readU32();
|
|
||||||
data.g_volt_e_1036800 = readU32();
|
|
||||||
|
|
||||||
data.g_volt_e_1075200 = readU32();
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool KipHandler::writeKip() {
|
|
||||||
std::fstream file(kipPath, std::ios::in | std::ios::out | std::ios::binary);
|
|
||||||
if (!file.is_open()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read entire file
|
|
||||||
file.seekg(0, std::ios::end);
|
|
||||||
size_t fileSize = file.tellg();
|
|
||||||
file.seekg(0, std::ios::beg);
|
|
||||||
|
|
||||||
std::vector<uint8_t> buffer(fileSize);
|
|
||||||
file.read(reinterpret_cast<char*>(buffer.data()), fileSize);
|
|
||||||
|
|
||||||
// Find CUST magic
|
|
||||||
size_t magicPos = 0;
|
|
||||||
bool found = false;
|
|
||||||
for (size_t i = 0; i < fileSize - 4; i++) {
|
|
||||||
if (memcmp(&buffer[i], MAGIC, 4) == 0) {
|
|
||||||
magicPos = i + 4;
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!found) {
|
|
||||||
file.close();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Write structure
|
|
||||||
size_t offset = magicPos;
|
|
||||||
auto writeU32 = [&](uint32_t val) {
|
|
||||||
memcpy(&buffer[offset], &val, sizeof(uint32_t));
|
|
||||||
offset += sizeof(uint32_t);
|
|
||||||
};
|
|
||||||
|
|
||||||
writeU32(data.custRev);
|
|
||||||
writeU32(data.mtcConf);
|
|
||||||
writeU32(data.hpMode);
|
|
||||||
writeU32(data.commonCpuBoostClock);
|
|
||||||
writeU32(data.commonEmcMemVolt);
|
|
||||||
writeU32(data.eristaCpuMaxVolt);
|
|
||||||
writeU32(data.eristaEmcMaxClock);
|
|
||||||
writeU32(data.marikoCpuMaxVolt);
|
|
||||||
writeU32(data.marikoEmcMaxClock);
|
|
||||||
writeU32(data.marikoEmcVddqVolt);
|
|
||||||
writeU32(data.marikoCpuUV);
|
|
||||||
writeU32(data.marikoGpuUV);
|
|
||||||
writeU32(data.eristaCpuUV);
|
|
||||||
writeU32(data.eristaGpuUV);
|
|
||||||
writeU32(data.commonGpuVoltOffset);
|
|
||||||
writeU32(data.marikoEmcDvbShift);
|
|
||||||
|
|
||||||
// Memory timings
|
|
||||||
writeU32(data.t1_tRCD);
|
|
||||||
writeU32(data.t2_tRP);
|
|
||||||
writeU32(data.t3_tRAS);
|
|
||||||
writeU32(data.t4_tRRD);
|
|
||||||
writeU32(data.t5_tRFC);
|
|
||||||
writeU32(data.t6_tRTW);
|
|
||||||
writeU32(data.t7_tWTR);
|
|
||||||
writeU32(data.t8_tREFI);
|
|
||||||
writeU32(data.mem_burst_read_latency);
|
|
||||||
writeU32(data.mem_burst_write_latency);
|
|
||||||
|
|
||||||
// Additional voltages
|
|
||||||
writeU32(data.marikoCpuHighVmin);
|
|
||||||
writeU32(data.marikoCpuLowVmin);
|
|
||||||
|
|
||||||
writeU32(data.eristaGpuVmin);
|
|
||||||
writeU32(data.marikoGpuVmin);
|
|
||||||
writeU32(data.marikoGpuVmax);
|
|
||||||
|
|
||||||
writeU32(data.marikoGpuFullUnlock);
|
|
||||||
|
|
||||||
// GPU voltages Mariko
|
|
||||||
writeU32(data.g_volt_76800);
|
|
||||||
writeU32(data.g_volt_153600);
|
|
||||||
writeU32(data.g_volt_230400);
|
|
||||||
writeU32(data.g_volt_307200);
|
|
||||||
writeU32(data.g_volt_384000);
|
|
||||||
writeU32(data.g_volt_460800);
|
|
||||||
writeU32(data.g_volt_537600);
|
|
||||||
writeU32(data.g_volt_614400);
|
|
||||||
writeU32(data.g_volt_691200);
|
|
||||||
writeU32(data.g_volt_768000);
|
|
||||||
writeU32(data.g_volt_844800);
|
|
||||||
writeU32(data.g_volt_921600);
|
|
||||||
writeU32(data.g_volt_998400);
|
|
||||||
writeU32(data.g_volt_1075200);
|
|
||||||
writeU32(data.g_volt_1152000);
|
|
||||||
writeU32(data.g_volt_1228800);
|
|
||||||
writeU32(data.g_volt_1267200);
|
|
||||||
writeU32(data.g_volt_1305600);
|
|
||||||
writeU32(data.g_volt_1344000);
|
|
||||||
writeU32(data.g_volt_1382400);
|
|
||||||
writeU32(data.g_volt_1420800);
|
|
||||||
writeU32(data.g_volt_1459200);
|
|
||||||
writeU32(data.g_volt_1497600);
|
|
||||||
writeU32(data.g_volt_1536000);
|
|
||||||
|
|
||||||
// GPU voltages Erista
|
|
||||||
writeU32(data.g_volt_e_76800);
|
|
||||||
writeU32(data.g_volt_e_115200);
|
|
||||||
writeU32(data.g_volt_e_153600);
|
|
||||||
writeU32(data.g_volt_e_192000);
|
|
||||||
writeU32(data.g_volt_e_230400);
|
|
||||||
writeU32(data.g_volt_e_268800);
|
|
||||||
writeU32(data.g_volt_e_307200);
|
|
||||||
writeU32(data.g_volt_e_345600);
|
|
||||||
writeU32(data.g_volt_e_384000);
|
|
||||||
writeU32(data.g_volt_e_422400);
|
|
||||||
writeU32(data.g_volt_e_460800);
|
|
||||||
writeU32(data.g_volt_e_499200);
|
|
||||||
writeU32(data.g_volt_e_537600);
|
|
||||||
writeU32(data.g_volt_e_576000);
|
|
||||||
writeU32(data.g_volt_e_614400);
|
|
||||||
writeU32(data.g_volt_e_652800);
|
|
||||||
writeU32(data.g_volt_e_691200);
|
|
||||||
writeU32(data.g_volt_e_729600);
|
|
||||||
writeU32(data.g_volt_e_768000);
|
|
||||||
writeU32(data.g_volt_e_806400);
|
|
||||||
writeU32(data.g_volt_e_844800);
|
|
||||||
writeU32(data.g_volt_e_883200);
|
|
||||||
writeU32(data.g_volt_e_921600);
|
|
||||||
writeU32(data.g_volt_e_960000);
|
|
||||||
writeU32(data.g_volt_e_998400);
|
|
||||||
writeU32(data.g_volt_e_1036800);
|
|
||||||
writeU32(data.g_volt_e_1075200);
|
|
||||||
|
|
||||||
// Write back to file
|
|
||||||
file.seekp(0, std::ios::beg);
|
|
||||||
file.write(reinterpret_cast<char*>(buffer.data()), fileSize);
|
|
||||||
file.close();
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
182
Source/sys-clk/sysmodule/src/kip_handler.h
Normal file
182
Source/sys-clk/sysmodule/src/kip_handler.h
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
#ifndef KIP_H
|
||||||
|
#define KIP_H
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#define KIP_MAGIC "CUST"
|
||||||
|
#define KIP_MAGIC_LEN 4
|
||||||
|
#define KIP_MAX_STRUCT 4096
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint32_t custRev;
|
||||||
|
uint32_t mtcConf;
|
||||||
|
uint32_t hpMode;
|
||||||
|
uint32_t commonCpuBoostClock;
|
||||||
|
uint32_t commonEmcMemVolt;
|
||||||
|
uint32_t eristaCpuMaxVolt;
|
||||||
|
uint32_t eristaEmcMaxClock;
|
||||||
|
uint32_t marikoCpuMaxVolt;
|
||||||
|
uint32_t marikoEmcMaxClock;
|
||||||
|
uint32_t marikoEmcVddqVolt;
|
||||||
|
uint32_t marikoCpuUV;
|
||||||
|
uint32_t marikoGpuUV;
|
||||||
|
uint32_t eristaCpuUV;
|
||||||
|
uint32_t eristaGpuUV;
|
||||||
|
uint32_t commonGpuVoltOffset;
|
||||||
|
uint32_t marikoEmcDvbShift;
|
||||||
|
|
||||||
|
uint32_t t1_tRCD;
|
||||||
|
uint32_t t2_tRP;
|
||||||
|
uint32_t t3_tRAS;
|
||||||
|
uint32_t t4_tRRD;
|
||||||
|
uint32_t t5_tRFC;
|
||||||
|
uint32_t t6_tRTW;
|
||||||
|
uint32_t t7_tWTR;
|
||||||
|
uint32_t t8_tREFI;
|
||||||
|
uint32_t mem_burst_read_latency;
|
||||||
|
uint32_t mem_burst_write_latency;
|
||||||
|
uint32_t marikoCpuHighVmin;
|
||||||
|
uint32_t marikoCpuLowVmin;
|
||||||
|
uint32_t eristaGpuVmin;
|
||||||
|
uint32_t marikoGpuVmin;
|
||||||
|
uint32_t marikoGpuVmax;
|
||||||
|
|
||||||
|
uint32_t marikoGpuFullUnlock;
|
||||||
|
|
||||||
|
uint32_t g_volt_76800;
|
||||||
|
uint32_t g_volt_153600;
|
||||||
|
uint32_t g_volt_230400;
|
||||||
|
uint32_t g_volt_307200;
|
||||||
|
uint32_t g_volt_384000;
|
||||||
|
uint32_t g_volt_460800;
|
||||||
|
uint32_t g_volt_537600;
|
||||||
|
uint32_t g_volt_614400;
|
||||||
|
uint32_t g_volt_691200;
|
||||||
|
uint32_t g_volt_768000;
|
||||||
|
uint32_t g_volt_844800;
|
||||||
|
uint32_t g_volt_921600;
|
||||||
|
uint32_t g_volt_998400;
|
||||||
|
uint32_t g_volt_1075200;
|
||||||
|
uint32_t g_volt_1152000;
|
||||||
|
uint32_t g_volt_1228800;
|
||||||
|
uint32_t g_volt_1267200;
|
||||||
|
uint32_t g_volt_1305600;
|
||||||
|
uint32_t g_volt_1344000;
|
||||||
|
uint32_t g_volt_1382400;
|
||||||
|
uint32_t g_volt_1420800;
|
||||||
|
uint32_t g_volt_1459200;
|
||||||
|
uint32_t g_volt_1497600;
|
||||||
|
uint32_t g_volt_1536000;
|
||||||
|
|
||||||
|
uint32_t g_volt_e_76800;
|
||||||
|
uint32_t g_volt_e_115200;
|
||||||
|
uint32_t g_volt_e_153600;
|
||||||
|
uint32_t g_volt_e_192000;
|
||||||
|
uint32_t g_volt_e_230400;
|
||||||
|
uint32_t g_volt_e_268800;
|
||||||
|
uint32_t g_volt_e_307200;
|
||||||
|
uint32_t g_volt_e_345600;
|
||||||
|
uint32_t g_volt_e_384000;
|
||||||
|
uint32_t g_volt_e_422400;
|
||||||
|
uint32_t g_volt_e_460800;
|
||||||
|
uint32_t g_volt_e_499200;
|
||||||
|
uint32_t g_volt_e_537600;
|
||||||
|
uint32_t g_volt_e_576000;
|
||||||
|
uint32_t g_volt_e_614400;
|
||||||
|
uint32_t g_volt_e_652800;
|
||||||
|
uint32_t g_volt_e_691200;
|
||||||
|
uint32_t g_volt_e_729600;
|
||||||
|
uint32_t g_volt_e_768000;
|
||||||
|
uint32_t g_volt_e_806400;
|
||||||
|
uint32_t g_volt_e_844800;
|
||||||
|
uint32_t g_volt_e_883200;
|
||||||
|
uint32_t g_volt_e_921600;
|
||||||
|
uint32_t g_volt_e_960000;
|
||||||
|
uint32_t g_volt_e_998400;
|
||||||
|
uint32_t g_volt_e_1036800;
|
||||||
|
uint32_t g_volt_e_1075200;
|
||||||
|
} kip_data_t;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static long kip_find_magic(FILE *f)
|
||||||
|
{
|
||||||
|
unsigned char buf[4096 + KIP_MAGIC_LEN];
|
||||||
|
size_t r;
|
||||||
|
long offset = 0;
|
||||||
|
|
||||||
|
memset(buf, 0, sizeof(buf));
|
||||||
|
fseek(f, 0, SEEK_SET);
|
||||||
|
|
||||||
|
while ((r = fread(buf + KIP_MAGIC_LEN, 1, 4096, f)) > 0)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < r; i++)
|
||||||
|
{
|
||||||
|
if (memcmp(buf + i, KIP_MAGIC, KIP_MAGIC_LEN) == 0)
|
||||||
|
{
|
||||||
|
return offset + i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(buf, buf + 4096, KIP_MAGIC_LEN);
|
||||||
|
offset += r;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static int kip_read(const char *path, void *out_struct, size_t struct_size)
|
||||||
|
{
|
||||||
|
if (struct_size > KIP_MAX_STRUCT)
|
||||||
|
return -3;
|
||||||
|
|
||||||
|
FILE *f = fopen(path, "rb");
|
||||||
|
if (!f)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
long magic_pos = kip_find_magic(f);
|
||||||
|
if (magic_pos < 0) {
|
||||||
|
fclose(f);
|
||||||
|
return -2; /* magic not found */
|
||||||
|
}
|
||||||
|
|
||||||
|
long data_pos = magic_pos + KIP_MAGIC_LEN;
|
||||||
|
fseek(f, data_pos, SEEK_SET);
|
||||||
|
|
||||||
|
size_t r = fread(out_struct, 1, struct_size, f);
|
||||||
|
fclose(f);
|
||||||
|
|
||||||
|
return (r == struct_size) ? 0 : -4;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static int kip_write(const char *path, const void *in_struct, size_t struct_size)
|
||||||
|
{
|
||||||
|
if (struct_size > KIP_MAX_STRUCT)
|
||||||
|
return -3;
|
||||||
|
|
||||||
|
FILE *f = fopen(path, "r+b");
|
||||||
|
if (!f)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
long magic_pos = kip_find_magic(f);
|
||||||
|
if (magic_pos < 0) {
|
||||||
|
fclose(f);
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
|
long data_pos = magic_pos + KIP_MAGIC_LEN;
|
||||||
|
fseek(f, data_pos, SEEK_SET);
|
||||||
|
|
||||||
|
size_t w = fwrite(in_struct, 1, struct_size, f);
|
||||||
|
fclose(f);
|
||||||
|
|
||||||
|
return (w == struct_size) ? 0 : -4;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* KIP_H */
|
||||||
@@ -1,328 +0,0 @@
|
|||||||
/*
|
|
||||||
* HOC Configurator - KIP Handler
|
|
||||||
* Copyright (C) Dominatorul, Souldbminer
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
#include <string>
|
|
||||||
#include <cstdint>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
class KipHandler {
|
|
||||||
private:
|
|
||||||
std::string kipPath = "sdmc:/atmosphere/kips/hoc.kip";
|
|
||||||
const uint8_t MAGIC[4] = {'C', 'U', 'S', 'T'};
|
|
||||||
|
|
||||||
struct KipData {
|
|
||||||
uint32_t custRev;
|
|
||||||
uint32_t mtcConf;
|
|
||||||
uint32_t hpMode;
|
|
||||||
uint32_t commonCpuBoostClock;
|
|
||||||
uint32_t commonEmcMemVolt;
|
|
||||||
uint32_t eristaCpuMaxVolt;
|
|
||||||
uint32_t eristaEmcMaxClock;
|
|
||||||
uint32_t marikoCpuMaxVolt;
|
|
||||||
uint32_t marikoEmcMaxClock;
|
|
||||||
uint32_t marikoEmcVddqVolt;
|
|
||||||
uint32_t marikoCpuUV;
|
|
||||||
uint32_t marikoGpuUV;
|
|
||||||
uint32_t eristaCpuUV;
|
|
||||||
uint32_t eristaGpuUV;
|
|
||||||
uint32_t commonGpuVoltOffset;
|
|
||||||
uint32_t marikoEmcDvbShift;
|
|
||||||
|
|
||||||
// Memory timings
|
|
||||||
uint32_t t1_tRCD;
|
|
||||||
uint32_t t2_tRP;
|
|
||||||
uint32_t t3_tRAS;
|
|
||||||
uint32_t t4_tRRD;
|
|
||||||
uint32_t t5_tRFC;
|
|
||||||
uint32_t t6_tRTW;
|
|
||||||
uint32_t t7_tWTR;
|
|
||||||
uint32_t t8_tREFI;
|
|
||||||
uint32_t mem_burst_read_latency;
|
|
||||||
uint32_t mem_burst_write_latency;
|
|
||||||
|
|
||||||
// Additional voltages
|
|
||||||
uint32_t marikoCpuHighVmin;
|
|
||||||
uint32_t marikoCpuLowVmin;
|
|
||||||
|
|
||||||
uint32_t eristaGpuVmin;
|
|
||||||
uint32_t marikoGpuVmin;
|
|
||||||
uint32_t marikoGpuVmax;
|
|
||||||
|
|
||||||
uint32_t marikoGpuFullUnlock;
|
|
||||||
|
|
||||||
// GPU voltages for each frequency (Mariko)
|
|
||||||
uint32_t g_volt_76800;
|
|
||||||
uint32_t g_volt_153600;
|
|
||||||
uint32_t g_volt_230400;
|
|
||||||
uint32_t g_volt_307200;
|
|
||||||
uint32_t g_volt_384000;
|
|
||||||
uint32_t g_volt_460800;
|
|
||||||
uint32_t g_volt_537600;
|
|
||||||
uint32_t g_volt_614400;
|
|
||||||
uint32_t g_volt_691200;
|
|
||||||
uint32_t g_volt_768000;
|
|
||||||
uint32_t g_volt_844800;
|
|
||||||
uint32_t g_volt_921600;
|
|
||||||
uint32_t g_volt_998400;
|
|
||||||
uint32_t g_volt_1075200;
|
|
||||||
uint32_t g_volt_1152000;
|
|
||||||
uint32_t g_volt_1228800;
|
|
||||||
uint32_t g_volt_1267200;
|
|
||||||
uint32_t g_volt_1305600;
|
|
||||||
uint32_t g_volt_1344000;
|
|
||||||
uint32_t g_volt_1382400;
|
|
||||||
uint32_t g_volt_1420800;
|
|
||||||
uint32_t g_volt_1459200;
|
|
||||||
uint32_t g_volt_1497600;
|
|
||||||
uint32_t g_volt_1536000;
|
|
||||||
|
|
||||||
// GPU voltages for each frequency (Erista)
|
|
||||||
uint32_t g_volt_e_76800;
|
|
||||||
uint32_t g_volt_e_115200;
|
|
||||||
uint32_t g_volt_e_153600;
|
|
||||||
uint32_t g_volt_e_192000;
|
|
||||||
|
|
||||||
uint32_t g_volt_e_230400;
|
|
||||||
uint32_t g_volt_e_268800;
|
|
||||||
|
|
||||||
uint32_t g_volt_e_307200;
|
|
||||||
uint32_t g_volt_e_345600;
|
|
||||||
|
|
||||||
uint32_t g_volt_e_384000;
|
|
||||||
uint32_t g_volt_e_422400;
|
|
||||||
|
|
||||||
uint32_t g_volt_e_460800;
|
|
||||||
uint32_t g_volt_e_499200;
|
|
||||||
|
|
||||||
uint32_t g_volt_e_537600;
|
|
||||||
uint32_t g_volt_e_576000;
|
|
||||||
|
|
||||||
uint32_t g_volt_e_614400;
|
|
||||||
uint32_t g_volt_e_652800;
|
|
||||||
|
|
||||||
uint32_t g_volt_e_691200;
|
|
||||||
uint32_t g_volt_e_729600;
|
|
||||||
|
|
||||||
uint32_t g_volt_e_768000;
|
|
||||||
uint32_t g_volt_e_806400;
|
|
||||||
|
|
||||||
uint32_t g_volt_e_844800;
|
|
||||||
uint32_t g_volt_e_883200;
|
|
||||||
|
|
||||||
uint32_t g_volt_e_921600;
|
|
||||||
uint32_t g_volt_e_960000;
|
|
||||||
uint32_t g_volt_e_998400;
|
|
||||||
uint32_t g_volt_e_1036800;
|
|
||||||
uint32_t g_volt_e_1075200;
|
|
||||||
};
|
|
||||||
|
|
||||||
KipData data;
|
|
||||||
|
|
||||||
public:
|
|
||||||
KipHandler(const std::string& path) : kipPath(path) {
|
|
||||||
// Initialize with defaults
|
|
||||||
}
|
|
||||||
|
|
||||||
bool readKip();
|
|
||||||
bool writeKip();
|
|
||||||
|
|
||||||
// Getters
|
|
||||||
KipData& getData() { return data; }
|
|
||||||
const KipData& getData() const { return data; }
|
|
||||||
|
|
||||||
// Setters for all KipData fields
|
|
||||||
// void setCustRev(uint32_t val) { data.custRev = val; }
|
|
||||||
void setMtcConf(uint32_t val) { data.mtcConf = val; }
|
|
||||||
void setHpMode(uint32_t val) { data.hpMode = val; }
|
|
||||||
void setCommonCpuBoostClock(uint32_t val) { data.commonCpuBoostClock = val; }
|
|
||||||
void setCommonEmcMemVolt(uint32_t val) { data.commonEmcMemVolt = val; }
|
|
||||||
void setEristaCpuMaxVolt(uint32_t val) { data.eristaCpuMaxVolt = val; }
|
|
||||||
void setEristaEmcMaxClock(uint32_t val) { data.eristaEmcMaxClock = val; }
|
|
||||||
void setMarikoCpuMaxVolt(uint32_t val) { data.marikoCpuMaxVolt = val; }
|
|
||||||
void setMarikoEmcMaxClock(uint32_t val) { data.marikoEmcMaxClock = val; }
|
|
||||||
void setMarikoEmcVddqVolt(uint32_t val) { data.marikoEmcVddqVolt = val; }
|
|
||||||
void setMarikoCpuUV(uint32_t val) { data.marikoCpuUV = val; }
|
|
||||||
void setMarikoGpuUV(uint32_t val) { data.marikoGpuUV = val; }
|
|
||||||
void setEristaCpuUV(uint32_t val) { data.eristaCpuUV = val; }
|
|
||||||
void setEristaGpuUV(uint32_t val) { data.eristaGpuUV = val; }
|
|
||||||
void setCommonGpuVoltOffset(uint32_t val) { data.commonGpuVoltOffset = val; }
|
|
||||||
void setMarikoEmcDvbShift(uint32_t val) { data.marikoEmcDvbShift = val; }
|
|
||||||
|
|
||||||
// Memory timing setters
|
|
||||||
void setT1_tRCD(uint32_t val) { data.t1_tRCD = val; }
|
|
||||||
void setT2_tRP(uint32_t val) { data.t2_tRP = val; }
|
|
||||||
void setT3_tRAS(uint32_t val) { data.t3_tRAS = val; }
|
|
||||||
void setT4_tRRD(uint32_t val) { data.t4_tRRD = val; }
|
|
||||||
void setT5_tRFC(uint32_t val) { data.t5_tRFC = val; }
|
|
||||||
void setT6_tRTW(uint32_t val) { data.t6_tRTW = val; }
|
|
||||||
void setT7_tWTR(uint32_t val) { data.t7_tWTR = val; }
|
|
||||||
void setT8_tREFI(uint32_t val) { data.t8_tREFI = val; }
|
|
||||||
void setMemBurstReadLatency(uint32_t val) { data.mem_burst_read_latency = val; }
|
|
||||||
void setMemBurstWriteLatency(uint32_t val) { data.mem_burst_write_latency = val; }
|
|
||||||
|
|
||||||
// Additional voltage setters
|
|
||||||
void setMarikoCpuHighVmin(uint32_t val) { data.marikoCpuHighVmin = val; }
|
|
||||||
void setMarikoCpuLowVmin(uint32_t val) { data.marikoCpuLowVmin = val; }
|
|
||||||
void setEristaGpuVmin(uint32_t val) { data.eristaGpuVmin = val; }
|
|
||||||
void setMarikoGpuVmin(uint32_t val) { data.marikoGpuVmin = val; }
|
|
||||||
void setMarikoGpuVmax(uint32_t val) { data.marikoGpuVmax = val; }
|
|
||||||
void setMarikoGpuFullUnlock(uint32_t val) { data.marikoGpuFullUnlock = val; }
|
|
||||||
|
|
||||||
// GPU voltage setters for Mariko
|
|
||||||
void setGVolt76800(uint32_t val) { data.g_volt_76800 = val; }
|
|
||||||
void setGVolt153600(uint32_t val) { data.g_volt_153600 = val; }
|
|
||||||
void setGVolt230400(uint32_t val) { data.g_volt_230400 = val; }
|
|
||||||
void setGVolt307200(uint32_t val) { data.g_volt_307200 = val; }
|
|
||||||
void setGVolt384000(uint32_t val) { data.g_volt_384000 = val; }
|
|
||||||
void setGVolt460800(uint32_t val) { data.g_volt_460800 = val; }
|
|
||||||
void setGVolt537600(uint32_t val) { data.g_volt_537600 = val; }
|
|
||||||
void setGVolt614400(uint32_t val) { data.g_volt_614400 = val; }
|
|
||||||
void setGVolt691200(uint32_t val) { data.g_volt_691200 = val; }
|
|
||||||
void setGVolt768000(uint32_t val) { data.g_volt_768000 = val; }
|
|
||||||
void setGVolt844800(uint32_t val) { data.g_volt_844800 = val; }
|
|
||||||
void setGVolt921600(uint32_t val) { data.g_volt_921600 = val; }
|
|
||||||
void setGVolt998400(uint32_t val) { data.g_volt_998400 = val; }
|
|
||||||
void setGVolt1075200(uint32_t val) { data.g_volt_1075200 = val; }
|
|
||||||
void setGVolt1152000(uint32_t val) { data.g_volt_1152000 = val; }
|
|
||||||
void setGVolt1228800(uint32_t val) { data.g_volt_1228800 = val; }
|
|
||||||
void setGVolt1267200(uint32_t val) { data.g_volt_1267200 = val; }
|
|
||||||
void setGVolt1305600(uint32_t val) { data.g_volt_1305600 = val; }
|
|
||||||
void setGVolt1344000(uint32_t val) { data.g_volt_1344000 = val; }
|
|
||||||
void setGVolt1382400(uint32_t val) { data.g_volt_1382400 = val; }
|
|
||||||
void setGVolt1420800(uint32_t val) { data.g_volt_1420800 = val; }
|
|
||||||
void setGVolt1459200(uint32_t val) { data.g_volt_1459200 = val; }
|
|
||||||
void setGVolt1497600(uint32_t val) { data.g_volt_1497600 = val; }
|
|
||||||
void setGVolt1536000(uint32_t val) { data.g_volt_1536000 = val; }
|
|
||||||
|
|
||||||
// GPU voltage setters for Erista
|
|
||||||
void setGVoltE76800(uint32_t val) { data.g_volt_e_76800 = val; }
|
|
||||||
void setGVoltE115200(uint32_t val) { data.g_volt_e_115200 = val; }
|
|
||||||
void setGVoltE153600(uint32_t val) { data.g_volt_e_153600 = val; }
|
|
||||||
void setGVoltE192000(uint32_t val) { data.g_volt_e_192000 = val; }
|
|
||||||
void setGVoltE230400(uint32_t val) { data.g_volt_e_230400 = val; }
|
|
||||||
void setGVoltE268800(uint32_t val) { data.g_volt_e_268800 = val; }
|
|
||||||
void setGVoltE307200(uint32_t val) { data.g_volt_e_307200 = val; }
|
|
||||||
void setGVoltE345600(uint32_t val) { data.g_volt_e_345600 = val; }
|
|
||||||
void setGVoltE384000(uint32_t val) { data.g_volt_e_384000 = val; }
|
|
||||||
void setGVoltE422400(uint32_t val) { data.g_volt_e_422400 = val; }
|
|
||||||
void setGVoltE460800(uint32_t val) { data.g_volt_e_460800 = val; }
|
|
||||||
void setGVoltE499200(uint32_t val) { data.g_volt_e_499200 = val; }
|
|
||||||
void setGVoltE537600(uint32_t val) { data.g_volt_e_537600 = val; }
|
|
||||||
void setGVoltE576000(uint32_t val) { data.g_volt_e_576000 = val; }
|
|
||||||
void setGVoltE614400(uint32_t val) { data.g_volt_e_614400 = val; }
|
|
||||||
void setGVoltE652800(uint32_t val) { data.g_volt_e_652800 = val; }
|
|
||||||
void setGVoltE691200(uint32_t val) { data.g_volt_e_691200 = val; }
|
|
||||||
void setGVoltE729600(uint32_t val) { data.g_volt_e_729600 = val; }
|
|
||||||
void setGVoltE768000(uint32_t val) { data.g_volt_e_768000 = val; }
|
|
||||||
void setGVoltE806400(uint32_t val) { data.g_volt_e_806400 = val; }
|
|
||||||
void setGVoltE844800(uint32_t val) { data.g_volt_e_844800 = val; }
|
|
||||||
void setGVoltE883200(uint32_t val) { data.g_volt_e_883200 = val; }
|
|
||||||
void setGVoltE921600(uint32_t val) { data.g_volt_e_921600 = val; }
|
|
||||||
void setGVoltE960000(uint32_t val) { data.g_volt_e_960000 = val; }
|
|
||||||
void setGVoltE998400(uint32_t val) { data.g_volt_e_998400 = val; }
|
|
||||||
void setGVoltE1036800(uint32_t val) { data.g_volt_e_1036800 = val; }
|
|
||||||
void setGVoltE1075200(uint32_t val) { data.g_volt_e_1075200 = val; }
|
|
||||||
|
|
||||||
// Getters for all KipData fields
|
|
||||||
uint32_t getMtcConf() const { return data.mtcConf; }
|
|
||||||
uint32_t getHpMode() const { return data.hpMode; }
|
|
||||||
uint32_t getCommonCpuBoostClock() const { return data.commonCpuBoostClock; }
|
|
||||||
uint32_t getCommonEmcMemVolt() const { return data.commonEmcMemVolt; }
|
|
||||||
uint32_t getEristaCpuMaxVolt() const { return data.eristaCpuMaxVolt; }
|
|
||||||
uint32_t getEristaEmcMaxClock() const { return data.eristaEmcMaxClock; }
|
|
||||||
uint32_t getMarikoCpuMaxVolt() const { return data.marikoCpuMaxVolt; }
|
|
||||||
uint32_t getMarikoEmcMaxClock() const { return data.marikoEmcMaxClock; }
|
|
||||||
uint32_t getMarikoEmcVddqVolt() const { return data.marikoEmcVddqVolt; }
|
|
||||||
uint32_t getMarikoCpuUV() const { return data.marikoCpuUV; }
|
|
||||||
uint32_t getMarikoGpuUV() const { return data.marikoGpuUV; }
|
|
||||||
uint32_t getEristaCpuUV() const { return data.eristaCpuUV; }
|
|
||||||
uint32_t getEristaGpuUV() const { return data.eristaGpuUV; }
|
|
||||||
uint32_t getCommonGpuVoltOffset() const { return data.commonGpuVoltOffset; }
|
|
||||||
uint32_t getMarikoEmcDvbShift() const { return data.marikoEmcDvbShift; }
|
|
||||||
|
|
||||||
// Memory timing getters
|
|
||||||
uint32_t getT1_tRCD() const { return data.t1_tRCD; }
|
|
||||||
uint32_t getT2_tRP() const { return data.t2_tRP; }
|
|
||||||
uint32_t getT3_tRAS() const { return data.t3_tRAS; }
|
|
||||||
uint32_t getT4_tRRD() const { return data.t4_tRRD; }
|
|
||||||
uint32_t getT5_tRFC() const { return data.t5_tRFC; }
|
|
||||||
uint32_t getT6_tRTW() const { return data.t6_tRTW; }
|
|
||||||
uint32_t getT7_tWTR() const { return data.t7_tWTR; }
|
|
||||||
uint32_t getT8_tREFI() const { return data.t8_tREFI; }
|
|
||||||
uint32_t getMemBurstReadLatency() const { return data.mem_burst_read_latency; }
|
|
||||||
uint32_t getMemBurstWriteLatency() const { return data.mem_burst_write_latency; }
|
|
||||||
|
|
||||||
// Additional voltage getters
|
|
||||||
uint32_t getMarikoCpuHighVmin() const { return data.marikoCpuHighVmin; }
|
|
||||||
uint32_t getMarikoCpuLowVmin() const { return data.marikoCpuLowVmin; }
|
|
||||||
uint32_t getEristaGpuVmin() const { return data.eristaGpuVmin; }
|
|
||||||
uint32_t getMarikoGpuVmin() const { return data.marikoGpuVmin; }
|
|
||||||
uint32_t getMarikoGpuVmax() const { return data.marikoGpuVmax; }
|
|
||||||
uint32_t getMarikoGpuFullUnlock() const { return data.marikoGpuFullUnlock; }
|
|
||||||
|
|
||||||
// GPU voltage getters for Mariko
|
|
||||||
uint32_t getGVolt76800() const { return data.g_volt_76800; }
|
|
||||||
uint32_t getGVolt153600() const { return data.g_volt_153600; }
|
|
||||||
uint32_t getGVolt230400() const { return data.g_volt_230400; }
|
|
||||||
uint32_t getGVolt307200() const { return data.g_volt_307200; }
|
|
||||||
uint32_t getGVolt384000() const { return data.g_volt_384000; }
|
|
||||||
uint32_t getGVolt460800() const { return data.g_volt_460800; }
|
|
||||||
uint32_t getGVolt537600() const { return data.g_volt_537600; }
|
|
||||||
uint32_t getGVolt614400() const { return data.g_volt_614400; }
|
|
||||||
uint32_t getGVolt691200() const { return data.g_volt_691200; }
|
|
||||||
uint32_t getGVolt768000() const { return data.g_volt_768000; }
|
|
||||||
uint32_t getGVolt844800() const { return data.g_volt_844800; }
|
|
||||||
uint32_t getGVolt921600() const { return data.g_volt_921600; }
|
|
||||||
uint32_t getGVolt998400() const { return data.g_volt_998400; }
|
|
||||||
uint32_t getGVolt1075200() const { return data.g_volt_1075200; }
|
|
||||||
uint32_t getGVolt1152000() const { return data.g_volt_1152000; }
|
|
||||||
uint32_t getGVolt1228800() const { return data.g_volt_1228800; }
|
|
||||||
uint32_t getGVolt1267200() const { return data.g_volt_1267200; }
|
|
||||||
uint32_t getGVolt1305600() const { return data.g_volt_1305600; }
|
|
||||||
uint32_t getGVolt1344000() const { return data.g_volt_1344000; }
|
|
||||||
uint32_t getGVolt1382400() const { return data.g_volt_1382400; }
|
|
||||||
uint32_t getGVolt1420800() const { return data.g_volt_1420800; }
|
|
||||||
uint32_t getGVolt1459200() const { return data.g_volt_1459200; }
|
|
||||||
uint32_t getGVolt1497600() const { return data.g_volt_1497600; }
|
|
||||||
uint32_t getGVolt1536000() const { return data.g_volt_1536000; }
|
|
||||||
|
|
||||||
// GPU voltage getters for Erista
|
|
||||||
uint32_t getGVoltE76800() const { return data.g_volt_e_76800; }
|
|
||||||
uint32_t getGVoltE115200() const { return data.g_volt_e_115200; }
|
|
||||||
uint32_t getGVoltE153600() const { return data.g_volt_e_153600; }
|
|
||||||
uint32_t getGVoltE192000() const { return data.g_volt_e_192000; }
|
|
||||||
uint32_t getGVoltE230400() const { return data.g_volt_e_230400; }
|
|
||||||
uint32_t getGVoltE268800() const { return data.g_volt_e_268800; }
|
|
||||||
uint32_t getGVoltE307200() const { return data.g_volt_e_307200; }
|
|
||||||
uint32_t getGVoltE345600() const { return data.g_volt_e_345600; }
|
|
||||||
uint32_t getGVoltE384000() const { return data.g_volt_e_384000; }
|
|
||||||
uint32_t getGVoltE422400() const { return data.g_volt_e_422400; }
|
|
||||||
uint32_t getGVoltE460800() const { return data.g_volt_e_460800; }
|
|
||||||
uint32_t getGVoltE499200() const { return data.g_volt_e_499200; }
|
|
||||||
uint32_t getGVoltE537600() const { return data.g_volt_e_537600; }
|
|
||||||
uint32_t getGVoltE576000() const { return data.g_volt_e_576000; }
|
|
||||||
uint32_t getGVoltE614400() const { return data.g_volt_e_614400; }
|
|
||||||
uint32_t getGVoltE652800() const { return data.g_volt_e_652800; }
|
|
||||||
uint32_t getGVoltE691200() const { return data.g_volt_e_691200; }
|
|
||||||
uint32_t getGVoltE729600() const { return data.g_volt_e_729600; }
|
|
||||||
uint32_t getGVoltE768000() const { return data.g_volt_e_768000; }
|
|
||||||
uint32_t getGVoltE806400() const { return data.g_volt_e_806400; }
|
|
||||||
uint32_t getGVoltE844800() const { return data.g_volt_e_844800; }
|
|
||||||
uint32_t getGVoltE883200() const { return data.g_volt_e_883200; }
|
|
||||||
uint32_t getGVoltE921600() const { return data.g_volt_e_921600; }
|
|
||||||
uint32_t getGVoltE960000() const { return data.g_volt_e_960000; }
|
|
||||||
uint32_t getGVoltE998400() const { return data.g_volt_e_998400; }
|
|
||||||
uint32_t getGVoltE1036800() const { return data.g_volt_e_1036800; }
|
|
||||||
uint32_t getGVoltE1075200() const { return data.g_volt_e_1075200; }
|
|
||||||
|
|
||||||
// Utility
|
|
||||||
std::string getKipPath() const { return kipPath; }
|
|
||||||
void setKipPath(const std::string& path) { kipPath = path; }
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline void storeKipValues() {
|
|
||||||
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user