@@ -20,6 +20,8 @@
|
|||||||
#define MIN(A, B) std::min(A, B)
|
#define MIN(A, B) std::min(A, B)
|
||||||
#define CEIL(A) std::ceil(A)
|
#define CEIL(A) std::ceil(A)
|
||||||
#define FLOOR(A) std::floor(A)
|
#define FLOOR(A) std::floor(A)
|
||||||
|
#define nCK_erista (1000'000. / C.eristaEmcMaxClock)
|
||||||
|
#define nCK_mariko (1000'000. / C.marikoEmcMaxClock)
|
||||||
|
|
||||||
#include "customize.hpp"
|
#include "customize.hpp"
|
||||||
#include "oc_common.hpp"
|
#include "oc_common.hpp"
|
||||||
@@ -51,7 +53,7 @@ volatile CustomizeTable C = {
|
|||||||
* Value should be divided evenly by 12'500.
|
* Value should be divided evenly by 12'500.
|
||||||
* Not enabled by default.
|
* Not enabled by default.
|
||||||
*/
|
*/
|
||||||
.commonEmcMemVolt = 1212500, // RAM Rated Voltage
|
.commonEmcMemVolt = 1175000, // RAM Rated Voltage
|
||||||
|
|
||||||
/* Erista CPU:
|
/* Erista CPU:
|
||||||
* - Max Voltage in mV
|
* - Max Voltage in mV
|
||||||
@@ -84,7 +86,7 @@ volatile CustomizeTable C = {
|
|||||||
* - System instabilities
|
* - System instabilities
|
||||||
* - NAND corruption
|
* - NAND corruption
|
||||||
*/
|
*/
|
||||||
.marikoEmcMaxClock = 2400000,
|
.marikoEmcMaxClock = 1996800,
|
||||||
/* - EMC Vddq (Mariko Only) Voltage in uV
|
/* - EMC Vddq (Mariko Only) Voltage in uV
|
||||||
* Range: 550'000 to 650'000 uV
|
* Range: 550'000 to 650'000 uV
|
||||||
* Value should be divided evenly by 5'000
|
* Value should be divided evenly by 5'000
|
||||||
@@ -92,59 +94,54 @@ volatile CustomizeTable C = {
|
|||||||
* Not enabled by default.
|
* Not enabled by default.
|
||||||
* This will not work without sys-clk-OC.
|
* This will not work without sys-clk-OC.
|
||||||
*/
|
*/
|
||||||
.marikoEmcVddqVolt = 640,
|
.marikoEmcVddqVolt = 0,
|
||||||
|
|
||||||
.marikoCpuUV = 3,
|
.marikoCpuUV = 0,
|
||||||
|
|
||||||
.marikoGpuUV = 2,
|
.marikoGpuUV = 0,
|
||||||
|
|
||||||
.commonGpuVoltOffset = 0,
|
.commonGpuVoltOffset = 0,
|
||||||
|
|
||||||
.marikoEmcDvbShift = 3,
|
.marikoEmcDvbShift = 0,
|
||||||
// TODO - Don't use defines for these!
|
// TODO - Don't use defines for these!
|
||||||
.nCK_mariko = 18.0,
|
|
||||||
.nCK_erista = 18.0,
|
|
||||||
|
|
||||||
.tCK_avg_e = 1000'000. / C.eristaEmcMaxClock,
|
|
||||||
.tCK_avg_m = 1000'000. / C.marikoEmcMaxClock,
|
|
||||||
|
|
||||||
.BL = 16,
|
.BL = 16,
|
||||||
.tRFCpb = 140,
|
.tRFCpb = 140,
|
||||||
.tRFCab = 280,
|
.tRFCab = 280,
|
||||||
.tRAS = (uint32_t)MAX(42.0, 3 * C.nCK_mariko),
|
.tRAS = 42,
|
||||||
.tRPpb = 18,
|
.tRPpb = 18,
|
||||||
.tRPab = 21,
|
.tRPab = 21,
|
||||||
.tRC = C.tRAS + C.tRPab,
|
.tRC = 60,
|
||||||
|
|
||||||
.tDQSCK_min = 1.5,
|
.tDQSCK_min = 1.5,
|
||||||
.tDQSCK_max = 3.5,
|
.tDQSCK_max = 3.5,
|
||||||
.tWPRE = 2 * C.nCK_mariko,
|
.tWPRE = 1.8,
|
||||||
.tRPST = 1.5 * C.nCK_mariko,
|
.tRPST = 0.4,
|
||||||
.tDQSS_max = 1.25 - ((60 - 30) / C.tCK_avg_m),
|
.tDQSS_max = 1.25,
|
||||||
.tDQS2DQ_max = 0.8,
|
.tDQS2DQ_max = 0.8,
|
||||||
.tDQSQ = 0.18,
|
.tDQSQ = 0.18,
|
||||||
|
|
||||||
.tWTR = (uint32_t)MAX(10.0, 8 * C.nCK_mariko),
|
.tWTR = (uint32_t)MAX(10.0, 8 * nCK_mariko),
|
||||||
.tRTP = C.nCK_mariko * C.tCK_avg_m, // Cannot find concrete value for this timing
|
.tRTP = 7.5, // Cannot find concrete value for this timing
|
||||||
.tWR = (uint32_t)MAX(10.0, 4 * C.nCK_mariko),
|
.tWR = (uint32_t)MAX(10.0, 4 * nCK_mariko),
|
||||||
.tR2REF = 8, // Try 16, 8 or 9 × 2 × 8 or 16
|
.tR2REF = 25.5,
|
||||||
|
|
||||||
.tRCD = 20, // Cannot find concrete value for this timing
|
.tRCD = 20, // Cannot find concrete value for this timing
|
||||||
.tRRD = 10, // Cannot find concrete value for this timing
|
.tRRD = 10, // Cannot find concrete value for this timing
|
||||||
.tREFpb = 488,
|
.tREFpb = 488,
|
||||||
|
|
||||||
.tXP = MAX(7.5, 5 * C.nCK_mariko),
|
.tXP = MAX(7.5, 5 * nCK_mariko),
|
||||||
.tCMDCKE = MAX(1.75, 3 * C.nCK_mariko),
|
.tCMDCKE = MAX(1.75, 3 * nCK_mariko),
|
||||||
.tMRWCKEL = (uint32_t)MAX(14.0, 10 * C.nCK_mariko),
|
.tMRWCKEL = (uint32_t)MAX(14.0, 10 * nCK_mariko),
|
||||||
.tCKELCS = MAX(5.0, 5 * C.nCK_mariko),
|
.tCKELCS = MAX(5.0, 5 * nCK_mariko),
|
||||||
.tCSCKEH = 1.75,
|
.tCSCKEH = 1.75,
|
||||||
.tXSR = MAX(C.tRFCpb + 7.5, 5 * C.nCK_mariko),
|
.tXSR = MAX(C.tRFCpb + 7.5, 5 * nCK_mariko),
|
||||||
.tCKE = MAX(7.5, 4 * C.nCK_mariko),
|
.tCKE = MAX(7.5, 4 * nCK_mariko),
|
||||||
|
|
||||||
.tSR = (uint32_t)MAX(15.0, 3 * C.nCK_mariko),
|
.tSR = (uint32_t)MAX(15.0, 3 * nCK_mariko),
|
||||||
.tFAW = (uint32_t)(4 * C.tCK_avg_m),
|
.tFAW = 30,
|
||||||
|
|
||||||
.tCKCKEH = MAX(1.75, 3 * C.nCK_mariko),
|
.tCKCKEH = MAX(1.75, 3 * nCK_mariko),
|
||||||
|
|
||||||
.WL = 14,
|
.WL = 14,
|
||||||
.RL = 32,
|
.RL = 32,
|
||||||
|
|||||||
@@ -60,12 +60,6 @@ typedef struct CustomizeTable {
|
|||||||
// advanced config
|
// advanced config
|
||||||
u32 marikoEmcDvbShift;
|
u32 marikoEmcDvbShift;
|
||||||
//
|
//
|
||||||
const double nCK_mariko;
|
|
||||||
const double nCK_erista;
|
|
||||||
|
|
||||||
const double tCK_avg_e;
|
|
||||||
const double tCK_avg_m;
|
|
||||||
|
|
||||||
const uint32_t BL;
|
const uint32_t BL;
|
||||||
const uint32_t tRFCpb;
|
const uint32_t tRFCpb;
|
||||||
const uint32_t tRFCab;
|
const uint32_t tRFCab;
|
||||||
@@ -105,6 +99,7 @@ typedef struct CustomizeTable {
|
|||||||
const uint32_t tFAW;
|
const uint32_t tFAW;
|
||||||
|
|
||||||
const double tCKCKEH;
|
const double tCKCKEH;
|
||||||
|
const double tCK_avg;
|
||||||
|
|
||||||
const uint32_t WL;
|
const uint32_t WL;
|
||||||
const uint32_t RL;
|
const uint32_t RL;
|
||||||
|
|||||||
@@ -2,40 +2,40 @@ OCS2-MICRON-WTB-PRESET
|
|||||||
.BL = 16,
|
.BL = 16,
|
||||||
.tRFCpb = 140,
|
.tRFCpb = 140,
|
||||||
.tRFCab = 280,
|
.tRFCab = 280,
|
||||||
.tRAS = (uint32_t)MAX(42.0, 3 * C.nCK_mariko),
|
.tRAS = 42,
|
||||||
.tRPpb = 18,
|
.tRPpb = 18,
|
||||||
.tRPab = 21,
|
.tRPab = 21,
|
||||||
.tRC = C.tRAS + C.tRPab,
|
.tRC = 60,
|
||||||
|
|
||||||
.tDQSCK_min = 1.5,
|
.tDQSCK_min = 1.5,
|
||||||
.tDQSCK_max = 3.5,
|
.tDQSCK_max = 3.5,
|
||||||
.tWPRE = 2 * C.nCK_mariko,
|
.tWPRE = 1.8,
|
||||||
.tRPST = 1.5 * C.nCK_mariko,
|
.tRPST = 0.4,
|
||||||
.tDQSS_max = 1.25 - ((60 - 30) / C.tCK_avg_m),
|
.tDQSS_max = 1.25,
|
||||||
.tDQS2DQ_max = 0.8,
|
.tDQS2DQ_max = 0.8,
|
||||||
.tDQSQ = 0.18,
|
.tDQSQ = 0.18,
|
||||||
|
|
||||||
.tWTR = (uint32_t)MAX(10.0, 8 * C.nCK_mariko),
|
.tWTR = MAX(10, 8 * nCK_mariko),
|
||||||
.tRTP = C.nCK_mariko * C.tCK_avg_m, // Cannot find concrete value for this timing
|
.tRTP = 7.5, // Cannot find concrete value for this timing
|
||||||
.tWR = (uint32_t)MAX(10.0, 4 * C.nCK_mariko),
|
.tWR = MAX(10, 4 * nCK_mariko),
|
||||||
.tR2REF = 8, // Try 16, 8 or 9 × 2 × 8 or 16
|
.tR2REF = 25.5,
|
||||||
|
|
||||||
.tRCD = 20, // Cannot find concrete value for this timing
|
.tRCD = 20, // Cannot find concrete value for this timing
|
||||||
.tRRD = 10, // Cannot find concrete value for this timing
|
.tRRD = 10, // Cannot find concrete value for this timing
|
||||||
.tREFpb = 488,
|
.tREFpb = 488,
|
||||||
|
|
||||||
.tXP = MAX(7.5, 5 * C.nCK_mariko),
|
.tXP = MAX(7.5, 5 * nCK_mariko),
|
||||||
.tCMDCKE = MAX(1.75, 3 * C.nCK_mariko),
|
.tCMDCKE = MAX(1.75, 3 * nCK_mariko),
|
||||||
.tMRWCKEL = (uint32_t)MAX(14.0, 10 * C.nCK_mariko),
|
.tMRWCKEL = MAX(14, 10 * nCK_mariko),
|
||||||
.tCKELCS = MAX(5.0, 5 * C.nCK_mariko),
|
.tCKELCS = MAX(5, 5 * nCK_mariko),
|
||||||
.tCSCKEH = 1.75,
|
.tCSCKEH = 1.75,
|
||||||
.tXSR = MAX(C.tRFCpb + 7.5, 5 * C.nCK_mariko),
|
.tXSR = MAX(C.tRFcpb + 7.5, 5 * nCK_mariko),
|
||||||
.tCKE = MAX(7.5, 4 * C.nCK_mariko),
|
.tCKE = MAX(7.5, 4 * nCK_mariko),
|
||||||
|
|
||||||
.tSR = (uint32_t)MAX(15.0, 3 * C.nCK_mariko),
|
.tSR = MAX(15, 3 * nCK_mariko),
|
||||||
.tFAW = (uint32_t)(4 * C.tCK_avg_m),
|
.tFAW = 30,
|
||||||
|
|
||||||
.tCKCKEH = MAX(1.75, 3 * C.nCK_mariko),
|
.tCKCKEH = MAX(1.75, 3 * nCK_mariko),
|
||||||
|
|
||||||
.WL = 14,
|
.WL = 14,
|
||||||
.RL = 32,
|
.RL = 32,
|
||||||
|
|||||||
Reference in New Issue
Block a user