diff --git a/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp b/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp index 4d857dd8..613bf0b7 100644 --- a/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp +++ b/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp @@ -40,7 +40,7 @@ volatile CustomizeTable C = { .eristaEmcMaxClock1 = 1600000, .eristaEmcMaxClock2 = 1600000, -/* Available: 66MHz step rate, 100MHz step rate and jedec. */ +/* Available: 66MHz step rate, 100MHz step rate, 133MHz step rate and jedec. */ /* Jedec freqs are 1333MHz, 1600MHz, 1866MHz, 2133MHz, 2400MHz, 2666MHz, 2933MHz, 3200MHz. */ .stepMode = StepMode_66MHz, diff --git a/Source/Atmosphere/stratosphere/loader/source/oc/customize.hpp b/Source/Atmosphere/stratosphere/loader/source/oc/customize.hpp index 354f77d6..39621889 100644 --- a/Source/Atmosphere/stratosphere/loader/source/oc/customize.hpp +++ b/Source/Atmosphere/stratosphere/loader/source/oc/customize.hpp @@ -40,6 +40,7 @@ enum StepMode: u32 { StepMode_66MHz = 0, StepMode_100MHz = 1, StepMode_Jedec = 2, + StepMode_133MHz = 3, }; /* diff --git a/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv_mariko.cpp b/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv_mariko.cpp index 364189d1..0320d0d9 100644 --- a/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv_mariko.cpp +++ b/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv_mariko.cpp @@ -609,6 +609,25 @@ namespace ams::ldr::hoc::pcv::mariko { newEmcList.resize(std::min(newEmcList.size(), DvfsTableEntryLimit)); } + void MtcGenerate133StepTable() { + const u32 StepFreqs133[] = { 1733000, 1866000, 2000000, 2133000, 2266000, 2400000, 2533000, 2666000, 2800000, 2933000, 3066000, 3200000, 3333000, 3466000, }; // Avoid rounding issues + constexpr u32 StepFreqs133Size = std::size(StepFreqs133); + + for (u32 i = 0; i < StepFreqs133Size; ++i) { + if (StepFreqs133[i] <= C.marikoEmcMaxClock) { + newEmcList.push_back(StepFreqs133[i]); + } else { + break; + } + } + + if (newEmcList.back() != C.marikoEmcMaxClock) { + newEmcList.push_back(static_cast(C.marikoEmcMaxClock)); + } + + newEmcList.resize(std::min(newEmcList.size(), DvfsTableEntryLimit)); + } + void MtcGenerateFreqTables() { if (C.marikoEmcMaxClock <= EmcClkOSLimit) { return; @@ -629,6 +648,9 @@ namespace ams::ldr::hoc::pcv::mariko { case StepMode_Jedec: MtcGenerateJedecTable(); return; + case StepMode_133MHz: + MtcGenerate133StepTable(); + return; default: stepRate = 66667; break; 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 7dbc6872..cb201f69 100644 --- a/Source/hoc-clk/overlay/src/ui/gui/misc_gui.cpp +++ b/Source/hoc-clk/overlay/src/ui/gui/misc_gui.cpp @@ -986,6 +986,7 @@ protected: std::vector stepMode = { NamedValue("66MHz", 0), NamedValue("100MHz", 1), + NamedValue("133MHz", 3), // Mantain compatability NamedValue("JEDEC.", 2), }; diff --git a/dist/atmosphere/kips/hoc.kip b/dist/atmosphere/kips/hoc.kip index c3357e6d..fb6f2711 100644 Binary files a/dist/atmosphere/kips/hoc.kip and b/dist/atmosphere/kips/hoc.kip differ diff --git a/dist/switch/.overlays/horizon-oc-overlay.ovl b/dist/switch/.overlays/horizon-oc-overlay.ovl index 29632d92..02c98146 100644 Binary files a/dist/switch/.overlays/horizon-oc-overlay.ovl and b/dist/switch/.overlays/horizon-oc-overlay.ovl differ