Fixed obdly

This commit is contained in:
Lightos1
2025-12-03 13:25:02 +01:00
parent f9a40cd196
commit eff2ff26c2
3 changed files with 44 additions and 2 deletions

View File

@@ -38,7 +38,6 @@ namespace ams::ldr::oc::pcv::mariko {
void CalculateMiscTimings() {
tW2P = 0x2d;
rdv = 0x39 + C.mem_burst_read_latency;
obdly = 0x10000002 + C.mem_burst_write_latency;
einput_duration = 0x1C;
quse_width = 0x8;
@@ -48,7 +47,6 @@ namespace ams::ldr::oc::pcv::mariko {
rdv += e.rdv_inc;
if (e.einput) einput_duration = e.einput;
if (e.quse_width) quse_width = e.quse_width;
obdly += e.obdly_delta;
}
}
@@ -69,6 +67,14 @@ namespace ams::ldr::oc::pcv::mariko {
}
}
void CalculateObdly() {
obdly = 0x10000002 + C.mem_burst_write_latency;
if (auto patch = FindObdlyPatch()) {
obdly += patch->adjust;
}
}
void CalculateTWTPDEN() {
tWTPDEN = tW2P + 1 + CEIL(tDQSS_max / tCK_avg) + CEIL(tDQS2DQ_max / tCK_avg) + 6;
if (C.marikoEmcMaxClock >= 2'233'000 && C.marikoEmcMaxClock < 2'533'000) tWTPDEN++;
@@ -165,6 +171,7 @@ namespace ams::ldr::oc::pcv::mariko {
void CalculateTimings() {
CalculateMiscTimings();
CalculateIbdly();
CalculateObdly();
CalculateTWTPDEN();
CalculateTR2W();
CalculateTW2R();

View File

@@ -146,6 +146,37 @@ namespace ams::ldr::oc::pcv::mariko {
return nullptr;
}
const AdjustPatch g_obdly_patches[] = {
{2'533'000, -2},
{2'566'000, -2},
{2'600'000, -2},
{2'633'000, -2},
{2'666'000, -2},
{2'700'000, -2},
{2'733'000, -2},
{2'766'000, -2},
{2'800'000, -2},
{2'833'000, -4},
{2'866'000, -2},
{2'900'000, -4},
{2'933'000, -2},
{2'966'000, -2},
{3'000'000, -2},
{3'033'000, -2},
{3'066'000, -2},
{3'100'000, -4},
{3'133'000, -4},
};
const u32 g_obdly_table_size = sizeof(g_obdly_patches) / sizeof(g_obdly_patches[0]);
const AdjustPatch *FindObdlyPatch() {
for (u32 i = 0; i < g_obdly_table_size; i++)
if (g_obdly_patches[i].freq == C.marikoEmcMaxClock)
return &g_obdly_patches[i];
return nullptr;
}
const AdjustPatch g_tr2w_patches[] = {
{2'500'000, 1},
{2'533'000, 1},

View File

@@ -41,6 +41,10 @@ namespace ams::ldr::oc::pcv::mariko {
extern const u32 g_ibdly_table_size;
const AdjustPatch *FindIbdlyPatch();
extern const AdjustPatch g_obdly_patches[];
extern const u32 g_obdly_table_size;
const AdjustPatch *FindObdlyPatch();
extern const AdjustPatch g_tr2w_patches[];
extern const u32 g_tr2w_table_size;
const AdjustPatch *FindTR2WPatch();