From de817b05a032d9f5a5b6c1fc695004d69d4f8ae1 Mon Sep 17 00:00:00 2001 From: souldbminersmwc Date: Tue, 18 Aug 2026 15:01:23 -0400 Subject: [PATCH] add 2805mhz cpu/1235 vmax reasoning before anyone yells at us: we did testing on very good speedo and found that they can hold 2805@1200-1235 so it's justifable to add it if people can do it. INA current measurement of 2703 proves that it draws only 3A so 2805 wont be much different (even if it overdraws it draws from vddq which is fine) 1235mV is also not known to have caused degratation (even long therm we havent got reports from just 1235). 1275 was what was reported to cause cpu damage. --- README.md | 3 ++- .../loader/source/oc/customize.cpp | 21 ++++++++++++------- .../source/oc/pcv/mariko/pcv_mariko_cpu.hpp | 5 +++-- Source/hoc-clk/overlay/src/ui/gui/labels.cpp | 4 ++-- .../hoc-clk/overlay/src/ui/gui/misc_gui.cpp | 6 ++++-- 5 files changed, 24 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 65bde463..f1032e8a 100644 --- a/README.md +++ b/README.md @@ -155,7 +155,8 @@ Refer to COMPILATION.md * 40 → Erista only ### CPU clocks (mhz) -* 2703 → mariko absolute max, dangerous +* 2805 → mariko absolute max, dangerous +* 2703 * 2601 → unsafe * 2499 * 2397 → mariko safe max with UV (low speedo) diff --git a/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp b/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp index dae3037f..3f8b2214 100644 --- a/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp +++ b/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp @@ -26,7 +26,7 @@ #define DISABLED 0 #define DEACTIVATED_GPU_FREQ 2000 #define GPU_MIN_MIN_VOLT 480000 -#define CPU_MAX_MAX_VOLT 1200000 +#define CPU_MAX_MAX_VOLT 1235000 namespace ams::ldr::hoc { @@ -100,13 +100,14 @@ volatile CustomizeTable C = { /* 1120mV is NVIDIA rating */ .marikoCpuMaxVolt = 1120, -/* Supported values: 1963500, 2091000, 2193000, 2295000, 2397000, 2499000, 2601000, 2703000. */ -/* 1963500 is official rating of T214/Mariko, fully safe. */ -/* 2091000-2295000 is a slight OC which should work on all units, but no guarantees. */ -/* 2397000 is the max safe OC for most average units with tuned undervolt. */ -/* 2499000 should be used with caution. */ -/* 2601000 exceeds pmic limit on most consoles. */ -/* 2703000 is potentially dangerous and not advised. */ +/* Supported values: 1963500, 2091000, 2193000, 2295000, 2397000, 2499000, 2601000, 2703000, 2805000. */ +/* 1963500 is official rating of T214/Mariko, fully safe. */ +/* 2091000-2295000 is a slight OC which should work on all units, but no guarantees. */ +/* 2397000 is the max safe OC for most average units with tuned undervolt. */ +/* 2499000 should be used with caution. */ +/* 2601000 exceeds pmic limit on most consoles. */ +/* 2703000 is potentially dangerous and not advised. */ +/* 2805000 can only be ran on the best of consoles and may be dangerous due to the voltage requirement */ .marikoCpuMaxClock = 1963500, .eristaCpuBoostClock = 1785000, /* Default boost clock */ @@ -328,6 +329,7 @@ volatile CustomizeTable C = { { 2499000, { 1580725, -35815, 113, }, { CPU_MAX_MAX_VOLT, } }, { 2601000, { 1702903, -36675, 113, }, { CPU_MAX_MAX_VOLT, } }, { 2703000, { 1770375, -37515, 113, }, { CPU_MAX_MAX_VOLT, } }, + { 2805000, { 1838820, -37707, 113, }, { CPU_MAX_MAX_VOLT, } }, }, .marikoCpuDvfsTable1581Tbreak { @@ -356,6 +358,7 @@ volatile CustomizeTable C = { { 2499000, { 1736856, -35286, 113, }, { CPU_MAX_MAX_VOLT, } }, { 2601000, { 1787838, -35967, 113, }, { CPU_MAX_MAX_VOLT, } }, { 2703000, { 1838820, -36648, 113, }, { CPU_MAX_MAX_VOLT, } }, + { 2805000, { 1908891, -37707, 113, }, { CPU_MAX_MAX_VOLT, } }, }, .marikoCpuDvfsTable1683Tbreak { @@ -384,6 +387,7 @@ volatile CustomizeTable C = { { 2499000, { 1736856, -35286, 113, }, { CPU_MAX_MAX_VOLT, } }, { 2601000, { 1787838, -35967, 113, }, { CPU_MAX_MAX_VOLT, } }, { 2703000, { 1838820, -36648, 113, }, { CPU_MAX_MAX_VOLT, } }, + { 2805000, { 1908891, -37707, 113, }, { CPU_MAX_MAX_VOLT, } }, }, .marikoCpuDvfsTableExtreme { @@ -412,6 +416,7 @@ volatile CustomizeTable C = { { 2499000, { 1580725, -35815, 113, }, { CPU_MAX_MAX_VOLT, } }, { 2601000, { 1702903, -36675, 113, }, { CPU_MAX_MAX_VOLT, } }, { 2703000, { 1775375, -37515, 113, }, { CPU_MAX_MAX_VOLT, } }, + { 2805000, { 1838820, -37707, 113, }, { CPU_MAX_MAX_VOLT, } }, }, .eristaGpuDvfsTable = { diff --git a/Source/Atmosphere/stratosphere/loader/source/oc/pcv/mariko/pcv_mariko_cpu.hpp b/Source/Atmosphere/stratosphere/loader/source/oc/pcv/mariko/pcv_mariko_cpu.hpp index d44f90b4..0ab58912 100644 --- a/Source/Atmosphere/stratosphere/loader/source/oc/pcv/mariko/pcv_mariko_cpu.hpp +++ b/Source/Atmosphere/stratosphere/loader/source/oc/pcv/mariko/pcv_mariko_cpu.hpp @@ -59,8 +59,9 @@ namespace ams::ldr::hoc::pcv::mariko { static_assert(sizeof(cpuVoltagePatchValues) == sizeof(cpuVoltagePatchOffsets), "Invalid cpuVoltagePatch size"); static const u32 cpuVoltThermalData[] = { 620, 1120, 20000, 620, 1120, 70000, 950, 1132, 0, 950, 1227, 0 }; - - static const u32 allowedCpuMaxFrequencies[] = { 1'963'500, 2'091'000, 2'193'000, 2'295'000, 2'397'000, 2'499'000, 2'601'000, 2'703'000, }; + + /* Refer to customize.cpp for more information */ + static const u32 allowedCpuMaxFrequencies[] = { 1'963'500, 2'091'000, 2'193'000, 2'295'000, 2'397'000, 2'499'000, 2'601'000, 2'703'000, 2'805'000 }; Result CpuFreqVdd(u32 *ptr); diff --git a/Source/hoc-clk/overlay/src/ui/gui/labels.cpp b/Source/hoc-clk/overlay/src/ui/gui/labels.cpp index 55f59189..8beaac19 100644 --- a/Source/hoc-clk/overlay/src/ui/gui/labels.cpp +++ b/Source/hoc-clk/overlay/src/ui/gui/labels.cpp @@ -21,12 +21,12 @@ std::map cpu_freq_label_m = { { 612000000, "Sleep Mode" }, { 1020000000, "Stock" }, { 1224000000, "Dev OC" }, { 1785000000, "Boost Mode" }, - { 1963000000, "Safe Max" }, { 2397000000, "Unsafe Max" }, { 2703000000, "Absolute Max" }, + { 1963000000, "Safe Max" }, { 2397000000, "Unsafe Max" }, { 2805000000, "Absolute Max" }, }; std::map cpu_freq_label_m_uv = { { 612000000, "Sleep Mode" }, { 1020000000, "Stock" }, { 1224000000, "Dev OC" }, { 1785000000, "Boost Mode" }, - { 2397000000, "Safe Max" }, { 2499000000, "Unsafe Max" }, { 2703000000, "Absolute Max" }, + { 2397000000, "Safe Max" }, { 2499000000, "Unsafe Max" }, { 2805000000, "Absolute Max" }, }; std::map cpu_freq_label_e = { 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 399c9700..e85e2332 100644 --- a/Source/hoc-clk/overlay/src/ui/gui/misc_gui.cpp +++ b/Source/hoc-clk/overlay/src/ui/gui/misc_gui.cpp @@ -2170,12 +2170,13 @@ class CpuSubmenuGui : public MiscGui { {}, false, true); ValueThresholds mCpuVoltThresholds(1160, 1180); - addConfigButton(KipConfigValue_marikoCpuMaxVolt, "CPU Max Voltage", ValueRange(1000, 1200, 5, "mV", 1), "CPU Max Voltage", + addConfigButton(KipConfigValue_marikoCpuMaxVolt, "CPU Max Voltage", ValueRange(1000, 1235, 5, "mV", 1), "CPU Max Voltage", &mCpuVoltThresholds, {}, {}, false, true); std::vector maxClkOptions = { NamedValue("1963 MHz", 1963500, "Rating"), NamedValue("2091 MHz", 2091000), NamedValue("2193 MHz", 2193000), NamedValue("2295 MHz", 2295000), - NamedValue("2397 MHz", 2397000, "Safe Max"), NamedValue("2499 MHz", 2499000, "Unsafe Max"), NamedValue("2601 MHz", 2601000), NamedValue("2703 MHz", 2703000, "Absolute Max"), + NamedValue("2397 MHz", 2397000, "Safe Max"), NamedValue("2499 MHz", 2499000, "Unsafe Max"), NamedValue("2601 MHz", 2601000), NamedValue("2703 MHz", 2703000), + NamedValue("2805 MHz", 2805000, "Absolute Max"), }; addConfigButton(KipConfigValue_marikoCpuMaxClock, "CPU Max Clock", ValueRange(0, 0, 1, "", 1), "CPU Max Clock", @@ -2187,6 +2188,7 @@ class CpuSubmenuGui : public MiscGui { NamedValue("1581 MHz", 1581000), NamedValue("1683 MHz", 1683000, "Default"), NamedValue("1785 MHz", 1785000), NamedValue("1887 MHz", 1887000), NamedValue("1963 MHz", 1963500), NamedValue("2091 MHz", 2091000), NamedValue("2193 MHz", 2193000), NamedValue("2295 MHz", 2295000), NamedValue("2397 MHz", 2397000), NamedValue("2499 MHz", 2499000), NamedValue("2601 MHz", 2601000), NamedValue("2703 MHz", 2703000), + NamedValue("2805 MHz", 2805000), }; addConfigButton(KipConfigValue_marikoCpuBoostClock, "CPU Boost Clock", ValueRange(0, 0, 1, "", 1), "CPU Boost Clock",