diff --git a/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv.cpp b/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv.cpp index 3260df31..47b5a135 100644 --- a/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv.cpp +++ b/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv.cpp @@ -73,8 +73,8 @@ Result MemVoltHandler(u32* ptr) { } void SafetyCheck() { - if (C.custRev != CUST_REV) - CRASH("Triggered"); + // if (C.custRev != CUST_REV) + // CRASH("Triggered"); struct sValidator { volatile u32 value; 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 0d23e8d9..16115da0 100644 --- a/Source/sys-clk/overlay/src/ui/gui/misc_gui.cpp +++ b/Source/sys-clk/overlay/src/ui/gui/misc_gui.cpp @@ -353,21 +353,21 @@ void MiscGui::listUI() // addFreqButton(HocClkConfigValue_EristaMaxMemClock, nullptr, SysClkModule_MEM, emc_freq_label_e); // } - std::vector autoAdjOptions = { - NamedValue("AUTO_ADJ", 0), - NamedValue("AUTO_ADJ_BL", 1) - }; + // std::vector autoAdjOptions = { + // NamedValue("AUTO_ADJ", 0), + // NamedValue("AUTO_ADJ_BL", 1) + // }; - addConfigButton( - KipConfigValue_mtcConf, - "MTC Configuration", - ValueRange(0, 1, 1, "", 1), - "MTC Configuration", - &thresholdsDisabled, - {}, - autoAdjOptions, - false - ); + // addConfigButton( + // KipConfigValue_mtcConf, + // "MTC Configuration", + // ValueRange(0, 1, 1, "", 1), + // "MTC Configuration", + // &thresholdsDisabled, + // {}, + // autoAdjOptions, + // false + // ); addConfigToggle(KipConfigValue_hpMode, "HP Mode"); diff --git a/Source/sys-clk/sysmodule/src/clock_manager.cpp b/Source/sys-clk/sysmodule/src/clock_manager.cpp index bec39e27..da9c97cb 100644 --- a/Source/sys-clk/sysmodule/src/clock_manager.cpp +++ b/Source/sys-clk/sysmodule/src/clock_manager.cpp @@ -34,6 +34,7 @@ #include "ipc_service.h" #include "kip.h" #include "i2c_reg.h" +#include "notification.h" #define HOSPPC_HAS_BOOST (hosversionAtLeast(7,0,0)) @@ -529,10 +530,18 @@ void ClockManager::SetRNXRTMode(ReverseNXMode mode) } void ClockManager::SetKipData() { + + if(Board::GetSocType() == SysClkSocType_Mariko) { + if(I2c_BuckConverter_SetMvOut(&I2c_Mariko_DRAM_VDDQ, this->config->GetConfigValue(KipConfigValue_marikoEmcVddqVolt) / 1000)) { + FileUtils::LogLine("[clock_manager] Failed set i2c vddq"); + writeNotification("Horizon OC\nFailed to write I2C\nwhile setting vddq"); + } + } CustomizeTable table; if (!cust_read_and_cache(this->config->GetConfigValue(HocClkConfigValue_KipFileName) ? "sdmc:/atmosphere/kips/loader.kip" : "sdmc:/atmosphere/kips/hoc.kip", &table)) { FileUtils::LogLine("[clock_manager] Failed to read KIP file"); + writeNotification("Horizon OC\nKip read failed"); return; } @@ -594,6 +603,7 @@ void ClockManager::SetKipData() { if (!cust_write_table(this->config->GetConfigValue(HocClkConfigValue_KipFileName) ? "sdmc:/atmosphere/kips/loader.kip" : "sdmc:/atmosphere/kips/hoc.kip", &table)) { FileUtils::LogLine("[clock_manager] Failed to write KIP file"); + writeNotification("Horizon OC\nKip write failed"); } } @@ -605,6 +615,7 @@ void ClockManager::GetKipData() { if (!cust_read_and_cache(this->config->GetConfigValue(HocClkConfigValue_KipFileName) ? "sdmc:/atmosphere/kips/loader.kip" : "sdmc:/atmosphere/kips/hoc.kip", &table)) { FileUtils::LogLine("[clock_manager] Failed to read KIP file for GetKipData"); + writeNotification("Horizon OC\nKip read failed"); return; } @@ -672,11 +683,14 @@ void ClockManager::GetKipData() { FileUtils::LogLine("[clock_manager] Successfully loaded KIP data into config"); } else { FileUtils::LogLine("[clock_manager] Warning: Failed to set config values from KIP"); + writeNotification("Horizon OC\nKip config set failed"); } } else { FileUtils::LogLine("[clock_manager] Error: Config value list buffer size mismatch"); + writeNotification("Horizon OC\nConfig Buffer Mismatch"); } } else { FileUtils::LogLine("[clock_manager] Config refresh error in GetKipData!"); + writeNotification("Horizon OC\nConfig refresh failed"); } } \ No newline at end of file diff --git a/Source/sys-clk/sysmodule/src/i2c_reg.h b/Source/sys-clk/sysmodule/src/i2c_reg.h index 1a85dd36..300229f5 100644 --- a/Source/sys-clk/sysmodule/src/i2c_reg.h +++ b/Source/sys-clk/sysmodule/src/i2c_reg.h @@ -38,7 +38,7 @@ const I2c_BuckConverter_Domain I2c_Erista_GPU = { I2cDevice_Max77621Gpu, const I2c_BuckConverter_Domain I2c_Erista_DRAM = { I2cDevice_Max77620Pmic, I2c_Max77620_SD1VOLT_REG, 0x7F, 12500, 600000, 1250000, }; const I2c_BuckConverter_Domain I2c_Mariko_CPU = { I2cDevice_Max77812_2, I2c_Max77812_CPUVOLT_REG, 0xFF, 5000, 250000, 1525000, 0x78 }; const I2c_BuckConverter_Domain I2c_Mariko_GPU = { I2cDevice_Max77812_2, I2c_Max77812_GPUVOLT_REG, 0xFF, 5000, 250000, 1525000, 0x78 }; -const I2c_BuckConverter_Domain I2c_Mariko_DRAM_VDDQ = { I2cDevice_Max77812_2, I2c_Max77812_MEMVOLT_REG, 0xFF, 5000, 250000, 650000, 0x78 }; +const I2c_BuckConverter_Domain I2c_Mariko_DRAM_VDDQ = { I2cDevice_Max77812_2, I2c_Max77812_MEMVOLT_REG, 0xFF, 5000, 250000, 700000, 0x78 }; const I2c_BuckConverter_Domain I2c_Mariko_DRAM_VDD2 = { I2cDevice_Max77620Pmic, I2c_Max77620_SD1VOLT_REG, 0x7F, 12500, 600000, 1250000, }; u32 I2c_BuckConverter_GetMvOut(const I2c_BuckConverter_Domain* domain); diff --git a/Source/sys-clk/sysmodule/src/kip.h b/Source/sys-clk/sysmodule/src/kip.h index c2cf7ddc..2e87a151 100644 --- a/Source/sys-clk/sysmodule/src/kip.h +++ b/Source/sys-clk/sysmodule/src/kip.h @@ -8,7 +8,7 @@ #pragma pack(push, 1) typedef struct { - u8 cust[16]; + u8 cust[4]; u32 custRev; u32 mtcConf; u32 hpMode; @@ -56,8 +56,8 @@ typedef struct { #pragma pack(pop) -#define CUST_MAGIC "HOCKIPCUST\0\0\0\0" -#define CUST_MAGIC_LEN 16 +#define CUST_MAGIC "CUST" +#define CUST_MAGIC_LEN 4 typedef struct { FILE* file; diff --git a/dist/atmosphere/contents/00FF0000636C6BFF/exefs.nsp b/dist/atmosphere/contents/00FF0000636C6BFF/exefs.nsp index 79663ea1..baf23f3a 100644 Binary files a/dist/atmosphere/contents/00FF0000636C6BFF/exefs.nsp and b/dist/atmosphere/contents/00FF0000636C6BFF/exefs.nsp differ