diff --git a/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp b/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp index 3f8b2214..dc0a21b5 100644 --- a/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp +++ b/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp @@ -182,6 +182,7 @@ volatile CustomizeTable C = { DEACTIVATED_GPU_FREQ /* 1459 (Disabled by default) */, DEACTIVATED_GPU_FREQ /* 1497 (Disabled by default) */, DEACTIVATED_GPU_FREQ /* 1536 (Disabled by default) */, + DEACTIVATED_GPU_FREQ /* 1574 (Disabled by default) */, }, /* Override soc voltage brackets. */ @@ -586,13 +587,14 @@ volatile CustomizeTable C = { { 1152000, { }, { 1180029, -14534, -830, 0, 1469, 110 } }, { 1228800, { }, { 1238293, -16383, -859, 0, 3722, 313 } }, { 1267200, { }, { 1276399, -17475, -867, 0, 3681, 559 } }, - { 1305600, { }, { } }, - { 1344000, { }, { } }, - { 1382400, { }, { } }, - { 1420800, { }, { } }, - { 1459200, { }, { } }, - { 1497600, { }, { } }, - { 1536000, { }, { } }, + { 1305600, { }, { 0, 0, 0, 0, 0, 0 } }, + { 1344000, { }, { 0, 0, 0, 0, 0, 0 } }, + { 1382400, { }, { 0, 0, 0, 0, 0, 0 } }, + { 1420800, { }, { 0, 0, 0, 0, 0, 0 } }, + { 1459200, { }, { 0, 0, 0, 0, 0, 0 } }, + { 1497600, { }, { 0, 0, 0, 0, 0, 0 } }, + { 1536000, { }, { 0, 0, 0, 0, 0, 0 } }, + { 1574400, { }, { 0, 0, 0, 0, 0, 0 } }, }, .marikoGpuDvfsTableHighUV = { @@ -620,6 +622,7 @@ volatile CustomizeTable C = { { 1459200, { }, { 0, 0, 0, 0, 0, 0 } }, { 1497600, { }, { 0, 0, 0, 0, 0, 0 } }, { 1536000, { }, { 0, 0, 0, 0, 0, 0 } }, + { 1574400, { }, { 0, 0, 0, 0, 0, 0 } }, }, }; diff --git a/Source/Atmosphere/stratosphere/loader/source/oc/customize.hpp b/Source/Atmosphere/stratosphere/loader/source/oc/customize.hpp index 2e8be644..c34cfbcb 100644 --- a/Source/Atmosphere/stratosphere/loader/source/oc/customize.hpp +++ b/Source/Atmosphere/stratosphere/loader/source/oc/customize.hpp @@ -126,7 +126,7 @@ struct CustomizeTable { s32 commonGpuVoltOffset; u32 eristaGpuVoltArray[27]; - u32 marikoGpuVoltArray[24]; + u32 marikoGpuVoltArray[25]; s32 marikoSocVoltArray[28]; u32 fineTune_t6_tRTW; @@ -134,7 +134,7 @@ struct CustomizeTable { u32 pcvLogVerbosity; - u32 reserved[58]; + u32 reserved[57]; CustomizeCpuDvfsTable eristaCpuDvfsTable; CustomizeCpuDvfsTable eristaCpuDvfsTableSLT; diff --git a/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv.cpp b/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv.cpp index 7552fb99..bd35f3bd 100644 --- a/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv.cpp +++ b/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv.cpp @@ -159,8 +159,8 @@ namespace ams::ldr::hoc::pcv { { C.marikoEmcVddqVolt, 400'000, 750'000, panic::Emc, }, { C.marikoSocVmax, 1000, 1200, panic::Emc, }, { eristaGpuDvfsMaxFreq, 768'000, 1152'000, panic::Gpu, }, - { marikoGpuDvfsMaxFreq, 768'000, 1536'000, panic::Gpu, }, - { C.marikoGpuVmax, 800, 960, panic::Gpu, }, + { marikoGpuDvfsMaxFreq, 768'000, 1574'400, panic::Gpu, }, + { C.marikoGpuVmax, 800, 995, panic::Gpu, }, /* Official GPU vMax is 1050mV */ }; for (auto &v : validators) { diff --git a/Source/hoc-clk/common/include/hocclk/config.h b/Source/hoc-clk/common/include/hocclk/config.h index 0e6868c5..c9262f81 100644 --- a/Source/hoc-clk/common/include/hocclk/config.h +++ b/Source/hoc-clk/common/include/hocclk/config.h @@ -167,6 +167,7 @@ typedef enum { KipConfigValue_g_volt_1459200, KipConfigValue_g_volt_1497600, KipConfigValue_g_volt_1536000, + KipConfigValue_g_volt_1574400, KipConfigValue_g_volt_e_76800, KipConfigValue_g_volt_e_115200, @@ -483,6 +484,7 @@ static inline const char* hocclkFormatConfigValue(HocClkConfigValue val, bool pr case KipConfigValue_g_volt_1459200: return pretty ? "Mariko GPU Volt 1459 MHz" : "g_volt_1459200"; case KipConfigValue_g_volt_1497600: return pretty ? "Mariko GPU Volt 1497 MHz" : "g_volt_1497600"; case KipConfigValue_g_volt_1536000: return pretty ? "Mariko GPU Volt 1536 MHz" : "g_volt_1536000"; + case KipConfigValue_g_volt_1574400: return pretty ? "Mariko GPU Volt 1574 MHz" : "g_volt_1574400"; // Erista GPU voltages (27) case KipConfigValue_g_volt_e_76800: return pretty ? "Erista GPU Volt 76 MHz" : "g_volt_e_76800"; @@ -712,6 +714,7 @@ static inline uint64_t hocclkValidConfigValue(HocClkConfigValue val, uint64_t in case KipConfigValue_g_volt_1459200: case KipConfigValue_g_volt_1497600: case KipConfigValue_g_volt_1536000: + case KipConfigValue_g_volt_1574400: case KipConfigValue_g_volt_e_76800: case KipConfigValue_g_volt_e_115200: case KipConfigValue_g_volt_e_153600: diff --git a/Source/hoc-clk/overlay/src/ui/gui/labels.cpp b/Source/hoc-clk/overlay/src/ui/gui/labels.cpp index 8beaac19..cd83e4a9 100644 --- a/Source/hoc-clk/overlay/src/ui/gui/labels.cpp +++ b/Source/hoc-clk/overlay/src/ui/gui/labels.cpp @@ -59,19 +59,19 @@ std::map gpu_freq_label_m = { std::map gpu_freq_label_m_slt = { { 76800000, "Boost Mode" }, { 307200000, "Handheld" }, { 345600000, "Handheld" }, { 384000000, "Handheld" }, { 422400000, "Handheld" }, { 460800000, "Handheld" }, { 614400000, "Handheld Safe Max" }, { 768000000, "Docked" }, - { 1075200000, "Safe Max" }, { 1305600000, "Unsafe Max" }, { 1536000000, "Absolute Max" }, + { 1075200000, "Safe Max" }, { 1305600000, "Unsafe Max" }, { 1574400000, "Absolute Max" }, }; std::map gpu_freq_label_m_hiopt = { { 76800000, "Boost Mode" }, { 307200000, "Handheld" }, { 345600000, "Handheld" }, { 384000000, "Handheld" }, { 422400000, "Handheld" }, { 460800000, "Handheld" }, { 614400000, "Handheld Safe Max" }, { 768000000, "Docked" }, - { 1152000000, "Safe Max" }, { 1305600000, "Unsafe Max" }, { 1536000000, "Absolute Max" }, + { 1152000000, "Safe Max" }, { 1305600000, "Unsafe Max" }, { 1574400000, "Absolute Max" }, }; std::map gpu_freq_label_m_highuv = { { 76800000, "Boost Mode" }, { 307200000, "Handheld" }, { 384000000, "Handheld" }, { 460800000, "Handheld" }, { 614400000, "Handheld Safe Max" }, { 768000000, "Docked" }, - { 1228800000, "Safe Max" }, { 1305600000, "Unsafe Max" }, { 1536000000, "Absolute Max" }, + { 1228800000, "Safe Max" }, { 1305600000, "Unsafe Max" }, { 1574400000, "Absolute Max" }, }; std::map *marikoUV[5]{ diff --git a/Source/hoc-clk/overlay/src/ui/gui/misc_gui.cpp b/Source/hoc-clk/overlay/src/ui/gui/misc_gui.cpp index 78af64d4..12091974 100644 --- a/Source/hoc-clk/overlay/src/ui/gui/misc_gui.cpp +++ b/Source/hoc-clk/overlay/src/ui/gui/misc_gui.cpp @@ -2558,7 +2558,7 @@ class GpuSubmenuGui : public MiscGui { false, true); ValueThresholds MgpuVmaxThresholds(805, 850); if(IsMariko()) { - addConfigButton(KipConfigValue_marikoGpuVmax, "GPU Maximum Voltage", ValueRange(800, 960, 5, "mV", 1), "GPU Maximum Voltage", + addConfigButton(KipConfigValue_marikoGpuVmax, "GPU Maximum Voltage", ValueRange(800, 995, 5, "mV", 1), "GPU Maximum Voltage", &MgpuVmaxThresholds, {}, {}, false, true); } } @@ -2665,7 +2665,7 @@ class GpuCustomTableSubmenuGui : public MiscGui { this->listElement->addItem(new CompactCategoryHeader("GPU Custom Table (mV)")); - ValueThresholds MgpuVmaxThresholds(800, 850); + ValueThresholds MgpuVmaxThresholds(825, 900); ValueThresholds EgpuVmaxThresholds(950, 975); std::vector mGpuVolts = { @@ -2688,7 +2688,9 @@ class GpuCustomTableSubmenuGui : public MiscGui { NamedValue("870mV", 870), NamedValue("875mV", 875), NamedValue("880mV", 880), NamedValue("885mV", 885), NamedValue("890mV", 890), NamedValue("895mV", 895), NamedValue("900mV", 900), NamedValue("905mV", 905), NamedValue("910mV", 910), NamedValue("915mV", 915), NamedValue("920mV", 920), NamedValue("925mV", 925), NamedValue("930mV", 930), NamedValue("935mV", 935), NamedValue("940mV", 940), - NamedValue("945mV", 945), NamedValue("950mV", 950), NamedValue("955mV", 955), NamedValue("960mV", 960), + NamedValue("945mV", 945), NamedValue("950mV", 950), NamedValue("955mV", 955), NamedValue("960mV", 960), NamedValue("965mV", 965), + NamedValue("970mV", 970), NamedValue("975mV", 975), NamedValue("980mV", 980), NamedValue("985mV", 985), NamedValue("990mV", 990), + NamedValue("995mV", 995), }; std::vector eGpuVolts = { @@ -2728,7 +2730,8 @@ class GpuCustomTableSubmenuGui : public MiscGui { NamedValue("875mV", 875), NamedValue("880mV", 880), NamedValue("885mV", 885), NamedValue("890mV", 890), NamedValue("895mV", 895), NamedValue("900mV", 900), NamedValue("905mV", 905), NamedValue("910mV", 910), NamedValue("915mV", 915), NamedValue("920mV", 920), NamedValue("925mV", 925), NamedValue("930mV", 930), NamedValue("935mV", 935), NamedValue("940mV", 940), NamedValue("945mV", 945), - NamedValue("950mV", 950), NamedValue("955mV", 955), NamedValue("960mV", 960), + NamedValue("950mV", 950), NamedValue("955mV", 955), NamedValue("960mV", 960), NamedValue("965mV", 965), NamedValue("970mV", 970), + NamedValue("975mV", 975), NamedValue("980mV", 980), NamedValue("985mV", 985), NamedValue("990mV", 990), NamedValue("995mV", 995), }; std::vector eGpuVolts_noAuto = { @@ -2810,6 +2813,9 @@ class GpuCustomTableSubmenuGui : public MiscGui { &MgpuVmaxThresholds, {}, mGpuVolts_noAuto, false, true); addGpuFreqVoltageButton(KipConfigValue_g_volt_1536000, "1536.0MHz", 1'536'000'000, ValueRange(0, 0, 0, "0", 1), "Voltage", &MgpuVmaxThresholds, {}, mGpuVolts_noAuto, false, true); + addGpuFreqVoltageButton(KipConfigValue_g_volt_1574400, "1574.4MHz", 1'574'400'000, ValueRange(0, 0, 0, "0", 1), "Voltage", + &MgpuVmaxThresholds, {}, mGpuVolts_noAuto, false, true); + } } } else { diff --git a/Source/hoc-clk/sysmodule/src/file/kip.cpp b/Source/hoc-clk/sysmodule/src/file/kip.cpp index 45aa22bd..bb6169cf 100644 --- a/Source/hoc-clk/sysmodule/src/file/kip.cpp +++ b/Source/hoc-clk/sysmodule/src/file/kip.cpp @@ -131,7 +131,7 @@ namespace kip { CUST_WRITE_FIELD_BATCH(&table, commonGpuVoltOffset, config::GetConfigValue(KipConfigValue_commonGpuVoltOffset)); - for (int i = 0; i < 24; i++) { + for (int i = 0; i < 25; i++) { table.marikoGpuVoltArray[i] = config::GetConfigValue((HocClkConfigValue)(KipConfigValue_g_volt_76800 + i)); } @@ -315,7 +315,7 @@ namespace kip { configValues.values[KipConfigValue_marikoGpuVmax] = cust_get_mariko_gpu_vmax(&table); configValues.values[KipConfigValue_commonGpuVoltOffset] = cust_get_common_gpu_offset(&table); - for (int i = 0; i < 24; i++) { + for (int i = 0; i < 25; i++) { configValues.values[KipConfigValue_g_volt_76800 + i] = cust_get_mariko_gpu_volt(&table, i); } @@ -369,10 +369,11 @@ namespace kip { config::DeleteKey(CONFIG_VAL_SECTION, "tdp_limit"); config::DeleteKey(CONFIG_VAL_SECTION, "tdp_limit_l"); } - config::SetConfigValues(&configValues, true); if(previousVersion < 300 && version >= 300) { - + configValues.values[KipConfigValue_g_volt_1574400] = 2000; } + config::SetConfigValues(&configValues, true); + } } // namespace kip diff --git a/Source/hoc-clk/sysmodule/src/file/kip.hpp b/Source/hoc-clk/sysmodule/src/file/kip.hpp index 75f802dd..5c022144 100644 --- a/Source/hoc-clk/sysmodule/src/file/kip.hpp +++ b/Source/hoc-clk/sysmodule/src/file/kip.hpp @@ -94,7 +94,7 @@ namespace kip { u32 commonGpuVoltOffset; u32 eristaGpuVoltArray[27]; - u32 marikoGpuVoltArray[24]; + u32 marikoGpuVoltArray[25]; s32 marikoSocVoltArray[28]; u32 t6_tRTW_fine_tune; @@ -102,7 +102,7 @@ namespace kip { u32 pcvLogVerbosity; - u32 reserved[58]; + u32 reserved[57]; } CustomizeTable; #define CUST_MAGIC "CUST" @@ -395,7 +395,7 @@ namespace kip { } static inline bool cust_set_mariko_gpu_volt(const char *p, int idx, u32 v) { - if (idx < 0 || idx >= 24) + if (idx < 0 || idx >= 25) return false; CustomizeTable t; if (!cust_read_table(p, &t)) @@ -607,7 +607,7 @@ namespace kip { } static inline u32 cust_get_mariko_gpu_volt(const CustomizeTable *t, int idx) { - if (!t || idx < 0 || idx >= 24) + if (!t || idx < 0 || idx >= 25) return 0; return t->marikoGpuVoltArray[idx]; } @@ -685,6 +685,7 @@ namespace kip { DECL_MARIKO_GPU_VOLT_HELPER(1459200, 21) DECL_MARIKO_GPU_VOLT_HELPER(1497600, 22) DECL_MARIKO_GPU_VOLT_HELPER(1536000, 23) + DECL_MARIKO_GPU_VOLT_HELPER(1574400, 24) DECL_MARIKO_SOC_VOLT_HELPER(1866000, 0) DECL_MARIKO_SOC_VOLT_HELPER(2000000, 1) @@ -790,6 +791,7 @@ namespace kip { DECL_MARIKO_GPU_VOLT_GET(1459200, 21) DECL_MARIKO_GPU_VOLT_GET(1497600, 22) DECL_MARIKO_GPU_VOLT_GET(1536000, 23) + DECL_MARIKO_GPU_VOLT_GET(1574400, 24) DECL_MARIKO_SOC_VOLT_GET(1866000, 0) DECL_MARIKO_SOC_VOLT_GET(2000000, 1)