add max preset for REFRESH, set limit

This commit is contained in:
hanabbi
2023-06-17 13:46:28 +09:00
parent 800f3ae87b
commit db696bc827
3 changed files with 7 additions and 5 deletions

View File

@@ -23,7 +23,7 @@ namespace ams::ldr::oc {
const std::array<u32, 5> tWTR_values = {10, 9, 8, 7, 6};
const std::array<u32, 4> tREFpb_values = {488, 976, 1952, 3400};
const std::array<u32, 5> tREFpb_values = {488, 976, 1952, 3256, 9999};
const std::array<u32, 6> tWL_values = {14, 12, 10, 8, 6, 4};
@@ -87,7 +87,8 @@ namespace ams::ldr::oc {
// {REFRESH, REFRESH_LO} = max[(tREF/#_of_rows) / (emc_clk_period) - 64, (tREF/#_of_rows) / (emc_clk_period) * 97%]
// emc_clk_period = dram_clk / 2;
// 1600 MHz: 5894, but N' set to 6176 (~4.8% margin)
const u32 REFRESH = u32(std::ceil((double(tREFpb) * C.marikoEmcMaxClock / numOfRows * 1.048 / 2 - 64))) / 4 * 4;
const u32 REFRESH = MIN((u32)65472, u32(std::ceil((double(tREFpb) * C.marikoEmcMaxClock / numOfRows * 1.048 / 2 - 64))) / 4 * 4);
const u32 REFBW = MIN((u32)65536, REFRESH+64);
// tPDEX2WR, tPDEX2RD (timing delay from exiting powerdown mode to a write/read command) in ns
// const u32 tPDEX2 = 10;
// Exit power-down to next valid command delay

View File

@@ -165,7 +165,7 @@ void MemMtcTableAutoAdjust(MarikoMtcTable* table, const MarikoMtcTable* ref) {
WRITE_PARAM_ALL_REG(table, emc_trpab, GET_CYCLE_CEIL(tRPab));
WRITE_PARAM_ALL_REG(table, emc_tclkstable, GET_CYCLE_CEIL(tCKCKEH));
WRITE_PARAM_ALL_REG(table, emc_tclkstop, GET_CYCLE_CEIL(tCKE)+8);
WRITE_PARAM_ALL_REG(table, emc_trefbw, REFRESH + 64);
WRITE_PARAM_ALL_REG(table, emc_trefbw, REFBW);
constexpr u32 MC_ARB_DIV = 4;
constexpr u32 MC_ARB_SFA = 2;

View File

@@ -375,9 +375,10 @@ var AdvTable: Array<AdvEntry> = [
"<b>1</b> : 488 (Default timing)",
"<b>2</b> : 976",
"<b>3</b> : 1952",
"<b>4</b> : 3256",],
"<b>4</b> : 3256",
"<b>4</b> : MAX",],
1,
[0,4],
[0,5],
1,
),
new AdvEntry(