From f8d170011a162bb289441308954d72652de16c91 Mon Sep 17 00:00:00 2001 From: Lightos1 <124387232+Lightos1@users.noreply.github.com> Date: Mon, 22 Dec 2025 19:42:40 +0100 Subject: [PATCH] Improve timings for 2800-3100MHz --- .../loader/source/oc/mariko/timing_tables.cpp | 58 ++++++++++--------- .../loader/source/oc/pcv/pcv_mariko.cpp | 12 ++-- 2 files changed, 38 insertions(+), 32 deletions(-) diff --git a/Source/Atmosphere/stratosphere/loader/source/oc/mariko/timing_tables.cpp b/Source/Atmosphere/stratosphere/loader/source/oc/mariko/timing_tables.cpp index 2c9a4922..366661a2 100644 --- a/Source/Atmosphere/stratosphere/loader/source/oc/mariko/timing_tables.cpp +++ b/Source/Atmosphere/stratosphere/loader/source/oc/mariko/timing_tables.cpp @@ -20,29 +20,29 @@ namespace ams::ldr::oc::pcv::mariko { const MiscTimings g_misc_table[] = { - {1'866'000, 1, 0x20, 0x9, 0}, - {2'133'000, 1, 0x24, 0xA, 0}, - {2'166'000, 1, 0, 0, 0}, - {2'233'000, 0, 0x25, 0, 0}, - {2'300'000, 0, 0x26, 0xB, 0}, - {2'333'000, 0, 0x27, 0, 0}, - {2'366'000, 1, 0x26, 0xA, 0}, - {2'433'000, 0, 0x27, 0, 0}, - {2'466'000, 0, 0x2A, 0, 0}, - {2'500'000, 0, 0x28, 0xB, 0}, - {2'533'000, 0, 0x29, 0, -2}, - {2'566'000, 1, 0, 0, 0}, - {2'633'000, 0, 0x2A, 0, 0}, - {2'700'000, 0, 0x2B, 0xC, 0}, - {2'733'000, 0, 0x2C, 0, 0}, - {2'766'000, 1, 0x2B, 0xB, 0}, - {2'833'000, 0, 0x2C, 0, -2}, - {2'866'000, 0, 0, 0, -2}, - {2'900'000, 0, 0, 0, -2}, - {2'933'000, 0, 0x2E, 0xC, 0}, - {2'966'000, 1, 0, 0, 0}, - {3'033'000, 0, 0x2F, 0, 0}, - {3'133'000, 1, 0x31, 0xD, 0}, + {1'866'000, 1, 0x20, 0x9, }, + {2'133'000, 1, 0x24, 0xA, }, + {2'166'000, 1, 0, 0, }, + {2'233'000, 0, 0x25, 0, }, + {2'300'000, 0, 0x26, 0xB, }, + {2'333'000, 0, 0x27, 0, }, + {2'366'000, 1, 0x26, 0xA, }, + {2'433'000, 0, 0x27, 0, }, + {2'466'000, 0, 0x2A, 0, }, + {2'500'000, 0, 0x28, 0xB, }, + {2'533'000, 0, 0x29, 0, }, + {2'566'000, 1, 0, 0, }, + {2'633'000, 0, 0x2A, 0, }, + {2'700'000, 0, 0x2B, 0xC, }, + {2'733'000, 0, 0x2C, 0, }, + {2'766'000, 1, 0x2B, 0xB, }, + {2'833'000, 0, 0x2C, 0, }, + {2'866'000, 0, 0, 0, }, + {2'900'000, 0, 0, 0, }, + {2'933'000, 0, 0x2E, 0xC, }, + {2'966'000, 1, 0, 0, }, + {3'033'000, 0, 0x2F, 0, }, + {3'133'000, 1, 0x31, 0xD, }, }; const u32 g_misc_table_size = sizeof(g_misc_table) / sizeof(g_misc_table[0]); @@ -58,7 +58,7 @@ namespace ams::ldr::oc::pcv::mariko { {2'833'000, 0x1D}, {2'866'000, 0x1D}, {2'900'000, 0x1D}, {2'933'000, 0x1C}, {2'966'000, 0x1D}, {3'000'000, 0x1D}, {3'033'000, 0x1D}, {3'066'000, 0x1D}, {3'100'000, 0x1D}, - {3'133'000, 0x1D}, + {3'133'000, 0x1D}, {3'166'000, 0x1C}, {3'200'000, 0x1C}, }; const u32 g_rext_table_size = sizeof(g_rext_table) / sizeof(g_rext_table[0]); @@ -85,7 +85,6 @@ namespace ams::ldr::oc::pcv::mariko { {2'666'000, -1}, {2'700'000, -2}, {2'733'000, -2}, - {2'833'000, -9}, {2'933'000, -1}, }; @@ -108,9 +107,9 @@ namespace ams::ldr::oc::pcv::mariko { {2'733'000, -2}, {2'766'000, -2}, {2'800'000, -2}, - {2'833'000, -4}, + {2'833'000, -2}, {2'866'000, -2}, - {2'900'000, -4}, + {2'900'000, -2}, {2'933'000, -2}, {2'966'000, -2}, {3'000'000, -2}, @@ -118,6 +117,8 @@ namespace ams::ldr::oc::pcv::mariko { {3'066'000, -2}, {3'100'000, -2}, {3'133'000, -2}, + {3'166'000, -2}, + {3'200'000, -2}, }; const u32 g_obdly_table_size = sizeof(g_obdly_patches) / sizeof(g_obdly_patches[0]); @@ -161,12 +162,13 @@ namespace ams::ldr::oc::pcv::mariko { {2'700'000, -1}, {2'733'000, -1}, {2'766'000, 1}, - {2'800'000, 4}, + {2'800'000, 1}, {2'833'000, 1}, {2'866'000, 1}, {2'900'000, 1}, {2'933'000, -1}, {2'966'000, 1}, + {3'000'000, 1}, {3'100'000, 1}, {3'166'000, 1}, {3'200'000, 1}, 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 b1344290..27afee88 100644 --- a/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv_mariko.cpp +++ b/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv_mariko.cpp @@ -472,9 +472,9 @@ namespace ams::ldr::oc::pcv::mariko { WRITE_PARAM_ALL_REG(table, emc_pdex2rd, pdex2rw); WRITE_PARAM_ALL_REG(table, emc_pchg2pden, GET_CYCLE_CEIL(1.75)); WRITE_PARAM_ALL_REG(table, emc_ar2pden, GET_CYCLE_CEIL(1.75)); - WRITE_PARAM_ALL_REG(table, emc_pdex2cke, GET_CYCLE_CEIL(1.75)); + WRITE_PARAM_ALL_REG(table, emc_pdex2cke, GET_CYCLE_CEIL(1.05)); WRITE_PARAM_ALL_REG(table, emc_act2pden, GET_CYCLE_CEIL(14.0)); - WRITE_PARAM_ALL_REG(table, emc_cke2pden, /* cke2pden */ GET_CYCLE_CEIL(5.0)); + WRITE_PARAM_ALL_REG(table, emc_cke2pden, /* cke2pden */ GET_CYCLE_CEIL(8.5)); (void) cke2pden; WRITE_PARAM_ALL_REG(table, emc_pdex2mrr, GET_CYCLE_CEIL(pdex2mrr)); WRITE_PARAM_ALL_REG(table, emc_rw2pden, tWTPDEN); @@ -489,9 +489,9 @@ namespace ams::ldr::oc::pcv::mariko { WRITE_PARAM_ALL_REG(table, emc_wsv, wsv); WRITE_PARAM_ALL_REG(table, emc_wev, wev); WRITE_PARAM_ALL_REG(table, emc_qrst, qrst); - // WRITE_PARAM_ALL_REG(table, emc_tr_qrst, qrst); + WRITE_PARAM_ALL_REG(table, emc_tr_qrst, qrst); WRITE_PARAM_ALL_REG(table, emc_qsafe, qsafe); - // WRITE_PARAM_ALL_REG(table, emc_tr_qsafe, qsafe); + WRITE_PARAM_ALL_REG(table, emc_tr_qsafe, qsafe); WRITE_PARAM_ALL_REG(table, emc_tr_qpop, qpop); WRITE_PARAM_ALL_REG(table, emc_qpop, qpop); WRITE_PARAM_ALL_REG(table, emc_rdv, rdv); @@ -500,6 +500,10 @@ namespace ams::ldr::oc::pcv::mariko { WRITE_PARAM_ALL_REG(table, emc_rdv_early_mask, rdv); WRITE_PARAM_ALL_REG(table, emc_rdv_mask, rdv + 2); WRITE_PARAM_ALL_REG(table, emc_tr_rdv, rdv); + WRITE_PARAM_ALL_REG(table, emc_cmd_brlshft_2, 0x24) + WRITE_PARAM_ALL_REG(table, emc_cmd_brlshft_3, 0x24) + WRITE_PARAM_ALL_REG(table, emc_mrs_wait_cnt, 0x07FF003C); + WRITE_PARAM_ALL_REG(table, emc_mrs_wait_cnt2, 0x02DE002A); /* This needs some clean up. */ constexpr double MC_ARB_DIV = 4.0;