summaryrefslogtreecommitdiffstats
path: root/src/vendorcode/mediatek/mt8195/dramc/dramc_pi_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vendorcode/mediatek/mt8195/dramc/dramc_pi_main.c')
-rw-r--r--src/vendorcode/mediatek/mt8195/dramc/dramc_pi_main.c697
1 files changed, 334 insertions, 363 deletions
diff --git a/src/vendorcode/mediatek/mt8195/dramc/dramc_pi_main.c b/src/vendorcode/mediatek/mt8195/dramc/dramc_pi_main.c
index 02ba35766436..e7e8f899a565 100644
--- a/src/vendorcode/mediatek/mt8195/dramc/dramc_pi_main.c
+++ b/src/vendorcode/mediatek/mt8195/dramc/dramc_pi_main.c
@@ -28,29 +28,29 @@ bool gUpdateHighestFreq = FALSE;
SAVE_TIME_FOR_CALIBRATION_T SavetimeData;
#endif
-U8 gHQA_Test_Freq_Vcore_Level = 0; // 0: only 1 freq , others are multi freq 1: low vcore 2: high vcore
+U8 gHQA_Test_Freq_Vcore_Level = 0;
-u8 ett_fix_freq = 0xff; // 0xFF=all freq by gFreqTbl. The 0x"X" != 0xFF for single freq by gFreqTbl index, ex: 0x3 for DDR3733
+u8 ett_fix_freq = 0xff;
DRAM_DFS_FREQUENCY_TABLE_T gFreqTbl[DRAM_DFS_SRAM_MAX] = {
- {LP4_DDR3200 /*0*/, DIV8_MODE, SRAM_SHU1, DUTY_LAST_K, VREF_CALI_ON, CLOSE_LOOP_MODE}, // highest freq of term group (3733) must k first.
- {LP4_DDR4266 /*1*/, DIV8_MODE, SRAM_SHU0, DUTY_NEED_K, VREF_CALI_ON, CLOSE_LOOP_MODE}, // highest freq of term group (3733) must k first.
+ {LP4_DDR3200 /*0*/, DIV8_MODE, SRAM_SHU1, DUTY_LAST_K, VREF_CALI_ON, CLOSE_LOOP_MODE},
+ {LP4_DDR4266 /*1*/, DIV8_MODE, SRAM_SHU0, DUTY_NEED_K, VREF_CALI_ON, CLOSE_LOOP_MODE},
#if ENABLE_DDR400_OPEN_LOOP_MODE_OPTION
{LP4_DDR400 /*2*/, DIV4_MODE, SRAM_SHU7, DUTY_DEFAULT, VREF_CALI_OFF, OPEN_LOOP_MODE},
#endif
- {LP4_DDR800 /*2*/, DIV4_MODE, SRAM_SHU6, DUTY_DEFAULT, VREF_CALI_OFF, SEMI_OPEN_LOOP_MODE}, //Darren: DDR1600 for MRW (DramcModeRegInit_LP4 and CBT)
- {LP4_DDR1866 /*3*/, DIV8_MODE, SRAM_SHU3, DUTY_LAST_K, VREF_CALI_OFF, CLOSE_LOOP_MODE}, // highest freq of unterm group (2400) must k first.
- {LP4_DDR1200 /*4*/, DIV8_MODE, SRAM_SHU5, DUTY_LAST_K, VREF_CALI_OFF, CLOSE_LOOP_MODE}, // highest freq of unterm group (2400) must k first.
- {LP4_DDR2400 /*5*/, DIV8_MODE, SRAM_SHU2, DUTY_NEED_K, VREF_CALI_ON, CLOSE_LOOP_MODE}, // highest freq of unterm group (2400) must k first.
- {LP4_DDR1600 /*6*/, DIV8_MODE, SRAM_SHU4, DUTY_DEFAULT, VREF_CALI_ON, CLOSE_LOOP_MODE}, //Darren: DDR1600 for MRW (DramcModeRegInit_LP4 and CBT)
+ {LP4_DDR800 /*2*/, DIV4_MODE, SRAM_SHU6, DUTY_DEFAULT, VREF_CALI_OFF, SEMI_OPEN_LOOP_MODE},
+ {LP4_DDR1866 /*3*/, DIV8_MODE, SRAM_SHU3, DUTY_LAST_K, VREF_CALI_OFF, CLOSE_LOOP_MODE},
+ {LP4_DDR1200 /*4*/, DIV8_MODE, SRAM_SHU5, DUTY_LAST_K, VREF_CALI_OFF, CLOSE_LOOP_MODE},
+ {LP4_DDR2400 /*5*/, DIV8_MODE, SRAM_SHU2, DUTY_NEED_K, VREF_CALI_ON, CLOSE_LOOP_MODE},
+ {LP4_DDR1600 /*6*/, DIV8_MODE, SRAM_SHU4, DUTY_DEFAULT, VREF_CALI_ON, CLOSE_LOOP_MODE},
};
DRAMC_CTX_T DramCtx_LPDDR4 =
{
- CHANNEL_SINGLE, // Channel number
- CHANNEL_A, // DRAM_CHANNEL
- RANK_DUAL, //DRAM_RANK_NUMBER_T
- RANK_0, //DRAM_RANK_T
+ CHANNEL_SINGLE,
+ CHANNEL_A,
+ RANK_DUAL,
+ RANK_0,
#ifdef MTK_FIXDDR1600_SUPPORT
LP4_DDR1600,
@@ -66,71 +66,71 @@ DRAMC_CTX_T DramCtx_LPDDR4 =
#endif
#endif
#if DV_SIMULATION_LP4
- TYPE_LPDDR4X, // DRAM_DRAM_TYPE_T
+ TYPE_LPDDR4X,
#else
TYPE_LPDDR5,
#endif
- FSP_0 , //// DRAM Fast switch point type, only for LP4, useless in LP3
- FSP_0 , //// boot_fsp
+ FSP_0 ,
+ FSP_0 ,
ODT_OFF,
- {CBT_NORMAL_MODE, CBT_NORMAL_MODE}, // bring up LP4X rank0 & rank1 use normal mode
+ {CBT_NORMAL_MODE, CBT_NORMAL_MODE},
#if ENABLE_READ_DBI
- {DBI_OFF,DBI_ON}, //read DBI
+ {DBI_OFF,DBI_ON},
#else
- {DBI_OFF,DBI_OFF}, //read DBI
+ {DBI_OFF,DBI_OFF},
#endif
#if ENABLE_WRITE_DBI
- {DBI_OFF,DBI_ON}, // write DBI
+ {DBI_OFF,DBI_ON},
#else
- {DBI_OFF,DBI_OFF}, // write DBI
+ {DBI_OFF,DBI_OFF},
#endif
- DATA_WIDTH_16BIT, // DRAM_DATA_WIDTH_T
- DEFAULT_TEST2_1_CAL, // test2_1;
- DEFAULT_TEST2_2_CAL, // test2_2;
+ DATA_WIDTH_16BIT,
+ DEFAULT_TEST2_1_CAL,
+ DEFAULT_TEST2_2_CAL,
#if ENABLE_K_WITH_WORST_SI_UI_SHIFT
- TEST_WORST_SI_PATTERN, // test_pattern;
+ TEST_WORST_SI_PATTERN,
#else
TEST_XTALK_PATTERN,
#endif
#if (DV_SIMULATION_LP4 == 1)
- 800, // frequency
- 800, // freqGroup
+ 800,
+ 800,
#else
1600,
1600,
#endif
- 0x88, //vendor_id initial value
+ 0x88,
REVISION_ID_MAGIC,
- 0xff, //density
+ 0xff,
{0,0},
- 270, // u2DelayCellTimex100;
+ 270,
#if PRINT_CALIBRATION_SUMMARY
- //aru4CalResultFlag[CHANNEL_NUM][RANK_MAX]
+
{{0,0,}},
- //aru4CalExecuteFlag[CHANNEL_NUM][RANK_MAX]
+
{{0,0,}},
1,
0,
#endif
- {0}, //BOOL arfgWriteLevelingInitShif;
+ {0},
#if SUPPORT_SAVE_TIME_FOR_CALIBRATION
- FALSE, //femmc_Ready
+ FALSE,
0,
0,
0,
&SavetimeData,
#endif
- &gFreqTbl[DRAM_DFS_SRAM_MAX-1], // default is DDR1600 1:8 mode
+ &gFreqTbl[DRAM_DFS_SRAM_MAX-1],
DRAM_DFS_REG_SHU0,
TRAINING_MODE2,
CBT_PHASE_RISING,
- 0, //new CBT pattern
+ 0,
PHYPLL_MODE,
DBI_OFF,
FSP_MAX,
PINMUX_EMCP,
- {DISABLE,DISABLE}, // disable 10GB
+ {DISABLE,DISABLE},
0,
};
@@ -156,31 +156,31 @@ void vSetVcoreByFreq(DRAMC_CTX_T *p)
hqa_set_voltage_by_freq(p, &vio18, &vcore, &vdram, &vddq, &vmddr);
#elif defined(VCORE_BIN)
switch (vGet_Current_SRAMIdx(p)) {
- case SRAM_SHU0: //4266
+ case SRAM_SHU0:
#ifdef VOLTAGE_SEL
vcore = vcore_voltage_select(KSHU0);
if (!vcore)
#endif
vcore = get_vcore_uv_table(0);
break;
- case SRAM_SHU1: //3200
+ case SRAM_SHU1:
#ifdef VOLTAGE_SEL
vcore = vcore_voltage_select(KSHU1);
if (!vcore)
#endif
vcore = (get_vcore_uv_table(0) + get_vcore_uv_table(1)) >> 1;
break;
- case SRAM_SHU2: //2400
- case SRAM_SHU3: //1866
+ case SRAM_SHU2:
+ case SRAM_SHU3:
#ifdef VOLTAGE_SEL
vcore = vcore_voltage_select(KSHU2);
if (!vcore)
#endif
vcore = (get_vcore_uv_table(0) + get_vcore_uv_table(2)) >> 1;
break;
- case SRAM_SHU4: //1600
- case SRAM_SHU5: //1200
- case SRAM_SHU6: //800
+ case SRAM_SHU4:
+ case SRAM_SHU5:
+ case SRAM_SHU6:
#ifdef VOLTAGE_SEL
vcore = vcore_voltage_select(KSHU4);
if (!vcore)
@@ -190,33 +190,33 @@ void vSetVcoreByFreq(DRAMC_CTX_T *p)
}
#else
switch (vGet_Current_SRAMIdx(p)) {
- case SRAM_SHU0: // 4266
+ case SRAM_SHU0:
#ifdef VOLTAGE_SEL
vcore = vcore_voltage_select(KSHU0);
#else
vcore = SEL_PREFIX_VCORE(LP4, KSHU0);
#endif
break;
- case SRAM_SHU1: // 3200
+ case SRAM_SHU1:
#ifdef VOLTAGE_SEL
vcore = vcore_voltage_select(KSHU1);
#else
vcore = SEL_PREFIX_VCORE(LP4, KSHU1);
#endif
break;
- case SRAM_SHU2: // 2400
- case SRAM_SHU3: //1866
+ case SRAM_SHU2:
+ case SRAM_SHU3:
#ifdef VOLTAGE_SEL
vcore = vcore_voltage_select(KSHU2);
#else
vcore = SEL_PREFIX_VCORE(LP4, KSHU2);
#endif
break;
- case SRAM_SHU4: //1600
- case SRAM_SHU5: //1200
- case SRAM_SHU6: //800
+ case SRAM_SHU4:
+ case SRAM_SHU5:
+ case SRAM_SHU6:
#if ENABLE_DDR400_OPEN_LOOP_MODE_OPTION
- case SRAM_SHU7: //400
+ case SRAM_SHU7:
#endif
#ifdef VOLTAGE_SEL
vcore = vcore_voltage_select(KSHU4);
@@ -249,17 +249,17 @@ void vSetVcoreByFreq(DRAMC_CTX_T *p)
#ifdef FOR_HQA_REPORT_USED
switch (vGet_Current_SRAMIdx(p)) {
- case SRAM_SHU0: //3733
- case SRAM_SHU1: //3200
- case SRAM_SHU2: //2400
- case SRAM_SHU3: //1866
- case SRAM_SHU4: //1600
- case SRAM_SHU5: //1200
- case SRAM_SHU6: //800
+ case SRAM_SHU0:
+ case SRAM_SHU1:
+ case SRAM_SHU2:
+ case SRAM_SHU3:
+ case SRAM_SHU4:
+ case SRAM_SHU5:
+ case SRAM_SHU6:
#if ENABLE_DDR400_OPEN_LOOP_MODE_OPTION
- case SRAM_SHU7: //400
+ case SRAM_SHU7:
#endif
- gHQA_Test_Freq_Vcore_Level = 0; //only 1 freq
+ gHQA_Test_Freq_Vcore_Level = 0;
break;
default:
print("[HQA] undefined shuffle level for Vcore (SHU%d)\r\n", vGet_Current_SRAMIdx(p));
@@ -365,7 +365,7 @@ void RunTime_Shmoo_update_parameters(DRAMC_CTX_T *p)
FinalWinPerBit[u1BitIdx].last_pass=p->pSavetimeData->u1RxWinPerbitDQ_lastbypass_Save[p->channel][p->rank][u1BitIdx+RUNTIME_SHMOO_TEST_BYTE*8];
}
- //find smallest first and largest last pass
+
for (u1BitIdx=0; u1BitIdx<8; u1BitIdx++)
{
if (FinalWinPerBit[u1BitIdx].first_pass < rx_first_delay)
@@ -390,10 +390,10 @@ void RunTime_Shmoo_update_parameters(DRAMC_CTX_T *p)
#endif
if (p->femmc_Ready==0 ||
- ((p->pSavetimeData->Runtime_Shmoo_para.TX_Channel!=RUNTIME_SHMOO_TEST_CHANNEL) || (p->pSavetimeData->Runtime_Shmoo_para.TX_Rank!=RUNTIME_SHMOO_TEST_RANK) || (p->pSavetimeData->Runtime_Shmoo_para.TX_Byte!=RUNTIME_SHMOO_TEST_BYTE))) //first K
+ ((p->pSavetimeData->Runtime_Shmoo_para.TX_Channel!=RUNTIME_SHMOO_TEST_CHANNEL) || (p->pSavetimeData->Runtime_Shmoo_para.TX_Rank!=RUNTIME_SHMOO_TEST_RANK) || (p->pSavetimeData->Runtime_Shmoo_para.TX_Byte!=RUNTIME_SHMOO_TEST_BYTE)))
{
#if RUNTIME_SHMOO_TX
- p->pSavetimeData->Runtime_Shmoo_para.flag= RUNTIME_SHMOO_ON_GOING; //on going
+ p->pSavetimeData->Runtime_Shmoo_para.flag= RUNTIME_SHMOO_ON_GOING;
p->pSavetimeData->Runtime_Shmoo_para.Scan_Direction=0;
p->pSavetimeData->Runtime_Shmoo_para.TX_PI_delay = tx_pi_delay-32+RUNTIME_SHMOO_TEST_PI_DELAY_START;
p->pSavetimeData->Runtime_Shmoo_para.TX_Original_PI_delay = p->pSavetimeData->Runtime_Shmoo_para.TX_PI_delay;
@@ -415,7 +415,7 @@ void RunTime_Shmoo_update_parameters(DRAMC_CTX_T *p)
#endif
#if RUNTIME_SHMOO_RX
- p->pSavetimeData->Runtime_Shmoo_para.flag= RUNTIME_SHMOO_ON_GOING; //on going
+ p->pSavetimeData->Runtime_Shmoo_para.flag= RUNTIME_SHMOO_ON_GOING;
p->pSavetimeData->Runtime_Shmoo_para.Scan_Direction=0;
p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Range = 0;
p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Value = 0;
@@ -429,10 +429,10 @@ void RunTime_Shmoo_update_parameters(DRAMC_CTX_T *p)
p->pSavetimeData->Runtime_Shmoo_para.TX_Byte = RUNTIME_SHMOO_TEST_BYTE;
#endif
}
-//fra else if (dramc_get_rshmoo_step())
+
else if ((dramc_get_rshmoo_step()) && (p->pSavetimeData->Runtime_Shmoo_para.flag != RUNTIME_SHMOO_END))
{
- //judge scan direction
+
if (RUNTIME_SHMOO_FAST_K == 0)
{
p->pSavetimeData->Runtime_Shmoo_para.Scan_Direction=0;
@@ -467,7 +467,7 @@ void RunTime_Shmoo_update_parameters(DRAMC_CTX_T *p)
if ((p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Value+p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Range*30) > RUNTIME_SHMOO_TEST_VREF_END)
{
- p->pSavetimeData->Runtime_Shmoo_para.flag= RUNTIME_SHMOO_END; //test finish
+ p->pSavetimeData->Runtime_Shmoo_para.flag= RUNTIME_SHMOO_END;
}
else
{
@@ -503,7 +503,7 @@ void RunTime_Shmoo_update_parameters(DRAMC_CTX_T *p)
p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Value += RUNTIME_SHMOO_TEST_VREF_STEP;
if ((p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Value) > RUNTIME_SHMOO_RX_VREF_RANGE_END)
{
- p->pSavetimeData->Runtime_Shmoo_para.flag= RUNTIME_SHMOO_END; //test finish
+ p->pSavetimeData->Runtime_Shmoo_para.flag= RUNTIME_SHMOO_END;
}
}
#endif
@@ -519,7 +519,7 @@ void RunTime_Shmoo_update_parameters(DRAMC_CTX_T *p)
if ((p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Value+p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Range*30) > RUNTIME_SHMOO_TEST_VREF_END)
{
- p->pSavetimeData->Runtime_Shmoo_para.flag= RUNTIME_SHMOO_END; //test finish
+ p->pSavetimeData->Runtime_Shmoo_para.flag= RUNTIME_SHMOO_END;
}
else
{
@@ -555,7 +555,7 @@ void RunTime_Shmoo_update_parameters(DRAMC_CTX_T *p)
p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Value += RUNTIME_SHMOO_TEST_VREF_STEP;
if ((p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Value) > RUNTIME_SHMOO_RX_VREF_RANGE_END)
{
- p->pSavetimeData->Runtime_Shmoo_para.flag= RUNTIME_SHMOO_END; //test finish
+ p->pSavetimeData->Runtime_Shmoo_para.flag= RUNTIME_SHMOO_END;
}
}
#endif
@@ -572,7 +572,7 @@ void RunTime_Shmoo_update_parameters(DRAMC_CTX_T *p)
if ((p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Value+p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Range*30) > RUNTIME_SHMOO_TEST_VREF_END)
{
- p->pSavetimeData->Runtime_Shmoo_para.flag= RUNTIME_SHMOO_END; //test finish
+ p->pSavetimeData->Runtime_Shmoo_para.flag= RUNTIME_SHMOO_END;
}
else
{
@@ -598,7 +598,7 @@ void RunTime_Shmoo_update_parameters(DRAMC_CTX_T *p)
if ((p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Value) > RUNTIME_SHMOO_RX_VREF_RANGE_END)
{
- p->pSavetimeData->Runtime_Shmoo_para.flag= RUNTIME_SHMOO_END; //test finish
+ p->pSavetimeData->Runtime_Shmoo_para.flag= RUNTIME_SHMOO_END;
}
#endif
}
@@ -627,7 +627,7 @@ void RunTime_Shmoo_update_parameters(DRAMC_CTX_T *p)
print("Fra RunTime Shmoo CH%d, Rank%d, Byte%d\n",RUNTIME_SHMOO_TEST_CHANNEL, RUNTIME_SHMOO_TEST_RANK, RUNTIME_SHMOO_TEST_BYTE );
#endif
-//fra if (p->pSavetimeData->Runtime_Shmoo_para.flag != RUNTIME_SHMOO_END)
+
{
#if RUNTIME_SHMOO_TX
#if __ETT__
@@ -676,7 +676,7 @@ void RunTime_Shmoo_update_parameters(DRAMC_CTX_T *p)
}
DramcTXSetVref(p, p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Range, p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Value);
- //DLL all off from Justin
+
#if 0
#if ENABLE_MCK8X_MODE
vIO32WriteFldAlign_All(DRAMC_REG_ADDR(DDRPHY_SHU_CA_DLL0), 0x0, SHU_CA_DLL0_RG_ARDLL_PHDET_EN_CA_SHU);
@@ -697,41 +697,41 @@ void RunTime_Shmoo_update_parameters(DRAMC_CTX_T *p)
#if RUNTIME_SHMOO_RX
- // here has a problem, RX dq is perbit but I just can choose one (bit0) to do compare and setting
+
if (p->pSavetimeData->Runtime_Shmoo_para.RX_delay[0] <=0)
{
#if 0
- // Set DQS delay
+
vIO32WriteFldMulti(DRAMC_REG_ADDR(DDRPHY_SHU1_R0_B0_DQ6 + 0x50*RUNTIME_SHMOO_TEST_BYTE), \
P_Fld((-p->pSavetimeData->Runtime_Shmoo_para.RX_delay[0]),SHU1_R0_B0_DQ6_RK0_RX_ARDQS0_R_DLY_B0) |P_Fld((-p->pSavetimeData->Runtime_Shmoo_para.RX_delay[0]),SHU1_R0_B0_DQ6_RK0_RX_ARDQS0_F_DLY_B0));
- // Set DQM delay to 0
+
vIO32WriteFldMulti(DRAMC_REG_ADDR(DDRPHY_SHU1_R0_B0_DQ6 + 0x50*RUNTIME_SHMOO_TEST_BYTE), \
P_Fld(0,SHU1_R0_B0_DQ6_RK0_RX_ARDQM0_R_DLY_B0) |P_Fld(0,SHU1_R0_B0_DQ6_RK0_RX_ARDQM0_F_DLY_B0));
DramPhyReset(p);
#endif
- // Set DQ delay to 0
+
for (u1BitIdx=0; u1BitIdx<4; u1BitIdx++)
{
- vIO32Write4B(DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_RXDLY0 + DDRPHY_AO_B0_B1_OFFSET*RUNTIME_SHMOO_TEST_BYTE + u1BitIdx*4), 0);//DQ0~DQ7
+ vIO32Write4B(DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_RXDLY0 + DDRPHY_AO_B0_B1_OFFSET*RUNTIME_SHMOO_TEST_BYTE + u1BitIdx*4), 0);
}
}
else
{
#if 0
- // Set DQS delay to 0
+
vIO32WriteFldMulti(DRAMC_REG_ADDR(DDRPHY_SHU1_R0_B0_DQ6 + 0x50*RUNTIME_SHMOO_TEST_BYTE), \
P_Fld(0,SHU1_R0_B0_DQ6_RK0_RX_ARDQS0_R_DLY_B0) |P_Fld(0,SHU1_R0_B0_DQ6_RK0_RX_ARDQS0_F_DLY_B0));
- // Adjust DQM output delay.
+
vIO32WriteFldMulti(DRAMC_REG_ADDR(DDRPHY_SHU1_R0_B0_DQ6 + 0x50*RUNTIME_SHMOO_TEST_BYTE), \
P_Fld(p->pSavetimeData->Runtime_Shmoo_para.RX_delay,SHU1_R0_B0_DQ6_RK0_RX_ARDQM0_R_DLY_B0) |P_Fld(p->pSavetimeData->Runtime_Shmoo_para.RX_delay,SHU1_R0_B0_DQ6_RK0_RX_ARDQM0_F_DLY_B0));
DramPhyReset(p);
#endif
- // Adjust DQ output delay.
+
for (u1BitIdx=0; u1BitIdx<8; u1BitIdx+=2)
{
vIO32WriteFldMulti(DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_RXDLY0+ (DDRPHY_AO_B0_B1_OFFSET*RUNTIME_SHMOO_TEST_BYTE) +u1BitIdx*2), \
@@ -741,19 +741,18 @@ void RunTime_Shmoo_update_parameters(DRAMC_CTX_T *p)
}
}
- //Set Vref
- vIO32WriteFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_SHU_B1_DQ5 + DDRPHY_AO_B0_B1_OFFSET*RUNTIME_SHMOO_TEST_BYTE), p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Value, SHU_B0_DQ5_RG_RX_ARDQ_VREF_SEL_B0); // LP4 and LP4x with term: 0xe
+
+ vIO32WriteFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_SHU_B1_DQ5 + DDRPHY_AO_B0_B1_OFFSET*RUNTIME_SHMOO_TEST_BYTE), p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Value, SHU_B0_DQ5_RG_RX_ARDQ_VREF_SEL_B0);
#endif
}
- //save parameters to eMMC
+
#if EMMC_READY
write_offline_dram_calibration_data(vGet_Current_SRAMIdx(p), p->pSavetimeData);
#endif
mcSHOW_ERR_MSG(("Fra Save calibration result to emmc\n"));
- //copy parameters to memory for kernel test script used
- //wait for YiRong's SRAM copy function
+
#if RUNTIME_SHMOO_TX
dramc_set_rshmoo_info(p->pSavetimeData->Runtime_Shmoo_para.TX_Rank, p->pSavetimeData->Runtime_Shmoo_para.TX_Channel,
p->pSavetimeData->Runtime_Shmoo_para.TX_Byte, p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Range, p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Value,
@@ -765,7 +764,7 @@ void RunTime_Shmoo_update_parameters(DRAMC_CTX_T *p)
p->pSavetimeData->Runtime_Shmoo_para.TX_Byte, p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Range, p->pSavetimeData->Runtime_Shmoo_para.TX_Vref_Value,
p->pSavetimeData->Runtime_Shmoo_para.RX_delay[0], 1, (p->pSavetimeData->Runtime_Shmoo_para.flag == RUNTIME_SHMOO_END) ? 1 : 0);
-// vAutoRefreshSwitch(p, DISABLE); //After gating, Rx and Tx calibration, auto refresh should be disable
+// vAutoRefreshSwitch(p, DISABLE);
#endif
@@ -775,7 +774,7 @@ void RunTime_Shmoo_update_parameters(DRAMC_CTX_T *p)
#endif
-///TODO: wait for porting +++
+
#ifdef FIRST_BRING_UP
void Test_Broadcast_Feature(DRAMC_CTX_T *p)
{
@@ -872,7 +871,7 @@ static void vDramCPUReadWriteTestAfterCalibration(DRAMC_CTX_T *p)
pass_count=0;
#if !__ETT__
- // scy: not to test rank1 (wrong addr 0x0000_0000)
+
if (u1RankIdx >= 1)
continue;
#endif
@@ -940,7 +939,7 @@ static void vDramCPUReadWriteTestAfterCalibration(DRAMC_CTX_T *p)
if(u1DumpInfo)
{
- // Read gating error flag
+
#if (FOR_DV_SIMULATION_USED==0 && SW_CHANGE_FOR_SIMULATION==0)
DramcDumpDebugInfo(p);
#endif
@@ -990,13 +989,9 @@ static DRAM_STATUS_T DramcSave_Time_For_Cal_Init(DRAMC_CTX_T *p)
if (doe_get_config("fullk"))
return DRAM_FAIL;
- // Parepare fask k data
+
#if EMMC_READY
- // scy: only need to read emmc one time for each boot-up
- //if (g_dram_save_time_init_done == 1)
- // return DRAM_OK;
- //else
- // g_dram_save_time_init_done = 1;
+
if (read_offline_dram_calibration_data(vGet_Current_SRAMIdx(p), p->pSavetimeData) < 0)
{
p->femmc_Ready = 0;
@@ -1007,7 +1002,7 @@ static DRAM_STATUS_T DramcSave_Time_For_Cal_Init(DRAMC_CTX_T *p)
p->femmc_Ready = 1;
}
- #else //EMMC is not avaliable, load off-line data
+ #else
if (g_dram_save_time_init_done[vGet_Current_SRAMIdx(p)] == 0)
{
@@ -1024,7 +1019,7 @@ static DRAM_STATUS_T DramcSave_Time_For_Cal_Init(DRAMC_CTX_T *p)
if (p->femmc_Ready == 1)
{
if (p->frequency < 1600)
- { // freq < 1600, TX and RX tracking are disable. Therefore, bypass calibration.
+ {
p->Bypass_RDDQC = 1;
p->Bypass_RXWINDOW = 1;
p->Bypass_TXWINDOW = 1;
@@ -1059,24 +1054,24 @@ static void DramRankNumberDetection(DRAMC_CTX_T *p)
{
U8 u1RankBak;
- u1RankBak = u1GetRank(p); // backup current rank setting
+ u1RankBak = u1GetRank(p);
- vSetPHY2ChannelMapping(p, CHANNEL_A); // when switching channel, must update PHY to Channel Mapping
+ vSetPHY2ChannelMapping(p, CHANNEL_A);
vSetRank(p, RANK_1);
if (DramcWriteLeveling(p, AUTOK_ON, PI_BASED) == DRAM_OK)
{
p->support_rank_num = RANK_DUAL;
- vIO32WriteFldAlign(DRAMC_REG_SA_RESERVE, 0, SA_RESERVE_SINGLE_RANK); //keep support_rank_num to reserved rg
+ vIO32WriteFldAlign(DRAMC_REG_SA_RESERVE, 0, SA_RESERVE_SINGLE_RANK);
}
else
{
p->support_rank_num = RANK_SINGLE;
- vIO32WriteFldAlign(DRAMC_REG_SA_RESERVE, 1, SA_RESERVE_SINGLE_RANK); //keep support_rank_num to reserved rg
+ vIO32WriteFldAlign(DRAMC_REG_SA_RESERVE, 1, SA_RESERVE_SINGLE_RANK);
}
mcSHOW_DBG_MSG2(("[RankNumberDetection] %d\n", p->support_rank_num));
- vSetRank(p, u1RankBak); // restore rank setting
+ vSetRank(p, u1RankBak);
}
#endif
@@ -1107,17 +1102,17 @@ void vCalibration_Flow_For_MDL(DRAMC_CTX_T *p)
{
vSetRank(p, s1RankIdx);
- vAutoRefreshSwitch(p, ENABLE); //when doing gating, RX and TX calibration, auto refresh should be enable
+ vAutoRefreshSwitch(p, ENABLE);
dramc_rx_dqs_gating_cal(p, AUTOK_OFF, 0);
DramcRxWindowPerbitCal(p, PATTERN_RDDQC, NULL, AUTOK_OFF, NORMAL_K);
#if MRW_CHECK_ONLY
mcSHOW_MRW_MSG(("\n==[MR Dump] %s==\n", __func__));
#endif
- vAutoRefreshSwitch(p, DISABLE); //After gating, Rx and Tx calibration, auto refresh should be disable
+ vAutoRefreshSwitch(p, DISABLE);
}
- vSetRank(p, RANK_0); // Set p's rank back to 0 (Avoids unexpected auto-rank offset calculation in u4RegBaseAddrTraslate())
+ vSetRank(p, RANK_0);
#if GATING_ADJUST_TXDLY_FOR_TRACKING
DramcRxdqsGatingPostProcess(p);
@@ -1139,15 +1134,15 @@ static int GetDramInforAfterCalByMRR(DRAMC_CTX_T *p, DRAM_INFO_BY_MRR_T *DramInf
vSetPHY2ChannelMapping(p, CHANNEL_A);
- // Read MR5 for Vendor ID
- DramcModeRegReadByRank(p, RANK_0, 5, &(p->vendor_id));// for byte mode, don't show value of another die.
+
+ DramcModeRegReadByRank(p, RANK_0, 5, &(p->vendor_id));
p->vendor_id &= 0xFF;
mcSHOW_DBG_MSG2(("[GetDramInforAfterCalByMRR] Vendor %x.\n", p->vendor_id));
- // Read MR6 for Revision ID
- DramcModeRegReadByRank(p, RANK_0, 6, &(p->revision_id));// for byte mode, don't show value of another die.
+
+ DramcModeRegReadByRank(p, RANK_0, 6, &(p->revision_id));
mcSHOW_DBG_MSG2(("[GetDramInforAfterCalByMRR] Revision %x.\n", p->revision_id));
- // Read MR6 for Revision ID2
- DramcModeRegReadByRank(p, RANK_0, 7, &u2MR7);// for byte mode, don't show value of another die.
+
+ DramcModeRegReadByRank(p, RANK_0, 7, &u2MR7);
mcSHOW_DBG_MSG2(("[GetDramInforAfterCalByMRR] Revision 2 %x.\n", u2MR7));
#if (!__ETT__) && (FOR_DV_SIMULATION_USED==0)
set_dram_mr(5, p->vendor_id);
@@ -1163,10 +1158,10 @@ static int GetDramInforAfterCalByMRR(DRAMC_CTX_T *p, DRAM_INFO_BY_MRR_T *DramInf
DramInfo->u8MR8Density[u1RankIdx] =0;
}
- // Read MR8 for dram density
+
for (u1RankIdx = 0; u1RankIdx < (p->support_rank_num); u1RankIdx++)
{
- #if 0//PRINT_CALIBRATION_SUMMARY
+ #if 0
if ((p->aru4CalExecuteFlag[u1ChannelIdx][u1RankIdx] != 0) && \
(p->aru4CalResultFlag[u1ChannelIdx][u1RankIdx] == 0))
#endif
@@ -1179,7 +1174,7 @@ static int GetDramInforAfterCalByMRR(DRAMC_CTX_T *p, DRAM_INFO_BY_MRR_T *DramInf
u2MR8 |= (u2Density & 0xFF) << (u1RankIdx * 8);
u1DieNumber = 1;
- if (((u2Density >> 6) & 0x3) == 1) //OP[7:6] =0, x16 (normal mode)
+ if (((u2Density >> 6) & 0x3) == 1)
u1DieNumber = 2;
if (DramInfo != NULL)
@@ -1189,33 +1184,33 @@ static int GetDramInforAfterCalByMRR(DRAMC_CTX_T *p, DRAM_INFO_BY_MRR_T *DramInf
switch (u2Density)
{
- ///TODO: Darren, please check the value of u8Size.
+
case 0x0:
- u8Size = 0x20000000; //4Gb = 512MB
+ u8Size = 0x20000000;
//mcSHOW_DBG_MSG(("[EMI]DRAM density = 4Gb\n"));
break;
case 0x1:
- u8Size = 0x30000000; //6Gb = 768MB
+ u8Size = 0x30000000;
//mcSHOW_DBG_MSG(("[EMI]DRAM density = 6Gb\n"));
break;
case 0x2:
- u8Size = 0x40000000; //8Gb = 1GB = 2^30 bytes = 0x40000000 bytes
+ u8Size = 0x40000000;
//mcSHOW_DBG_MSG(("[EMI]DRAM density = 8Gb\n"));
break;
case 0x3:
- u8Size = 0x60000000; //12Gb = 1.5GB = 3^30 bytes = 0x60000000 bytes
+ u8Size = 0x60000000;
//mcSHOW_DBG_MSG(("[EMI]DRAM density = 12Gb\n"));
break;
case 0x4:
- u8Size = 0x80000000; //16Gb = 2GB = 4^30 bytes = 0x80000000 bytes
+ u8Size = 0x80000000;
//mcSHOW_DBG_MSG(("[EMI]DRAM density = 16Gb\n"));
break;
case 0x5:
- u8Size = 0xc0000000; //24Gb = 3GB = 6^30 bytes = 0xc0000000 bytes
+ u8Size = 0xc0000000;
//mcSHOW_DBG_MSG(("[EMI]DRAM density = 24Gb\n"));
break;
case 0x6:
- u8Size = 0x100000000L; //32Gb = 4GB = 8^30 bytes = 0x10000000 bytes
+ u8Size = 0x100000000L;
//mcSHOW_DBG_MSG(("[EMI]DRAM density = 32Gb\n"));
break;
default:
@@ -1227,13 +1222,13 @@ static int GetDramInforAfterCalByMRR(DRAMC_CTX_T *p, DRAM_INFO_BY_MRR_T *DramInf
u8Size >>= 1;
#endif
- if (u8Size_backup < u8Size) // find max dram size for vDramcACTimingOptimize
+ if (u8Size_backup < u8Size)
{
u8Size_backup = u8Size;
p->density = u2Density;
}
- p->ranksize[u1RankIdx] = u8Size * u1DieNumber; //dram rank size = density * DieNumber
+ p->ranksize[u1RankIdx] = u8Size * u1DieNumber;
if (DramInfo != NULL)
{
@@ -1241,8 +1236,7 @@ static int GetDramInforAfterCalByMRR(DRAMC_CTX_T *p, DRAM_INFO_BY_MRR_T *DramInf
}
}
DramInfo->u4RankNum = p->support_rank_num;
- // 1GB = 2^30 bytes
- // u8Size * (2^3) / (2^30) ==>Gb
+
mcSHOW_DBG_MSG2(("RK%d, DieNum %d, Density %dGb, RKsize %dGb.\n\n", u1RankIdx, u1DieNumber, (U32)(u8Size >> 27), (U32)(p->ranksize[u1RankIdx] >> 27)));
}
#if (!__ETT__) && (FOR_DV_SIMULATION_USED==0)
@@ -1262,8 +1256,7 @@ static void vCalibration_Flow_LP4(DRAMC_CTX_T *p)
TimeProfileBegin();
#endif
-#if 0//SIMULATION_RX_INPUT_BUF // skip when bring up
- //TODO: no shuffle, only need to do once under highest freq.
+#if 0
if((p->frequency >= 2133) && (p->rank == RANK_0))
//if (p->rank == RANK_0)
DramcRXInputBufferOffsetCal(p);
@@ -1284,10 +1277,10 @@ static void vCalibration_Flow_LP4(DRAMC_CTX_T *p)
else
u1RankMax = RANK_1;
- //vAutoRefreshSwitch(p, DISABLE); //auto refresh is set as disable in LP4_DramcSetting, so don't need to disable again
+ //vAutoRefreshSwitch(p, DISABLE);
vAutoRefreshSwitch(p, DISABLE);
-#if 1//(SIMUILATION_CBT == 1)
+#if 1
for(s1RankIdx=RANK_0; s1RankIdx<u1RankMax; s1RankIdx++)
{
vSetRank(p, s1RankIdx);
@@ -1301,7 +1294,7 @@ static void vCalibration_Flow_LP4(DRAMC_CTX_T *p)
if (GetEyeScanEnable(p, EYESCAN_TYPE_CBT) == ENABLE)
{
CmdBusTrainingLP45(p, AUTOK_OFF, EYESCAN_K);
- print_EYESCAN_LOG_message(p, EYESCAN_TYPE_CBT); //draw CBT eyescan
+ print_EYESCAN_LOG_message(p, EYESCAN_TYPE_CBT);
}
#endif
@@ -1317,23 +1310,22 @@ static void vCalibration_Flow_LP4(DRAMC_CTX_T *p)
No_Parking_On_CLRPLL(p);
#endif
- //@Darren, Fix high freq keep FSP0 for CA term workaround (PPR abnormal)
- // The patch must to do after cbt training
+
ShuffleDfsToOriginalFSP(p);
#endif
-#if 0//(SIMULATION_WRITE_LEVELING == 1)
+#if 0
for(s1RankIdx=RANK_0; s1RankIdx<u1RankMax; s1RankIdx++)
{
vSetRank(p, s1RankIdx);
- vAutoRefreshSwitch(p, DISABLE); //When doing WriteLeveling, should make sure that auto refresh is disable
+ vAutoRefreshSwitch(p, DISABLE);
#if (!WCK_LEVELING_FM_WORKAROUND)
if (u1IsLP4Family(p->dram_type))
#endif
{
- if (!(u1IsLP4Div4DDR800(p) && (p->rank == RANK_1))) // skip for DDR800 rank1
+ if (!(u1IsLP4Div4DDR800(p) && (p->rank == RANK_1)))
{
mcSHOW_DBG_MSG(("\n----->DramcWriteLeveling(PI) begin...\n"));
@@ -1351,27 +1343,27 @@ static void vCalibration_Flow_LP4(DRAMC_CTX_T *p)
}
vSetRank(p, RANK_0);
- #if ENABLE_WDQS_MODE_2 // <=DDR1600 reduce PI change code time
- if (!(u1IsLP4Div4DDR800(p)) && (p->frequency <= 800) && (p->support_rank_num == RANK_DUAL)) // skip DDR800semi, for DDR1200/DDR1600 only
+ #if ENABLE_WDQS_MODE_2
+ if (!(u1IsLP4Div4DDR800(p)) && (p->frequency <= 800) && (p->support_rank_num == RANK_DUAL))
WriteLevelingPosCal(p, PI_BASED);
- #elif ENABLE_TX_WDQS // for WDQS mode 1 to avoid dual rank PI code incorrect
+ #elif ENABLE_TX_WDQS
if (!(u1IsLP4Div4DDR800(p)) && (p->support_rank_num == RANK_DUAL))
WriteLevelingPosCal(p, PI_BASED);
#endif
-#endif /* (SIMULATION_WRITE_LEVELING == 1) */
+#endif
for(s1RankIdx=RANK_0; s1RankIdx<u1RankMax; s1RankIdx++)
{
vSetRank(p, s1RankIdx);
-#if 1//(SIMULATION_WRITE_LEVELING == 1)
- vAutoRefreshSwitch(p, DISABLE); //When doing WriteLeveling, should make sure that auto refresh is disable
+#if 1
+ vAutoRefreshSwitch(p, DISABLE);
#if (!WCK_LEVELING_FM_WORKAROUND)
if (u1IsLP4Family(p->dram_type))
#endif
{
- if ((!((vGet_DDR_Loop_Mode(p) == SEMI_OPEN_LOOP_MODE) && (p->rank == RANK_1))) // skip for DDR800 RANK1
+ if ((!((vGet_DDR_Loop_Mode(p) == SEMI_OPEN_LOOP_MODE) && (p->rank == RANK_1)))
&& (!(vGet_DDR_Loop_Mode(p) == OPEN_LOOP_MODE))) // skip for DDR400
{
//mcSHOW_DBG_MSG(("\n----->DramcWriteLeveling(PI) begin...\n"));
@@ -1387,13 +1379,13 @@ static void vCalibration_Flow_LP4(DRAMC_CTX_T *p)
TimeProfileBegin();
#endif
}
-#endif /* (SIMULATION_WRITE_LEVELING == 1) */
+#endif
#if LJPLL_FREQ_DEBUG_LOG
DDRPhyFreqMeter(p);
#endif
- vAutoRefreshSwitch(p, ENABLE); //when doing gating, RX and TX calibration, auto refresh should be enable
+ vAutoRefreshSwitch(p, ENABLE);
dramc_rx_dqs_gating_cal(p, AUTOK_OFF, 0);
@@ -1407,7 +1399,7 @@ static void vCalibration_Flow_LP4(DRAMC_CTX_T *p)
DDRPhyFreqMeter(p);
#endif
-#if ENABLE_RX_INPUT_BUFF_OFF_K // skip when bring up
+#if ENABLE_RX_INPUT_BUFF_OFF_K
if((p->frequency >= 2133) && (p->rank == RANK_0))
DramcRXInputBufferOffsetCal(p);
@@ -1449,7 +1441,7 @@ static void vCalibration_Flow_LP4(DRAMC_CTX_T *p)
#if TX_K_DQM_WITH_WDBI
if ((p->DBI_W_onoff[p->dram_fsp]==DBI_ON))
{
- // K DQM with DBI_ON, and check DQM window spec.
+
//mcSHOW_DBG_MSG(("[TX_K_DQM_WITH_WDBI] Step1: K DQM with DBI_ON, and check DQM window spec.\n\n"));
vSwitchWriteDBISettings(p, DBI_ON);
DramcTxWindowPerbitCal((DRAMC_CTX_T *) p, TX_DQ_DQS_MOVE_DQM_ONLY, FALSE, AUTOK_OFF);
@@ -1461,7 +1453,7 @@ static void vCalibration_Flow_LP4(DRAMC_CTX_T *p)
if (GetEyeScanEnable(p, EYESCAN_TYPE_TX) == ENABLE)
{
Dramc_K_TX_EyeScan_Log(p);
- print_EYESCAN_LOG_message(p, EYESCAN_TYPE_TX); //draw TX eyescan
+ print_EYESCAN_LOG_message(p, EYESCAN_TYPE_TX);
}
#endif
@@ -1491,7 +1483,7 @@ static void vCalibration_Flow_LP4(DRAMC_CTX_T *p)
CheckRxPinMux(p);
#endif
- DramcRxWindowPerbitCal(p, PATTERN_TEST_ENGINE, NULL /*Set Vref = 0 to test*/, AUTOK_ON, NORMAL_K);
+ DramcRxWindowPerbitCal(p, PATTERN_TEST_ENGINE, NULL , AUTOK_ON, NORMAL_K);
#ifdef DDR_INIT_TIME_PROFILING
CPU_Cycle=TimeProfileEnd();
@@ -1503,8 +1495,8 @@ static void vCalibration_Flow_LP4(DRAMC_CTX_T *p)
#if ENABLE_EYESCAN_GRAPH
if (GetEyeScanEnable(p, EYESCAN_TYPE_RX) == ENABLE)
{
- DramcRxWindowPerbitCal(p, PATTERN_TEST_ENGINE, NULL /*Set Vref = 0 to test*/, AUTOK_ON, EYESCAN_K);
- print_EYESCAN_LOG_message(p, EYESCAN_TYPE_RX); //draw RX eyescan
+ DramcRxWindowPerbitCal(p, PATTERN_TEST_ENGINE, NULL , AUTOK_ON, EYESCAN_K);
+ print_EYESCAN_LOG_message(p, EYESCAN_TYPE_RX);
}
#endif
@@ -1534,7 +1526,7 @@ static void vCalibration_Flow_LP4(DRAMC_CTX_T *p)
if(p->femmc_Ready==0)
#endif
{
- if(p->frequency >= RX_VREF_DUAL_RANK_K_FREQ) // for 3733/4266
+ if(p->frequency >= RX_VREF_DUAL_RANK_K_FREQ)
{
U8 u1ByteIdx, u1HighFreqRXVref[2];
for(u1ByteIdx =0 ; u1ByteIdx<DQS_BYTE_NUMBER; u1ByteIdx++)
@@ -1552,7 +1544,7 @@ static void vCalibration_Flow_LP4(DRAMC_CTX_T *p)
}
#endif
- vSetRank(p, RANK_0); // Set p's rank back to 0 (Avoids unexpected auto-rank offset calculation in u4RegBaseAddrTraslate())
+ vSetRank(p, RANK_0);
#if ENABLE_TX_TRACKING
DramcDQSOSCShuSettings(p);
@@ -1619,7 +1611,7 @@ void vDramCalibrationAllChannel(DRAMC_CTX_T *p)
CmdOEOnOff(p, DISABLE, CMDOE_DIS_TO_ALL_CHANNEL);
for (channel_idx = CHANNEL_A; channel_idx < p->support_channel_num; channel_idx++)
{
- vSetPHY2ChannelMapping(p, channel_idx);// when switching channel, must update PHY to Channel Mapping
+ vSetPHY2ChannelMapping(p, channel_idx);
CmdOEOnOff(p, ENABLE, CMDOE_DIS_TO_ONE_CHANNEL);
vDramCalibrationSingleChannel(p);
}
@@ -1651,9 +1643,9 @@ void vDramCalibrationAllChannel(DRAMC_CTX_T *p)
}
#endif
- /* Enable/Disable calibrated rank's DBI function accordingly */
+
#if ENABLE_READ_DBI
- //Read DBI ON
+
vSetRank(p, RANK_0);
vSetPHY2ChannelMapping(p, CHANNEL_A);
@@ -1661,7 +1653,7 @@ void vDramCalibrationAllChannel(DRAMC_CTX_T *p)
#endif
#if ENABLE_WRITE_DBI
- // Just settle the DBI parameters which would be stored into shuffle space.
+
if (p->DBI_W_onoff[p->dram_fsp])
{
for (channel_idx = CHANNEL_A; channel_idx < p->support_channel_num; channel_idx++)
@@ -1671,13 +1663,13 @@ void vDramCalibrationAllChannel(DRAMC_CTX_T *p)
for (rank_idx = RANK_0; rank_idx < RANK_MAX; rank_idx++)
{
vSetRank(p, rank_idx);
- DramcWriteShiftMCKForWriteDBI(p, -1); //Tx DQ/DQM -1 MCK for write DBI ON
+ DramcWriteShiftMCKForWriteDBI(p, -1);
}
vSetRank(p, RANK_0);
}
vSetPHY2ChannelMapping(p, CHANNEL_A);
- // Improve Write DBI Power
+
ApplyWriteDBIPowerImprove(p, ENABLE);
#if ENABLE_WRITE_DBI_Protect
@@ -1782,7 +1774,7 @@ int Init_DRAM(DRAM_DRAM_TYPE_T dram_type, DRAM_CBT_MODE_EXTERN_T dram_cbt_mode_e
p = &gTimeProfilingDramCtx;
gfirst_init_flag = 0;
- //DramcConfInfraReset(p); //No need when DDR_INIT_TIME_PROFILING_TEST_CNT=1
+ //DramcConfInfraReset(p);
#else
p = psCurrDramCtx;
#endif
@@ -1793,7 +1785,7 @@ int Init_DRAM(DRAM_DRAM_TYPE_T dram_type, DRAM_CBT_MODE_EXTERN_T dram_cbt_mode_e
p->dram_type = dram_type;
- /* Convert DRAM_CBT_MODE_EXTERN_T to DRAM_CBT_MODE_T */
+
switch ((int)dram_cbt_mode_extern)
{
case CBT_R0_R1_NORMAL:
@@ -1835,7 +1827,7 @@ int Init_DRAM(DRAM_DRAM_TYPE_T dram_type, DRAM_CBT_MODE_EXTERN_T dram_cbt_mode_e
while (1);
#endif
- DramcBroadcastOnOff(DRAMC_BROADCAST_ON); //LP4 broadcast on
+ DramcBroadcastOnOff(DRAMC_BROADCAST_ON);
if (gfirst_init_flag == 0)
{
@@ -1855,7 +1847,7 @@ int Init_DRAM(DRAM_DRAM_TYPE_T dram_type, DRAM_CBT_MODE_EXTERN_T dram_cbt_mode_e
backup_broadcast = GetDramcBroadcast();
DramcBroadcastOnOff(DRAMC_BROADCAST_OFF);
mdl_setting(p);
- UpdateGlobal10GBEnVariables(p); // @Darren, for 10GB
+ UpdateGlobal10GBEnVariables(p);
TA2_Test_Run_Time_HW_Set_Column_Num(p);
DramcBroadcastOnOff(backup_broadcast);
}
@@ -1867,26 +1859,25 @@ int Init_DRAM(DRAM_DRAM_TYPE_T dram_type, DRAM_CBT_MODE_EXTERN_T dram_cbt_mode_e
vDramcInit_PreSettings(p);
#endif
- // DramC & PHY init for all channels
- //=== First frequency ======
+
#if defined(DUMP_INIT_RG_LOG_TO_DE)
- vSetDFSFreqSelByTable(p, &gFreqTbl[1]); //0:3200 1:4266, 2:800, 3:1866, 4:1200, 5:2400, 6:1600
+ vSetDFSFreqSelByTable(p, &gFreqTbl[1]);
#else
vSetDFSFreqSelByTable(p, &gFreqTbl[DRAM_DFS_SRAM_MAX-1]);
//vSetDFSFreqSelByTable(p, &gFreqTbl[1]);
#endif
#if (DUAL_FREQ_K==0) || (__FLASH_TOOL_DA__)
- gAndroid_DVFS_en = FALSE; //skip ETT DVFS stress
+ gAndroid_DVFS_en = FALSE;
#endif
#if RUNTIME_SHMOO_RELEATED_FUNCTION
- ett_fix_freq = 1; /* only 1600 & 4266 */
+ ett_fix_freq = 1;
#endif
if (!CONFIG(MEDIATEK_DRAM_DVFS))
- ett_fix_freq = 0x1; // 4266, 1600
+ ett_fix_freq = 0x1;
if (ett_fix_freq != 0xff)
gAndroid_DVFS_en = FALSE;
@@ -1895,14 +1886,13 @@ int Init_DRAM(DRAM_DRAM_TYPE_T dram_type, DRAM_CBT_MODE_EXTERN_T dram_cbt_mode_e
DramcSave_Time_For_Cal_Init(p);
#endif
#ifndef LOOPBACK_TEST
- if (p->dram_type == TYPE_LPDDR4X) // LP4/LP4P need confirm
+ if (p->dram_type == TYPE_LPDDR4X)
{
- // LP4 IMP_LOW_FREQ <= DDR3733, IMP_HIGH_FREQ >= DDR4266
- // LP5 IMP_LOW_FREQ <= DDR3733, IMP_HIGH_FREQ >= DDR4266
+
DramcImpedanceCal(p, 1, IMP_LOW_FREQ);
DramcImpedanceCal(p, 1, IMP_HIGH_FREQ);
#if ENABLE_SAMSUNG_NT_ODT
- DramcImpedanceCal(p, 1, IMP_NT_ODTN); // for Samsung NT ODTN
+ DramcImpedanceCal(p, 1, IMP_NT_ODTN);
#endif
}
else
@@ -1924,7 +1914,7 @@ int Init_DRAM(DRAM_DRAM_TYPE_T dram_type, DRAM_CBT_MODE_EXTERN_T dram_cbt_mode_e
mcSHOW_DUMP_INIT_RG_MSG(("\n\n//=== DDR\033[1;32m%d\033[m\n",p->frequency<<1));
#endif
- //Clk free run
+
//EnableDramcPhyDCM(p, 0);
DFSInitForCalibration(p);
@@ -1947,7 +1937,7 @@ int Init_DRAM(DRAM_DRAM_TYPE_T dram_type, DRAM_CBT_MODE_EXTERN_T dram_cbt_mode_e
if (Get_MDL_Used_Flag()==GET_MDL_USED)
{
DramRankNumberDetection(p);
- DFSInitForCalibration(p); // Restore setting after rank dection (especially DQ= DQS+16)
+ DFSInitForCalibration(p);
}
#endif
@@ -1966,13 +1956,13 @@ int Init_DRAM(DRAM_DRAM_TYPE_T dram_type, DRAM_CBT_MODE_EXTERN_T dram_cbt_mode_e
if (Get_MDL_Used_Flag()==GET_MDL_USED)
{
- // only K CHA to save time
+
vSetPHY2ChannelMapping(p, CHANNEL_A);
- vCalibration_Flow_For_MDL(p); // currently for LP4
+ vCalibration_Flow_For_MDL(p);
GetDramInforAfterCalByMRR(p, DramInfo);
return 0;
}
- else //NORMAL_USED
+ else
{
vDramCalibrationAllChannel(p);
GetDramInforAfterCalByMRR(p, DramInfo);
@@ -1990,7 +1980,7 @@ int Init_DRAM(DRAM_DRAM_TYPE_T dram_type, DRAM_CBT_MODE_EXTERN_T dram_cbt_mode_e
#if SUPPORT_SAVE_TIME_FOR_CALIBRATION
DramcSave_Time_For_Cal_End(p);
#endif
- LoadShuffleSRAMtoDramc(p, vGet_Current_SRAMIdx(p), DRAM_DFS_REG_SHU1); //Darren: DDR1600 for MRW (DramcModeRegInit_LP4 and CBT)
+ LoadShuffleSRAMtoDramc(p, vGet_Current_SRAMIdx(p), DRAM_DFS_REG_SHU1);
S8 u1ShuIdx;
S8 s1ShuStart, s1ShuEnd;
@@ -2028,7 +2018,7 @@ int Init_DRAM(DRAM_DRAM_TYPE_T dram_type, DRAM_CBT_MODE_EXTERN_T dram_cbt_mode_e
DramcSave_Time_For_Cal_End(p);
#endif
}
-#endif //(DUAL_FREQ_K) && (!__FLASH_TOOL_DA__)
+#endif
#ifdef DDR_INIT_TIME_PROFILING
@@ -2043,7 +2033,7 @@ int Init_DRAM(DRAM_DRAM_TYPE_T dram_type, DRAM_CBT_MODE_EXTERN_T dram_cbt_mode_e
#if __Petrus_TO_BE_PORTING__
-#if 0//TX_OE_CALIBATION, for DMA test
+#if 0
U8 u1ChannelIdx, u1RankIdx;
for (u1ChannelIdx = 0; u1ChannelIdx < (p->support_channel_num); u1ChannelIdx++)
for (u1RankIdx = 0; u1RankIdx < (p->support_rank_num); u1RankIdx++)
@@ -2073,13 +2063,13 @@ int Init_DRAM(DRAM_DRAM_TYPE_T dram_type, DRAM_CBT_MODE_EXTERN_T dram_cbt_mode_e
DramcRegDump(p, SRAM_SHU0);
#endif
-// ETT_NO_DRAM #endif
+
#if ETT_NO_DRAM
//NoDramDramcRegDump(p);
NoDramRegFill();
#endif
-#endif //#if __Petrus_TO_BE_PORTING__
+#endif
#if DRAMC_MODEREG_CHECK
DramcModeReg_Check(p);
@@ -2104,22 +2094,22 @@ int Init_DRAM(DRAM_DRAM_TYPE_T dram_type, DRAM_CBT_MODE_EXTERN_T dram_cbt_mode_e
#if SUPPORT_SAVE_TIME_FOR_CALIBRATION
if (!(p->femmc_Ready == 0))
#elif defined(DDR_INIT_TIME_PROFILING)
-if (u2TimeProfileCnt == (DDR_INIT_TIME_PROFILING_TEST_CNT - 1)) //last time of loop
+if (u2TimeProfileCnt == (DDR_INIT_TIME_PROFILING_TEST_CNT - 1))
#endif
#endif
{
EnableDFSHwModeClk(p);
mcSHOW_DBG_MSG2(("DFS_SHUFFLE_HW_MODE: ON\n"));
- if (gAndroid_DVFS_en == TRUE) // shuffle to DDR3733 boot
+ if (gAndroid_DVFS_en == TRUE)
{
#if defined(SLT)
#ifdef SLT_2400_EXIT_PRELOADER
- final_shu = SRAM_SHU0; //DDR2400
+ final_shu = SRAM_SHU0;
#else
- final_shu = SRAM_SHU0; //DDR3200
+ final_shu = SRAM_SHU0;
#endif
#else
- final_shu = SRAM_SHU0; //DDR4266
+ final_shu = SRAM_SHU0;
#endif
vSetDFSFreqSelByTable(p, get_FreqTbl_by_SRAMIndex(p, final_shu));
@@ -2135,7 +2125,7 @@ if (u2TimeProfileCnt == (DDR_INIT_TIME_PROFILING_TEST_CNT - 1)) //last time of l
#if __Petrus_TO_BE_PORTING__
#if (DVT_TEST_DUMMY_RD_SIDEBAND_FROM_SPM && defined(DUMMY_READ_FOR_TRACKING))
- DramcDummyReadForSPMSideBand(p); // SPM dummy read 1us <-> 4us for DVT only (it must call after TransferPLLToSPMControl)
+ DramcDummyReadForSPMSideBand(p);
#endif
EnableDramcTrackingBySPMControl(p);
@@ -2164,7 +2154,7 @@ if (u2TimeProfileCnt == (DDR_INIT_TIME_PROFILING_TEST_CNT - 1)) //last time of l
#if (__ETT__ && CPU_RW_TEST_AFTER_K)
- /* 0x46000000 is LK base addr */
+
//while(1)
{
//if ((s4value = dramc_complex_mem_test (0x46000000, 0x2000)) == 0)
@@ -2190,9 +2180,9 @@ if (u2TimeProfileCnt == (DDR_INIT_TIME_PROFILING_TEST_CNT - 1)) //last time of l
#ifdef DDR_INIT_TIME_PROFILING
CPU_Cycle = TimeProfileEnd();
mcSHOW_TIME_MSG((" (5) After calibration takes %d ms\n\r", CPU_Cycle / 1000));
-#endif // end of DDR_INIT_TIME_PROFILING
+#endif
-#endif//SW_CHANGE_FOR_SIMULATION
+#endif
#if defined(FOR_HQA_REPORT_USED)
print_HQA_SLT_BIN_message(p);
@@ -2212,21 +2202,21 @@ if (u2TimeProfileCnt == (DDR_INIT_TIME_PROFILING_TEST_CNT - 1)) //last time of l
return 0;
}
-///TODO: wait for porting ---
+
#if FOR_DV_SIMULATION_USED
-///TODO: wait for porting +++
+
void DPI_vDramCalibrationSingleChannel(DRAMC_CTX_T *DramConfig, cal_sv_rand_args_t *psra)
{
U8 ii;
- ///TODO: wait for porting +++
+
#if GATING_ADJUST_TXDLY_FOR_TRACKING
DramcRxdqsGatingPreProcess(DramConfig);
#endif
- ///TODO: wait for porting ---
+
vAutoRefreshSwitch(DramConfig, DISABLE);
@@ -2239,7 +2229,7 @@ void DPI_vDramCalibrationSingleChannel(DRAMC_CTX_T *DramConfig, cal_sv_rand_args
mcSHOW_DBG_MSG6(("\n----->DramcCBT begin...\n"));
timestamp_show();
#if CBT_O1_PINMUX_WORKAROUND
- CmdBusTrainingLP45(DramConfig, AUTOK_OFF); //Cannot use aito-k in A60868
+ CmdBusTrainingLP45(DramConfig, AUTOK_OFF);
#else
if (psra)
CmdBusTrainingLP45(DramConfig, psra->cbt_autok, NORMAL_K);
@@ -2254,7 +2244,7 @@ void DPI_vDramCalibrationSingleChannel(DRAMC_CTX_T *DramConfig, cal_sv_rand_args
{
mcSHOW_DBG_MSG6(("CBT EYESCAN start<-----\n\n"));
CmdBusTrainingLP45(DramConfig, AUTOK_OFF, EYESCAN_K);
- print_EYESCAN_LOG_message(DramConfig, EYESCAN_TYPE_CBT); //draw CBT eyescan
+ print_EYESCAN_LOG_message(DramConfig, EYESCAN_TYPE_CBT);
mcSHOW_DBG_MSG6(("CBT EYESCAN end<-----\n\n"));
}
#endif
@@ -2264,25 +2254,25 @@ void DPI_vDramCalibrationSingleChannel(DRAMC_CTX_T *DramConfig, cal_sv_rand_args
ShuffleDfsToOriginalFSP(DramConfig);
- ///TODO: wait for porting +++
+
#if __A60868_TO_BE_PORTING__
No_Parking_On_CLRPLL(DramConfig);
-#endif // __A60868_TO_BE_PORTING__
- ///TODO: wait for porting ---
-#endif /* (SIMUILATION_CBT == 1) */
+#endif
+
+#endif
for (ii = RANK_0; ii < DramConfig->support_rank_num; ii++)
{
vSetRank(DramConfig, ii);
- vAutoRefreshSwitch(DramConfig, DISABLE); //When doing WriteLeveling, should make sure that auto refresh is disable
+ vAutoRefreshSwitch(DramConfig, DISABLE);
#if (SIMULATION_WRITE_LEVELING == 1)
#if (!WCK_LEVELING_FM_WORKAROUND)
if (u1IsLP4Family(DramConfig->dram_type))
#endif
{
- if (!(u1IsPhaseMode(DramConfig) && (DramConfig->rank == RANK_1))) // skip for DDR800 and DDR400 rank1
+ if (!(u1IsPhaseMode(DramConfig) && (DramConfig->rank == RANK_1)))
{
if (!psra || psra->wl) {
mcSHOW_DBG_MSG6(("\n----->DramcWriteLeveling(PI) begin...\n"));
@@ -2299,7 +2289,7 @@ void DPI_vDramCalibrationSingleChannel(DRAMC_CTX_T *DramConfig, cal_sv_rand_args
}
}
}
-#endif /* (SIMULATION_WRITE_LEVELING == 1) */
+#endif
vAutoRefreshSwitch(DramConfig, ENABLE);
@@ -2321,9 +2311,9 @@ void DPI_vDramCalibrationSingleChannel(DRAMC_CTX_T *DramConfig, cal_sv_rand_args
mcSHOW_DBG_MSG6(("\n----->DramcRxWindowPerbitCal RDDQC begin...\n"));
timestamp_show();
- #if 0 // Used when testing LP5 RK1 WCK2CK in high efficiency mode and differential mode.
+ #if 0
p->rank = 1;
- // For test HEFF = 1 / WCKDUAL = 0
+
vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_SHU_WCKCTRL), 0, SHU_WCKCTRL_WCKDUAL);
vIO32WriteFldMulti(DRAMC_REG_ADDR(DRAMC_REG_SHU_COMMON0),
P_Fld(1, SHU_COMMON0_LP5WCKON) |
@@ -2335,7 +2325,7 @@ void DPI_vDramCalibrationSingleChannel(DRAMC_CTX_T *DramConfig, cal_sv_rand_args
mcSHOW_DBG_MSG6(("DramcRxWindowPerbitCal end<-----\n\n"));
}
-#endif // (SIMULATION_RX_RDDQC == 1)
+#endif
#if (SIMULATION_TX_PERBIT == 1)
if (!psra || psra->tx_perbit) {
@@ -2369,15 +2359,15 @@ void DPI_vDramCalibrationSingleChannel(DRAMC_CTX_T *DramConfig, cal_sv_rand_args
{
mcSHOW_DBG_MSG6(("\n----->DramcTxEYESCAN begin...\n"));
Dramc_K_TX_EyeScan_Log(DramConfig);
- print_EYESCAN_LOG_message(DramConfig, EYESCAN_TYPE_TX); //draw TX eyescan
+ print_EYESCAN_LOG_message(DramConfig, EYESCAN_TYPE_TX);
mcSHOW_DBG_MSG6(("\n----->DramcTxEYESCAN end...\n"));
}
#endif
}
-#endif // (SIMULATION_TX_PERBIT == 1)
+#endif
#if (SIMULATION_DATLAT == 1)
- if (1) { // No parameter in correspondence with by now
+ if (1) {
mcSHOW_DBG_MSG6(("\n----->DramcRxdatlatCal begin...\n"));
timestamp_show();
@@ -2386,7 +2376,7 @@ void DPI_vDramCalibrationSingleChannel(DRAMC_CTX_T *DramConfig, cal_sv_rand_args
timestamp_show();
mcSHOW_DBG_MSG6(("DramcRxdatlatCal end<-----\n\n"));
}
-#endif // (SIMULATION_DATLAT == 1)
+#endif
#if (SIMULATION_RX_PERBIT == 1)
if (!psra || psra->rx_perbit) {
@@ -2394,10 +2384,10 @@ void DPI_vDramCalibrationSingleChannel(DRAMC_CTX_T *DramConfig, cal_sv_rand_args
timestamp_show();
if (psra)
DramcRxWindowPerbitCal(DramConfig, PATTERN_TEST_ENGINE,
- NULL /*Set Vref = 0 to test*/, psra->rx_auto_cal, NORMAL_K);
+ NULL , psra->rx_auto_cal, NORMAL_K);
else
DramcRxWindowPerbitCal(DramConfig, PATTERN_TEST_ENGINE,
- NULL /*Set Vref = 0 to test*/, AUTOK_OFF, NORMAL_K);
+ NULL , AUTOK_OFF, NORMAL_K);
timestamp_show();
mcSHOW_DBG_MSG6(("DramcRxWindowPerbitCal end<-----\n\n"));
@@ -2405,13 +2395,13 @@ void DPI_vDramCalibrationSingleChannel(DRAMC_CTX_T *DramConfig, cal_sv_rand_args
if (GetEyeScanEnable(DramConfig, EYESCAN_TYPE_RX) == ENABLE)
{
mcSHOW_DBG_MSG6(("DramcRxWindowPerbitCal EYESCAN start<-----\n\n"));
- DramcRxWindowPerbitCal(DramConfig, PATTERN_TEST_ENGINE, NULL /*Set Vref = 0 to test*/, AUTOK_ON, EYESCAN_K);
- print_EYESCAN_LOG_message(DramConfig, EYESCAN_TYPE_RX); //draw RX eyescan
+ DramcRxWindowPerbitCal(DramConfig, PATTERN_TEST_ENGINE, NULL , AUTOK_ON, EYESCAN_K);
+ print_EYESCAN_LOG_message(DramConfig, EYESCAN_TYPE_RX);
mcSHOW_DBG_MSG6(("DramcRxWindowPerbitCal EYESCAN end<-----\n\n"));
}
#endif
}
-#endif // (SIMULATION_RX_PERBIT == 1)
+#endif
#if (SIMULATION_RX_DVS == 1)
if (DramConfig->frequency >=2133)
@@ -2423,10 +2413,10 @@ void DPI_vDramCalibrationSingleChannel(DRAMC_CTX_T *DramConfig, cal_sv_rand_args
{
DramcTxOECalibration(DramConfig);
}
-#endif // TX_OE_CALIBATION
+#endif
#if ENABLE_TX_TRACKING
- #if 0 /* Starting from Vinson, no need to pre-calculate MR23 for different freqs */
+ #if 0
if (gu1MR23Done == FALSE)
{
DramcDQSOSCAuto(p);
@@ -2444,7 +2434,7 @@ void DPI_vDramCalibrationSingleChannel(DRAMC_CTX_T *DramConfig, cal_sv_rand_args
DramcDQSOSCShuSettings(DramConfig);
#endif
-///TODO: wait for porting +++
+
#if GATING_ADJUST_TXDLY_FOR_TRACKING
DramcRxdqsGatingPostProcess(DramConfig);
#endif
@@ -2474,7 +2464,7 @@ void DPI_vDramCalibrationSingleChannel(DRAMC_CTX_T *DramConfig, cal_sv_rand_args
RDSELRunTimeTracking_preset(DramConfig);
#endif
-///TODO: wait for porting ---
+
}
@@ -2485,20 +2475,20 @@ void DPI_vDramCalibrationAllChannel(DRAMC_CTX_T *DramConfig, cal_sv_rand_args_t
CKEFixOnOff(DramConfig, TO_ALL_RANK, CKE_FIXOFF, TO_ALL_CHANNEL);
for (channel_idx = CHANNEL_A; channel_idx < DramConfig->support_channel_num; channel_idx++)
{
- vSetPHY2ChannelMapping(DramConfig, channel_idx);// when switching channel, must update PHY to Channel Mapping
+ vSetPHY2ChannelMapping(DramConfig, channel_idx);
CKEFixOnOff(DramConfig, TO_ALL_RANK, CKE_FIXON, TO_ONE_CHANNEL);
DPI_vDramCalibrationSingleChannel(DramConfig, psra);
}
vSetPHY2ChannelMapping(DramConfig, CHANNEL_A);
-///TODO: wait for porting +++
+
#if ENABLE_READ_DBI
DramcReadDBIOnOff(DramConfig, DramConfig->DBI_R_onoff[DramConfig->dram_fsp]);
#endif
#if ENABLE_WRITE_DBI
- // Just settle the DBI parameters which would be stored into shuffle space.
+
if (DramConfig->DBI_W_onoff[DramConfig->dram_fsp])
{
for (channel_idx = CHANNEL_A; channel_idx < DramConfig->support_channel_num; channel_idx++)
@@ -2508,13 +2498,13 @@ void DPI_vDramCalibrationAllChannel(DRAMC_CTX_T *DramConfig, cal_sv_rand_args_t
for (rank_idx = RANK_0; rank_idx < DramConfig->support_rank_num; rank_idx++)
{
vSetRank(DramConfig, rank_idx);
- DramcWriteShiftMCKForWriteDBI(DramConfig, -1); //Tx DQ/DQM -1 MCK for write DBI ON
+ DramcWriteShiftMCKForWriteDBI(DramConfig, -1);
}
vSetRank(DramConfig, RANK_0);
}
vSetPHY2ChannelMapping(DramConfig, CHANNEL_A);
- // Improve Write DBI Power
+
ApplyWriteDBIPowerImprove(DramConfig, ENABLE);
#if ENABLE_WRITE_DBI_Protect
@@ -2559,11 +2549,11 @@ void DPI_vDramCalibrationAllChannel(DRAMC_CTX_T *DramConfig, cal_sv_rand_args_t
mcSHOW_DBG_MSG6(("TX_TRACKING: OFF\n"));
#endif
-///TODO: wait for porting ---
+
}
-///TODO: wait for porting +++
+
#if __A60868_TO_BE_PORTING__
void RG_dummy_write(DRAMC_CTX_T *p, U32 pattern)
{
@@ -2574,10 +2564,10 @@ void RG_dummy_write(DRAMC_CTX_T *p, U32 pattern)
void EnablePLLtoSPMControl(DRAMC_CTX_T *p)
{
- vIO32WriteFldAlign_All(DDRPHY_MISC_SPM_CTRL1, 0, MISC_SPM_CTRL1_SPM_DVFS_CONTROL_SEL); // DFS SPM mode for calibration
+ vIO32WriteFldAlign_All(DDRPHY_MISC_SPM_CTRL1, 0, MISC_SPM_CTRL1_SPM_DVFS_CONTROL_SEL);
}
-#endif // __A60868_TO_BE_PORTING__
-///TODO: wait for porting ---
+#endif
+
void dump_dramc_ctx(DRAMC_CTX_T *p)
{
@@ -2614,7 +2604,7 @@ void DPI_SW_main_LP4(DRAMC_CTX_T *ExtConfig, cal_sv_rand_args_t *psra)
S8 s1ShuIdx;
#endif
- DRAMC_CTX_T *p = &DramCtx_LPDDR4; //default;
+ DRAMC_CTX_T *p = &DramCtx_LPDDR4;
p->dram_type = ExtConfig->dram_type;
if(p->dram_type==TYPE_LPDDR5)
@@ -2633,15 +2623,15 @@ void DPI_SW_main_LP4(DRAMC_CTX_T *ExtConfig, cal_sv_rand_args_t *psra)
p->freqGroup = ExtConfig->freqGroup;
p->new_cbt_mode = ExtConfig->new_cbt_mode;
-#if 0 // for Refs
+#if 0
DRAM_DFS_FREQUENCY_TABLE_T gFreqTbl[DRAM_DFS_SRAM_MAX] = {
- {LP4_DDR3200 /*0*/, DIV8_MODE, SRAM_SHU1, DUTY_LAST_K, VREF_CALI_OFF, CLOSE_LOOP_MODE}, // highest freq of term group (3733) must k first.
- {LP4_DDR4266 /*1*/, DIV8_MODE, SRAM_SHU0, DUTY_NEED_K, VREF_CALI_ON, CLOSE_LOOP_MODE}, // highest freq of term group (3733) must k first.
- {LP4_DDR800 /*2*/, DIV4_MODE, SRAM_SHU6, DUTY_DEFAULT, VREF_CALI_OFF, SEMI_OPEN_LOOP_MODE}, //Darren: DDR1600 for MRW (DramcModeRegInit_LP4 and CBT)
- {LP4_DDR1866 /*3*/, DIV8_MODE, SRAM_SHU3, DUTY_LAST_K, VREF_CALI_OFF, CLOSE_LOOP_MODE}, // highest freq of unterm group (2400) must k first.
- {LP4_DDR1200 /*4*/, DIV8_MODE, SRAM_SHU5, DUTY_LAST_K, VREF_CALI_OFF, CLOSE_LOOP_MODE}, // highest freq of unterm group (2400) must k first.
- {LP4_DDR2400 /*5*/, DIV8_MODE, SRAM_SHU2, DUTY_NEED_K, VREF_CALI_ON, CLOSE_LOOP_MODE}, // highest freq of unterm group (2400) must k first.
- {LP4_DDR1600 /*6*/, DIV8_MODE, SRAM_SHU4, DUTY_DEFAULT, VREF_CALI_ON, CLOSE_LOOP_MODE}, //Darren: DDR1600 for MRW (DramcModeRegInit_LP4 and CBT)
+ {LP4_DDR3200 /*0*/, DIV8_MODE, SRAM_SHU1, DUTY_LAST_K, VREF_CALI_OFF, CLOSE_LOOP_MODE},
+ {LP4_DDR4266 /*1*/, DIV8_MODE, SRAM_SHU0, DUTY_NEED_K, VREF_CALI_ON, CLOSE_LOOP_MODE},
+ {LP4_DDR800 /*2*/, DIV4_MODE, SRAM_SHU6, DUTY_DEFAULT, VREF_CALI_OFF, SEMI_OPEN_LOOP_MODE},
+ {LP4_DDR1866 /*3*/, DIV8_MODE, SRAM_SHU3, DUTY_LAST_K, VREF_CALI_OFF, CLOSE_LOOP_MODE},
+ {LP4_DDR1200 /*4*/, DIV8_MODE, SRAM_SHU5, DUTY_LAST_K, VREF_CALI_OFF, CLOSE_LOOP_MODE},
+ {LP4_DDR2400 /*5*/, DIV8_MODE, SRAM_SHU2, DUTY_NEED_K, VREF_CALI_ON, CLOSE_LOOP_MODE},
+ {LP4_DDR1600 /*6*/, DIV8_MODE, SRAM_SHU4, DUTY_DEFAULT, VREF_CALI_ON, CLOSE_LOOP_MODE},
};
#endif
if (u1IsLP4Family(p->dram_type))
@@ -2669,36 +2659,34 @@ DRAM_DFS_FREQUENCY_TABLE_T gFreqTbl[DRAM_DFS_SRAM_MAX] = {
enter_function();
if (!psra) {
- /*
- * for SA's simulation
- */
+
mcSHOW_DBG_MSG6(("enter SA's simulation flow.\n"));
p->support_channel_num = CHANNEL_SINGLE;
p->channel = CHANNEL_A;
p->support_rank_num = RANK_DUAL;
- /* DramRank */
+
p->rank = RANK_0;
- /* DRAMC operation clock frequency in MHz */
+
#if (fcFOR_CHIP_ID == fcA60868)
#if DV_SIMULATION_DFS
p->pDFSTable = &gFreqTbl[DRAM_DFS_SRAM_MAX-1];
#endif
#endif
#if 0
- /* DRAM type */
+
#if DV_SIMULATION_LP4
p->dram_type = TYPE_LPDDR4X;
- //p->freq_sel = LP4_DDR3200;//DV_SIMULATION_RUN_FREQ_SEL;
- //p->frequency = 1600;//DV_SIMULATION_RUN_FREQ;
- p->freq_sel = LP4_DDR1600;//DV_SIMULATION_RUN_FREQ_SEL;
- p->frequency = 800;//DV_SIMULATION_RUN_FREQ;
+ //p->freq_sel = LP4_DDR3200;
+ //p->frequency = 1600;
+ p->freq_sel = LP4_DDR1600;
+ p->frequency = 800;
#else
p->dram_type = TYPE_LPDDR5;
- p->freq_sel = LP5_DDR3200;//DV_SIMULATION_RUN_FREQ_SEL;
- p->frequency = 1600;//DV_SIMULATION_RUN_FREQ;
+ p->freq_sel = LP5_DDR3200;
+ p->frequency = 1600;
#endif
#endif
- /* DRAM Fast switch point type, only for LP4, useless in LP3 */
+
p->dram_fsp = FSP_0;
#if 0
@@ -2710,31 +2698,31 @@ DRAM_DFS_FREQUENCY_TABLE_T gFreqTbl[DRAM_DFS_SRAM_MAX] = {
p->dram_cbt_mode[RANK_1] = CBT_NORMAL_MODE;
#endif
#endif
- /* IC and DRAM read DBI */
- p->DBI_R_onoff[FSP_0] = DBI_OFF; /* only for LP4, uesless in LP3 */
- p->DBI_R_onoff[FSP_1] = DBI_OFF; /* only for LP4, uesless in LP3 */
+
+ p->DBI_R_onoff[FSP_0] = DBI_OFF;
+ p->DBI_R_onoff[FSP_1] = DBI_OFF;
#if ENABLE_READ_DBI
- p->DBI_R_onoff[FSP_1] = DBI_ON; /* only for LP4, uesless in LP3 */
+ p->DBI_R_onoff[FSP_1] = DBI_ON;
#else
- p->DBI_R_onoff[FSP_1] = DBI_OFF; /* only for LP4, uesless in LP3 */
+ p->DBI_R_onoff[FSP_1] = DBI_OFF;
#endif
- /* IC and DRAM write DBI */
- p->DBI_W_onoff[FSP_0] = DBI_OFF; /* only for LP4, uesless in LP3 */
- p->DBI_W_onoff[FSP_1] = DBI_OFF; /* only for LP4, uesless in LP3 */
+
+ p->DBI_W_onoff[FSP_0] = DBI_OFF;
+ p->DBI_W_onoff[FSP_1] = DBI_OFF;
#if ENABLE_WRITE_DBI
- p->DBI_W_onoff[FSP_1] = DBI_ON; /* only for LP4, uesless in LP3 */
+ p->DBI_W_onoff[FSP_1] = DBI_ON;
#else
- p->DBI_W_onoff[FSP_1] = DBI_OFF; /* only for LP4, uesless in LP3 */
+ p->DBI_W_onoff[FSP_1] = DBI_OFF;
#endif
- /* bus width */
+
p->data_width = DATA_WIDTH_16BIT;
- /* DRAMC internal test engine-2 parameters in calibration */
+
p->test2_1 = DEFAULT_TEST2_1_CAL;
p->test2_2 = DEFAULT_TEST2_2_CAL;
- /* DRAMC test pattern in calibration */
+
p->test_pattern = TEST_XTALK_PATTERN;
- /* u2DelayCellTimex100 */
- p->u2DelayCellTimex100 = 250; // @Darren, 2.5ps
+
+ p->u2DelayCellTimex100 = 250;
p->vendor_id = 0x1;
p->density = 0;
/* p->ranksize = {0,0}; */
@@ -2751,50 +2739,48 @@ DRAM_DFS_FREQUENCY_TABLE_T gFreqTbl[DRAM_DFS_SRAM_MAX] = {
p->lp5_cbt_phase = CBT_PHASE_FALLING;
#endif
} else {
- /*
- * for DV's regression
- */
+
mcSHOW_DBG_MSG6(("enter DV's regression flow.\n"));
p->support_channel_num = CHANNEL_SINGLE;
p->channel = psra->calibration_channel;
p->support_rank_num = RANK_DUAL;
- /* DramRank */
+
p->rank = psra->calibration_rank;
- /* DRAMC operation clock frequency in MHz */
+
#if (fcFOR_CHIP_ID == fcA60868)
#if DV_SIMULATION_DFS
p->pDFSTable = &gFreqTbl[DRAM_DFS_SRAM_MAX-1];
#endif
#endif
- /* DRAM type */
+
//p->dram_type = psra->dram_type;
- //p->freq_sel = LP5_DDR4266;//DV_SIMULATION_RUN_FREQ_SEL;
- //p->frequency = 2133;//DV_SIMULATION_RUN_FREQ;
+ //p->freq_sel = LP5_DDR4266;
+ //p->frequency = 2133;
set_type_freq_by_svargs(p, psra);
- /* DRAM Fast switch point type, only for LP4, useless in LP3 */
+
p->dram_fsp = FSP_0;
p->dram_cbt_mode[RANK_0] = psra->rk0_cbt_mode;
p->dram_cbt_mode[RANK_1] = psra->rk1_cbt_mode;
- /* IC and DRAM read DBI */
- p->DBI_R_onoff[FSP_0] = (psra->mr3_value >> 6) & 0x1; /* only for LP4, uesless in LP3 */
- p->DBI_R_onoff[FSP_1] = (psra->mr3_value >> 6) & 0x1; /* only for LP4, uesless in LP3 */
+
+ p->DBI_R_onoff[FSP_0] = (psra->mr3_value >> 6) & 0x1;
+ p->DBI_R_onoff[FSP_1] = (psra->mr3_value >> 6) & 0x1;
p->DBI_R_onoff[FSP_2] = (psra->mr3_value >> 6) & 0x1;
- /* IC and DRAM write DBI */
- p->DBI_W_onoff[FSP_0] = (psra->mr3_value >> 7) & 0x1; /* only for LP4, uesless in LP3 */
- p->DBI_W_onoff[FSP_1] = (psra->mr3_value >> 7) & 0x1; /* only for LP4, uesless in LP3 */
+
+ p->DBI_W_onoff[FSP_0] = (psra->mr3_value >> 7) & 0x1;
+ p->DBI_W_onoff[FSP_1] = (psra->mr3_value >> 7) & 0x1;
p->DBI_W_onoff[FSP_2] = (psra->mr3_value >> 7) & 0x1;
- /* bus width */
+
p->data_width = DATA_WIDTH_16BIT;
- /* DRAMC internal test engine-2 parameters in calibration */
+
p->test2_1 = DEFAULT_TEST2_1_CAL;
p->test2_2 = DEFAULT_TEST2_2_CAL;
- /* DRAMC test pattern in calibration */
+
p->test_pattern = TEST_XTALK_PATTERN;
- /* u2DelayCellTimex100 */
+
p->u2DelayCellTimex100 = 0;
p->vendor_id = 0x1;
p->density = 0;
@@ -2815,8 +2801,7 @@ DRAM_DFS_FREQUENCY_TABLE_T gFreqTbl[DRAM_DFS_SRAM_MAX] = {
p->dram_fsp = (psra->mr13_value >> 7) & 0x1;
}
-// p->dram_type = TYPE_LPDDR5;
-// #define __FW_VER__ "WCK leveling with DLY +16! and MRinit for FSP1 -- 777"
+
#define __FW_VER__ "All struct move done, new RX range -- 444"
if (u1IsLP4Family(p->dram_type)) {
@@ -2859,7 +2844,7 @@ DRAM_DFS_FREQUENCY_TABLE_T gFreqTbl[DRAM_DFS_SRAM_MAX] = {
value = u4Dram_Register_Read(p, DDRPHY_MD32_REG_SSPM_TIMER0_RESET_VAL );
mcSHOW_DBG_MSG6(("Get Addr:0x%x, Value:0x%x\n", DDRPHY_MD32_REG_SSPM_TIMER0_RESET_VAL, value));
- DramcBroadcastOnOff(DRAMC_BROADCAST_ON); //LP4 broadcast on
+ DramcBroadcastOnOff(DRAMC_BROADCAST_ON);
Global_Option_Init(p);
@@ -2869,15 +2854,14 @@ DRAM_DFS_FREQUENCY_TABLE_T gFreqTbl[DRAM_DFS_SRAM_MAX] = {
DDRPhyFreqSel(p, p->pDFSTable->freq_sel);
vSetPHY2ChannelMapping(p, p->channel);
-#endif // __A60868_TO_BE_PORTING__
- ///TODO: wait for porting ---
+#endif
if (u1IsLP4Family(p->dram_type))
{
- vSetDFSFreqSelByTable(p, p->pDFSTable); // for LP4x
+ vSetDFSFreqSelByTable(p, p->pDFSTable);
}
- else ///TODO: Jeremy, modify this when LP5 gFreqtbl ready
+ else
{
DDRPhyFreqSel(p, p->freq_sel);
}
@@ -2885,19 +2869,18 @@ DRAM_DFS_FREQUENCY_TABLE_T gFreqTbl[DRAM_DFS_SRAM_MAX] = {
#if (SIMULATION_SW_IMPED == 1)
mcSHOW_DBG_MSG6(("\n----->DramcImpedanceCal begin...\n"));
timestamp_show();
- // LP4 IMP_LOW_FREQ <= DDR3733, IMP_HIGH_FREQ >= DDR4266
- // LP5 IMP_LOW_FREQ <= DDR3733, IMP_HIGH_FREQ >= DDR4266
+
DramcImpedanceCal(p, 1, IMP_LOW_FREQ);
DramcImpedanceCal(p, 1, IMP_HIGH_FREQ);
timestamp_show();
mcSHOW_DBG_MSG6(("DramcImpedanceCal end<-----\n\n"));
-#endif /* (SIMULATION_SW_IMPED == 1) */
+#endif
#if DV_SIMULATION_INIT_C
- ///TODO: wait for porting +++
+
DramcInit(p);
- // Before calibration setting
+
vBeforeCalibration(p);
#if __A60868_TO_BE_PORTING__
#if DV_SIMULATION_BEFORE_K
@@ -2906,15 +2889,14 @@ DRAM_DFS_FREQUENCY_TABLE_T gFreqTbl[DRAM_DFS_SRAM_MAX] = {
#endif
#ifdef DUMP_INIT_RG_LOG_TO_DE
- #if 0 //Dump RG to other shuffle for FT used, don't delete
+ #if 0
mcSHOW_DUMP_INIT_RG_MSG(("\n\n\n\n\n\n===== Save to Shuffle RG ======\n"));
DramcSaveToShuffleReg(p, DRAM_DFS_SHUFFLE_1, DRAM_DFS_SHUFFLE_3);
#endif
while (1);
#endif
#endif
-#endif // __A60868_TO_BE_PORTING__
- ///TODO: wait for porting ---
+#endif
#if (SIMULATION_MIOCK_JMETER == 1)
@@ -2923,26 +2905,24 @@ DRAM_DFS_FREQUENCY_TABLE_T gFreqTbl[DRAM_DFS_SRAM_MAX] = {
p->u2DelayCellTimex100 = GetVcoreDelayCellTime(p);
timestamp_show();
mcSHOW_DBG_MSG6(("DramcMiockJmeter end<-----\n\n"));
-#endif /* (SIMULATION_MIOCK_JMETER == 1) */
+#endif
#if (SIMULATION_8PHASE == 1)
if(is_lp5_family(p) && (p->frequency >= 2133)) {
mcSHOW_DBG_MSG6(("\n----->Dramc8PhaseCal begin...\n"));
timestamp_show();
- Dramc8PhaseCal(p); // it must set before duty calib
+ Dramc8PhaseCal(p);
timestamp_show();
mcSHOW_DBG_MSG6(("Dramc8PhaseCal end<-----\n\n"));
}
-#endif /* (SIMULATION_8PHASE == 1) */
-
- ///TODO: wait for porting +++
- #if !DV_SIMULATION_DFS // No calib will use legacy mode init settings
- DPI_vDramCalibrationAllChannel(p, psra); // for DDR1600 1:8 mode
+#endif
+ #if !DV_SIMULATION_DFS
+ DPI_vDramCalibrationAllChannel(p, psra);
#endif
#if DV_SIMULATION_DFS
DramcSaveToShuffleSRAM(p, DRAM_DFS_REG_SHU0, vGet_Current_SRAMIdx(p));
- LoadShuffleSRAMtoDramc(p, vGet_Current_SRAMIdx(p), DRAM_DFS_REG_SHU1); //Darren: DDR1600 for MRW (DramcModeRegInit_LP4 and CBT)
+ LoadShuffleSRAMtoDramc(p, vGet_Current_SRAMIdx(p), DRAM_DFS_REG_SHU1);
#if (fcFOR_CHIP_ID == fcA60868)
for (s1ShuIdx = DRAM_DFS_SRAM_MAX - 10; s1ShuIdx >= 0; s1ShuIdx--)
@@ -2952,7 +2932,7 @@ DRAM_DFS_FREQUENCY_TABLE_T gFreqTbl[DRAM_DFS_SRAM_MAX] = {
{
vSetDFSFreqSelByTable(p, &gFreqTbl[s1ShuIdx]);
DramcInit(p);
- // Before calibration setting
+
vBeforeCalibration(p);
#if DV_SIMULATION_BEFORE_K
@@ -2963,31 +2943,31 @@ DRAM_DFS_FREQUENCY_TABLE_T gFreqTbl[DRAM_DFS_SRAM_MAX] = {
if(is_lp5_family(p) && (p->frequency >= 2133)) {
mcSHOW_DBG_MSG6(("\n----->Dramc8PhaseCal begin...\n"));
timestamp_show();
- Dramc8PhaseCal(p); // it must set before duty calib
+ Dramc8PhaseCal(p);
timestamp_show();
mcSHOW_DBG_MSG6(("Dramc8PhaseCal end<-----\n\n"));
}
- #endif /* (SIMULATION_8PHASE == 1) */
+ #endif
- #if !DV_SIMULATION_DFS // No calib will use legacy mode init settings
- DPI_vDramCalibrationAllChannel(p, psra); // for gDVDFSTbl
+ #if !DV_SIMULATION_DFS
+ DPI_vDramCalibrationAllChannel(p, psra);
#endif
DramcSaveToShuffleSRAM(p, DRAM_DFS_REG_SHU0, gFreqTbl[s1ShuIdx].SRAMIdx);
}
#endif
- ///TODO: wait for porting ---
- ///TODO: wait for porting +++
+
+
vAfterCalibration(p);
#if SIMULATION_RUNTIME_CONFIG
DramcRunTimeConfig(p);
#endif
-#if 0//__A60868_TO_BE_PORTING__
+#if 0
#if DV_SIMULATION_AFTER_K
vApplyConfigAfterCalibration(p);
#endif
@@ -3003,11 +2983,10 @@ DRAM_DFS_FREQUENCY_TABLE_T gFreqTbl[DRAM_DFS_SRAM_MAX] = {
mcSHOW_DBG_MSG(("[Runtime time MRR] MR4 = 0x%x, MR5 = 0x%x, MR8 = 0x%x\n", u2val1, u2val2, u2val3));
#endif
-#if 0//DV_SIMULATION_DFS // NOTE: Don't use DramcDFSDirectJump_SPMMode. it will cause NULL object access.
- // high freq -> low freq
+#if 0
for (s1ShuIdx = 0; s1ShuIdx < DV_SIMULATION_DFS_SHU_MAX; s1ShuIdx++)
DramcDFSDirectJump_SRAMShuRGMode(p, gDVDFSTbl[s1ShuIdx].SRAMIdx);
- // low freq -> high freq
+
for (s1ShuIdx = DV_SIMULATION_DFS_SHU_MAX - 1; s1ShuIdx >= DRAM_DFS_SHUFFLE_1; s1ShuIdx--)
DramcDFSDirectJump_SRAMShuRGMode(p, gDVDFSTbl[s1ShuIdx].SRAMIdx);
#endif
@@ -3017,8 +2996,7 @@ DRAM_DFS_FREQUENCY_TABLE_T gFreqTbl[DRAM_DFS_SRAM_MAX] = {
#endif
RG_dummy_write(p, 0xAAAAAAAA);
-#endif // __A60868_TO_BE_PORTING__
- ///TODO: wait for porting ---
+#endif
//Temp_TA2_Test_After_K(p);
@@ -3033,9 +3011,7 @@ DRAM_DFS_FREQUENCY_TABLE_T gFreqTbl[DRAM_DFS_SRAM_MAX] = {
exit_function();
}
-/*
- * start_dramk -- c calibration entry for SA's simulation
- */
+
void start_dramk(void)
{
DRAMC_CTX_T *p;
@@ -3047,11 +3023,7 @@ void start_dramk(void)
exit_function();
}
-/*
- * sa_calibration -- c calibration entry for DV's regression
- *
- * @psra: random arguments from sv to c for calibration controlling
- */
+
void sa_calibration(cal_sv_rand_args_t *psra)
{
DRAMC_CTX_T *p;
@@ -3083,7 +3055,7 @@ out:
}
-///TODO: wait for porting +++
+
#if __A60868_TO_BE_PORTING__
#if SW_CHANGE_FOR_SIMULATION
void main(void)
@@ -3092,37 +3064,37 @@ void main(void)
DRAMC_CTX_T DramConfig;
DramConfig.channel = CHANNEL_A;
DramConfig.support_rank_num = RANK_DUAL;
- // DramRank
+
DramConfig.rank = RANK_0;
- // DRAM type
+
DramConfig.dram_type = TYPE_LPDDR4X;
- // DRAM Fast switch point type, only for LP4, useless in LP3
+
DramConfig.dram_fsp = FSP_0;
- // DRAM CBT mode, only for LP4, useless in LP3
+
DramConfig.dram_cbt_mode[RANK_0] = CBT_NORMAL_MODE;
DramConfig.dram_cbt_mode[RANK_1] = CBT_NORMAL_MODE;
- // IC and DRAM read DBI
- DramConfig.DBI_R_onoff[FSP_0] = DBI_OFF; // only for LP4, uesless in LP3
+
+ DramConfig.DBI_R_onoff[FSP_0] = DBI_OFF;
#if ENABLE_READ_DBI
- DramConfig.DBI_R_onoff[FSP_1] = DBI_ON; // only for LP4, uesless in LP3
+ DramConfig.DBI_R_onoff[FSP_1] = DBI_ON;
#else
- DramConfig.DBI_R_onoff[FSP_1] = DBI_OFF; // only for LP4, uesless in LP3
+ DramConfig.DBI_R_onoff[FSP_1] = DBI_OFF;
#endif
- // IC and DRAM write DBI
- DramConfig.DBI_W_onoff[FSP_0] = DBI_OFF; // only for LP4, uesless in LP3
+
+ DramConfig.DBI_W_onoff[FSP_0] = DBI_OFF;
#if ENABLE_WRITE_DBI
- DramConfig.DBI_W_onoff[FSP_1] = DBI_ON; // only for LP4, uesless in LP3
+ DramConfig.DBI_W_onoff[FSP_1] = DBI_ON;
#else
- DramConfig.DBI_W_onoff[FSP_1] = DBI_OFF; // only for LP4, uesless in LP3
+ DramConfig.DBI_W_onoff[FSP_1] = DBI_OFF;
#endif
- // bus width
+
DramConfig.data_width = DATA_WIDTH_32BIT;
- // DRAMC internal test engine-2 parameters in calibration
+
DramConfig.test2_1 = DEFAULT_TEST2_1_CAL;
DramConfig.test2_2 = DEFAULT_TEST2_2_CAL;
- // DRAMC test pattern in calibration
+
DramConfig.test_pattern = TEST_XTALK_PATTERN;
- // DRAMC operation clock frequency in MHz
+
DramConfig.frequency = 800;
//DramConfig.enable_rx_scan_vref =DISABLE;
@@ -3133,7 +3105,7 @@ void main(void)
Global_Option_Init(&DramConfig);
- // DramC & PHY init for all channels
+
DDRPhyFreqSel(&DramConfig, LP4_DDR1600);
@@ -3150,8 +3122,8 @@ void main(void)
vSetPHY2ChannelMapping(&DramConfig, DramConfig.channel);
#if SIMULATION_SW_IMPED
- DramcImpedanceCal(&DramConfig, 1, LOW_FREQ); //for DRVN/P and ODTN
- //DramcImpedanceCal(&DramConfig, 1, HIGH_FREQ); //for DRVN/P and ODTN
+ DramcImpedanceCal(&DramConfig, 1, LOW_FREQ);
+ //DramcImpedanceCal(&DramConfig, 1, HIGH_FREQ);
#endif
@@ -3171,10 +3143,10 @@ void main(void)
#endif
#if SIMULATION_GATING
- // Gating calibration of single rank
+
DramcRxdqsGatingCal(&DramConfig);
- // Gating calibration of both rank
+
//DualRankDramcRxdqsGatingCal(&DramConfig);
#endif
@@ -3183,10 +3155,10 @@ void main(void)
#endif
#if SIMULATION_DATLAT
- // RX Datlat calibration of single rank
+
DramcRxdatlatCal(&DramConfig);
- // RX Datlat calibration of two rank
+
//DramcDualRankRxdatlatCal(&DramConfig);
#endif
@@ -3200,12 +3172,12 @@ void main(void)
#endif
#if ENABLE_READ_DBI
- //Read DBI ON
+
SetDramModeRegForReadDBIOnOff(&DramConfig, DramConfig.dram_fsp, DramConfig.DBI_R_onoff[DramConfig.dram_fsp]);
#endif
#if ENABLE_WRITE_DBI
- //Write DBI ON
+
DramcWriteShiftMCKForWriteDBI(&DramConfig, -1);
SetDramModeRegForWriteDBIOnOff(&DramConfig, DramConfig.dram_fsp, DramConfig.DBI_W_onoff[DramConfig.dram_fsp]);
#endif
@@ -3218,8 +3190,7 @@ void main(void)
DramcWriteDBIOnOff(&DramConfig, DramConfig.DBI_W_onoff[DramConfig.dram_fsp]);
#endif
}
-#endif //SW_CHANGE_FOR_SIMULATION
-#endif // __A60868_TO_BE_PORTING__
-///TODO: wait for porting ---
+#endif
+#endif
#endif