summaryrefslogtreecommitdiffstats
path: root/src/vendorcode/mediatek/mt8195/dramc/dramc_debug.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vendorcode/mediatek/mt8195/dramc/dramc_debug.c')
-rw-r--r--src/vendorcode/mediatek/mt8195/dramc/dramc_debug.c755
1 files changed, 288 insertions, 467 deletions
diff --git a/src/vendorcode/mediatek/mt8195/dramc/dramc_debug.c b/src/vendorcode/mediatek/mt8195/dramc/dramc_debug.c
index 6684c291c4e7..2627bb9aafd2 100644
--- a/src/vendorcode/mediatek/mt8195/dramc/dramc_debug.c
+++ b/src/vendorcode/mediatek/mt8195/dramc/dramc_debug.c
@@ -10,7 +10,6 @@
#if (FOR_DV_SIMULATION_USED == 0 && SW_CHANGE_FOR_SIMULATION == 0)
#include "dramc_top.h"
#ifndef MT6779_FPGA
-//#include <pmic.h>
#endif
#endif
@@ -387,7 +386,7 @@ void print_HQA_measure_message(DRAMC_CTX_T *p)
if (p->support_rank_num == RANK_DUAL)
{
- //Preloader LP3 RX/TX only K Rank0, so Rank1 use Rank0's value
+
if (!u1IsLP4Family(p->dram_type))
{
#ifndef LP3_DUAL_RANK_RX_K
@@ -401,7 +400,7 @@ void print_HQA_measure_message(DRAMC_CTX_T *p)
min_TX_DQ_bit[0][1] = min_TX_DQ_bit[0][0];
#endif
- #if 0//(TX_PER_BIT_DELAY_CELL==0)
+ #if 0
gFinalTXPerbitWin_min_margin[0][1] = gFinalTXPerbitWin_min_margin[0][0];
gFinalTXPerbitWin_min_margin_bit[0][1] = gFinalTXPerbitWin_min_margin_bit[0][0];
#endif
@@ -415,34 +414,23 @@ void print_HQA_measure_message(DRAMC_CTX_T *p)
HQA_LOG_Print_Prefix_String(p); mcSHOW_DBG_MSG(("Vcore_HQA = %d\n", read_voltage_value));
if (u1IsLP4Family(p->dram_type)) {
- /* LPDDR4 */
+
read_voltage_value = vGetVoltage(p, 1);
HQA_LOG_Print_Prefix_String(p); mcSHOW_DBG_MSG(("Vdram_HQA = %d\n", read_voltage_value));
read_voltage_value = vGetVoltage(p, 2);
HQA_LOG_Print_Prefix_String(p); mcSHOW_DBG_MSG(("Vddq_HQA = %d\n", read_voltage_value));
read_voltage_value = vGetVoltage(p, 3);
- HQA_LOG_Print_Prefix_String(p); mcSHOW_DBG_MSG(("Vdd1_HQA = %d\n", read_voltage_value)); /* confirm with pmic ownerˇAthis vio18 is pmic 6359 's vm18, is different with vio18 of system */
+ HQA_LOG_Print_Prefix_String(p); mcSHOW_DBG_MSG(("Vdd1_HQA = %d\n", read_voltage_value));
read_voltage_value = vGetVoltage(p, 4);
HQA_LOG_Print_Prefix_String(p); mcSHOW_DBG_MSG(("Vmddr_HQA = %d\n", read_voltage_value));
} else {
- /* LPDDR3 */
+
read_voltage_value = vGetVoltage(p, 1);
HQA_LOG_Print_Prefix_String(p); mcSHOW_DBG_MSG(("Vdram_HQA = %d\n", read_voltage_value));
}
mcSHOW_DBG_MSG(("\n"));
#endif
- /*
- [Impedance Calibration]
-
- freq_region=0
- [HQALOG] Impedance freq_region=0 DRVP 11
- [HQALOG] Impedance freq_region=0 DRVN 7
-
- freq_region=1
- [HQALOG] Impedance freq_region=1 DRVP 13
- [HQALOG] Impedance freq_region=1 ODTN 15
- */
if (p->dram_type == TYPE_LPDDR4)
{
print_imp_option[1] = TRUE;
@@ -454,7 +442,7 @@ void print_HQA_measure_message(DRAMC_CTX_T *p)
}
else
{
- //TYPE_LPDDR4P, TYPE_LPDDR3
+
print_imp_option[0] = TRUE;
}
@@ -483,15 +471,7 @@ if (gHQALog_flag == 1)
if (u1IsLP4Family(p->dram_type))
{
- //TO DO: jimmy
- //mcSHOW_DBG_MSG(("VrefCA Range : %d\n", gCBT_VREF_RANGE_SEL));
- /*
- VrefCA
- [HQALOG] 1600 VrefCA Channel0 Rank0 32
- [HQALOG] 1600 VrefCA Channel0 Rank1 24
- [HQALOG] 1600 VrefCA Channel1 Rank0 26
- [HQALOG] 1600 VrefCA Channel1 Rank1 30
- */
+
mcSHOW_DBG_MSG(("VrefCA\n"));
for (u1ChannelIdx = CHANNEL_A; u1ChannelIdx < local_channel_num; u1ChannelIdx++)
{
@@ -506,7 +486,7 @@ if (gHQALog_flag == 1)
}
}
-#if 0//(SUPPORT_SAVE_TIME_FOR_CALIBRATION && BYPASS_CBT)
+#if 0
if (p->femmc_Ready == 1 )
{
mcSHOW_DBG_MSG(("\n[Cmd Bus Training window bypass calibration]\n"));
@@ -514,13 +494,6 @@ if (gHQALog_flag == 1)
else
#endif
{
- /*
- CA_Window
- [HQALOG] 1600 CA_Window Channel0 Rank0 61(bit 2)
- [HQALOG] 1600 CA_Window Channel0 Rank1 62(bit 1)
- [HQALOG] 1600 CA_Window Channel1 Rank0 60(bit 5)
- [HQALOG] 1600 CA_Window Channel1 Rank1 60(bit 5)
- */
mcSHOW_DBG_MSG(("CA_Window\n"));
#ifdef FOR_HQA_REPORT_USED
if (gHQALog_flag == 1)
@@ -551,13 +524,6 @@ else
}
}
- /*
- CA Min Window(%)
- [HQALOG] 1600 CA_Window(%) Channel0 Rank0 96%(PASS)
- [HQALOG] 1600 CA_Window(%) Channel0 Rank1 97%(PASS)
- [HQALOG] 1600 CA_Window(%) Channel1 Rank0 94%(PASS)
- [HQALOG] 1600 CA_Window(%) Channel1 Rank1 94%(PASS)
- */
mcSHOW_DBG_MSG(("CA Min Window(%%)\n"));
#ifdef FOR_HQA_REPORT_USED
if (gHQALog_flag == 1)
@@ -594,11 +560,6 @@ else
- /*
- [RX minimum per bit window]
- Delay cell measurement (/100ps)
- [HQALOG] 3200 delaycell 892
- */
mcSHOW_DBG_MSG(("\n[RX minimum per bit window]\n"));
mcSHOW_DBG_MSG(("Delaycell measurement(/100ps)\n"));
@@ -611,15 +572,11 @@ else
{
if ((gHQALOG_RX_delay_cell_ps_075V < 245) || (gHQALOG_RX_delay_cell_ps_075V > 300))
{
- gHQALog_SLT_BIN[vGet_Current_SRAMIdx(p)] = 2; //SLT_BIN2
+ gHQALog_SLT_BIN[vGet_Current_SRAMIdx(p)] = 2;
}
}
#endif
- /*
- VrefDQ
- [HQALOG] 1600 VrefRX Channel0 24
- [HQALOG] 1600 VrefRX Channel1 24
- */
+
if (u1IsLP4Family(p->dram_type))
{
@@ -664,13 +621,7 @@ else
else
#endif
{
- /*
- RX_Window
- [HQALOG] 1600 RX_Window Channel0 Rank0 52(bit 2)
- [HQALOG] 1600 RX_Window Channel0 Rank1 52(bit 2)
- [HQALOG] 1600 RX_Window Channel1 Rank0 60(bit 12)
- [HQALOG] 1600 RX_Window Channel1 Rank1 62(bit 9)
- */
+
mcSHOW_DBG_MSG(("RX_Window\n"));
#ifdef FOR_HQA_REPORT_USED
if (gHQALog_flag == 1)
@@ -700,13 +651,7 @@ else
}
}
- /*
- RX Min Window(%)
- [HQALOG] 1600 RX_Window(%) Channel0 Rank0 43316/100ps(70%)(PASS)
- [HQALOG] 1600 RX_Window(%) Channel0 Rank1 43316/100ps(70%)(PASS)
- [HQALOG] 1600 RX_Window(%) Channel1 Rank0 49980/100ps(80%)(PASS)
- [HQALOG] 1600 RX_Window(%) Channel1 Rank1 51646/100ps(83%)(PASS)
- */
+
mcSHOW_DBG_MSG(("RX Window(%%)\n"));
#ifdef FOR_HQA_REPORT_USED
if (gHQALog_flag == 1)
@@ -720,7 +665,7 @@ if (gHQALog_flag == 1)
if ((((min_rx_value[u1ChannelIdx][u1RankIdx] * gHQALOG_RX_delay_cell_ps_075V * DDRPhyGetRealFreq(p) * 2) + (1000000 - 1)) / 1000000) < 55)
{
- gHQALog_SLT_BIN[vGet_Current_SRAMIdx(p)] = 4; //SLT_BIN4
+ gHQALog_SLT_BIN[vGet_Current_SRAMIdx(p)] = 4;
}
}
}
@@ -751,14 +696,6 @@ else
- /* [TX minimum per bit window]
- VrefDQ Range : 1
- VrefDQ
- [HQALOG] 1600 VrefTX Channel0 Rank0 30
- [HQALOG] 1600 VrefTX Channel0 Rank1 25
- [HQALOG] 1600 VrefTX Channel1 Rank0 24
- [HQALOG] 1600 VrefTX Channel1 Rank1 23
- */
mcSHOW_DBG_MSG(("\n[TX minimum per bit window]\n"));
if (u1IsLP4Family(p->dram_type))
{
@@ -791,13 +728,7 @@ else
else
#endif
{
- /*
- TX_Window
- [HQALOG] 1600 TX_Window Channel0 Rank0 25(bit 2)
- [HQALOG] 1600 TX_Window Channel0 Rank1 25(bit 2)
- [HQALOG] 1600 TX_Window Channel1 Rank0 22(bit 9)
- [HQALOG] 1600 TX_Window Channel1 Rank1 23(bit 9)
- */
+
mcSHOW_DBG_MSG(("TX_Window\n"));
#ifdef FOR_HQA_REPORT_USED
if (gHQALog_flag == 1)
@@ -842,13 +773,6 @@ else
#endif
- /*
- TX Min Window(%)
- [HQALOG] 1600 TX_Window(%) Channel0 Rank0 79%(PASS)
- [HQALOG] 1600 TX_Window(%) Channel0 Rank1 79%(PASS)
- [HQALOG] 1600 TX_Window(%) Channel1 Rank0 69%(PASS)
- [HQALOG] 1600 TX_Window(%) Channel1 Rank1 72%(PASS)
- */
mcSHOW_DBG_MSG(("TX Min Window(%%)\n"));
#ifdef FOR_HQA_REPORT_USED
if (gHQALog_flag == 1)
@@ -857,18 +781,13 @@ if (gHQALog_flag == 1)
{
for (u1RankIdx = RANK_0; u1RankIdx < p->support_rank_num; u1RankIdx++)
{
- /*
- Item Data Rate Mode Status
- 1 DDR1600 1:4 mode Done
- 2 DDR1200 1:4 mode Done
- 3 DDR800 1:4 mode 1UI=64PI special case
- */
+
HQA_Log_Message_for_Report(p, u1ChannelIdx, u1RankIdx, HQA_REPORT_FORMAT2, "TX", "_Window(%)", 0, (min_tx_value[u1ChannelIdx][u1RankIdx] * 100 + (vGet_DDR_Loop_Mode(p) == DDR800_CLOSE_LOOP? 63: 31)) / (vGet_DDR_Loop_Mode(p) == DDR800_CLOSE_LOOP? 64: 32), NULL);
HQA_Log_Message_for_Report(p, u1ChannelIdx, u1RankIdx, HQA_REPORT_FORMAT4, "TX", "_Window_PF", 0, 0, (min_tx_value[u1ChannelIdx][u1RankIdx] * 100 + (vGet_DDR_Loop_Mode(p) == DDR800_CLOSE_LOOP ? 63 : 31)) / (vGet_DDR_Loop_Mode(p) == DDR800_CLOSE_LOOP ? 64 : 32) >= 45 ? "PASS" : "FAIL");
if (((min_tx_value[u1ChannelIdx][u1RankIdx] * 100 + (vGet_DDR_Loop_Mode(p) == DDR800_CLOSE_LOOP? 63: 31)) / (vGet_DDR_Loop_Mode(p) == DDR800_CLOSE_LOOP? 64: 32)) < 55)
{
- gHQALog_SLT_BIN[vGet_Current_SRAMIdx(p)] = 4; //SLT_BIN4
+ gHQALog_SLT_BIN[vGet_Current_SRAMIdx(p)] = 4;
}
}
}
@@ -880,12 +799,7 @@ else
{
for (u1RankIdx = RANK_0; u1RankIdx < p->support_rank_num; u1RankIdx++)
{
- /*
- Item Data Rate Mode Status
- 1 DDR1600 1:4 mode Done
- 2 DDR1200 1:4 mode Done
- 3 DDR800 1:4 mode 1UI=64PI special case
- */
+
HQA_LOG_Print_Prefix_String(p); mcSHOW_DBG_MSG(("TX_Window(%%) Channel%d "
"Rank%d %d%% (%s)\n",
@@ -902,12 +816,7 @@ else
- /*
- [Duty Calibration]
- CLK Duty Final Delay Cell
- [HQALOG] DUTY CLK_Final_Delay Channel0 0
- [HQALOG] DUTY CLK_Final_Delay Channel1 -2
- */
+
#if !defined(RELEASE) && (VENDER_JV_LOG == 0)
if (u1IsLP4Family(p->dram_type) && (Get_Duty_Calibration_Mode(p) != DUTY_DEFAULT))
{
@@ -918,11 +827,7 @@ else
HQA_LOG_Print_Prefix_String(p); mcSHOW_DBG_MSG(("DUTY CLK_Final_Delay Channel%d %d\n", u1ChannelIdx, gFinalClkDuty[u1ChannelIdx]));
}
- /*
- CLK Duty MAX
- [HQALOG] DUTY CLK_MAX Channel0 4765%(X100)
- [HQALOG] DUTY CLK_MAX Channel1 5212%(X100)
- */
+
mcSHOW_DBG_MSG(("CLK Duty MAX\n"));
for (u1ChannelIdx = CHANNEL_A; u1ChannelIdx < local_channel_num; u1ChannelIdx++)
{
@@ -938,11 +843,7 @@ else
}
}
- /*
- CLK Duty MIN
- [HQALOG] DUTY CLK_MIN Channel0 4565%(X100)
- [HQALOG] DUTY CLK_MIN Channel1 5012%(X100)
- */
+
mcSHOW_DBG_MSG(("CLK Duty MIN\n"));
for (u1ChannelIdx = CHANNEL_A; u1ChannelIdx < local_channel_num; u1ChannelIdx++)
{
@@ -954,7 +855,7 @@ else
if ((gFinalClkDutyMinMax[u1ChannelIdx][1] - gFinalClkDutyMinMax[u1ChannelIdx][0]) > 750)
{
- gHQALog_SLT_BIN[vGet_Current_SRAMIdx(p)] = 3; //SLT_BIN3
+ gHQALog_SLT_BIN[vGet_Current_SRAMIdx(p)] = 3;
}
}
else
@@ -970,13 +871,7 @@ else
- /*
- DQS Duty Final Delay Cell
- [HQALOG] DUTY DQS_Final_Delay Channel0 DQS0 0
- [HQALOG] DUTY DQS_Final_Delay Channel0 DQS1 1
- [HQALOG] DUTY DQS_Final_Delay Channel1 DQS0 -2
- [HQALOG] DUTY DQS_Final_Delay Channel1 DQS1 -1
- */
+
if (u1IsLP4Family(p->dram_type) && (Get_Duty_Calibration_Mode(p) != DUTY_DEFAULT))
{
mcSHOW_DBG_MSG(("DQS Duty Final Delay Cell\n"));
@@ -986,13 +881,6 @@ else
HQA_LOG_Print_Prefix_String(p); mcSHOW_DBG_MSG(("DUTY DQS_Final_Delay Channel%d DQS1 %d\n", u1ChannelIdx, gFinalDQSDuty[u1ChannelIdx][1]));
}
- /*
- DQS Duty MAX
- [HQALOG] DUTY DQS_MAX Channel0 DQS0 4765%(X100)
- [HQALOG] DUTY DQS_MAX Channel0 DQS1 5212%(X100)
- [HQALOG] DUTY DQS_MAX Channel1 DQS0 4765%(X100)
- [HQALOG] DUTY DQS_MAX Channel1 DQS1 5212%(X100)
- */
mcSHOW_DBG_MSG(("DQS Duty MAX\n"));
for (u1ChannelIdx = CHANNEL_A; u1ChannelIdx < local_channel_num; u1ChannelIdx++)
{
@@ -1010,13 +898,7 @@ else
}
}
- /*
- DQS Duty MIN
- [HQALOG] DUTY DQS_MIN Channel0 DQS0 4765%(X100)
- [HQALOG] DUTY DQS_MIN Channel0 DQS1 5212%(X100)
- [HQALOG] DUTY DQS_MIN Channel1 DQS0 4765%(X100)
- [HQALOG] DUTY DQS_MIN Channel1 DQS1 5212%(X100)
- */
+
mcSHOW_DBG_MSG(("DQS Duty MIN\n"));
for (u1ChannelIdx = CHANNEL_A; u1ChannelIdx < local_channel_num; u1ChannelIdx++)
{
@@ -1030,7 +912,7 @@ else
if (((gFinalDQSDutyMinMax[u1ChannelIdx][0][1] - gFinalDQSDutyMinMax[u1ChannelIdx][0][0]) > 750) || ((gFinalDQSDutyMinMax[u1ChannelIdx][1][1] - gFinalDQSDutyMinMax[u1ChannelIdx][1][0]) > 750))
{
- gHQALog_SLT_BIN[vGet_Current_SRAMIdx(p)] = 3; //SLT_BIN3
+ gHQALog_SLT_BIN[vGet_Current_SRAMIdx(p)] = 3;
}
}
else
@@ -1063,7 +945,7 @@ else
if (u1IsLP4Family(p->dram_type))
{
mcSHOW_JV_LOG_MSG(("[Cmd Bus Training window]\n"));
- //TO DO:jimmy
+
//mcSHOW_JV_LOG_MSG(("VrefCA Range : %d\n", gCBT_VREF_RANGE_SEL));
#if CHANNEL_NUM == 4
mcSHOW_JV_LOG_MSG(("CHA_VrefCA_Rank0 CHB_VrefCA_Rank0 CHC_VrefCA_Rank0 CHD_VrefCA_Rank0\n"));
@@ -1187,7 +1069,7 @@ else
#endif
- // reset all data
+
HQA_measure_message_reset_all_data(p);
}
#ifdef RELEASE
@@ -1224,7 +1106,7 @@ static void print_EyeScanVcent_for_HQA_report_used(DRAMC_CTX_T *p, U8 print_type
}
else
{
- //LP3
+
local_channel_num = 1;
}
@@ -1236,14 +1118,14 @@ static void print_EyeScanVcent_for_HQA_report_used(DRAMC_CTX_T *p, U8 print_type
if (print_type == EYESCAN_TYPE_RX)
{
- if (p->odt_onoff==TRUE) //tern
+ if (p->odt_onoff==TRUE)
{
if (p->dram_type==TYPE_LPDDR5)
pVref_Voltage_Table[VREF_RANGE_0] = (U16 *)gRXVref_Voltage_Table_0P5V_T;
else
pVref_Voltage_Table[VREF_RANGE_0] = (U16 *)gRXVref_Voltage_Table_0P6V_T;
}
- else //un-tern
+ else
{
if (p->dram_type==TYPE_LPDDR5)
pVref_Voltage_Table[VREF_RANGE_0] = (U16 *)gRXVref_Voltage_Table_0P5V_UT;
@@ -1258,7 +1140,7 @@ static void print_EyeScanVcent_for_HQA_report_used(DRAMC_CTX_T *p, U8 print_type
{
if (u1CBTEyeScanEnable || u1TXEyeScanEnable)
{
- vddq = vGetVoltage(p, 2) / 1000; //mv
+ vddq = vGetVoltage(p, 2) / 1000;
if (p->dram_type == TYPE_LPDDR4)
{
@@ -1354,7 +1236,7 @@ static void print_EyeScanVcent_for_HQA_report_used(DRAMC_CTX_T *p, U8 print_type
{
if ((Vcent_UpperBound_Window_percent < 30) || (Vcent_LowerBound_Window_percent < 30))
{
- gHQALog_SLT_BIN[vGet_Current_SRAMIdx(p)] = 4; //SLT_BIN4
+ gHQALog_SLT_BIN[vGet_Current_SRAMIdx(p)] = 4;
}
}
#endif
@@ -1373,8 +1255,8 @@ static void print_EyeScanVcent_for_HQA_report_used(DRAMC_CTX_T *p, U8 print_type
Perbit_Window_Upperbond_percent = ((gEyeScan_WinSize[EyeScanVcent[3] / EYESCAN_GRAPH_RX_VREF_STEP][u1BitIdx] * gHQALOG_RX_delay_cell_ps_075V * DDRPhyGetRealFreq(p) * 2) + (1000000 - 1)) / 1000000;
Perbit_Window_Lowerbond_percent = ((gEyeScan_WinSize[EyeScanVcent[5] / EYESCAN_GRAPH_RX_VREF_STEP][u1BitIdx] * gHQALOG_RX_delay_cell_ps_075V * DDRPhyGetRealFreq(p) * 2) + (1000000 - 1)) / 1000000;
- Perbit_Eye_Height = (pVref_Voltage_Table[VREF_RANGE_0][((gEyeScan_ContinueVrefHeight[u1BitIdx] >> 8) & 0xff)] - pVref_Voltage_Table[VREF_RANGE_0][(gEyeScan_ContinueVrefHeight[u1BitIdx] & 0xff)]) / 100; //RX vref height last - first
- Perbit_Eye_Area = gEyeScan_TotalPassCount[u1BitIdx] * gHQALOG_RX_delay_cell_ps_075V * (((pVref_Voltage_Table[VREF_RANGE_0][((gEyeScan_ContinueVrefHeight[u1BitIdx] >> 8) & 0xff)] - pVref_Voltage_Table[VREF_RANGE_0][(gEyeScan_ContinueVrefHeight[u1BitIdx] & 0xff)])) / ((((gEyeScan_ContinueVrefHeight[u1BitIdx] >> 8) & 0xff) - (gEyeScan_ContinueVrefHeight[u1BitIdx] & 0xff)) * 10)) / 1000; //total count*jitter metter delay cell*(1/freq*10^6 ps)*(1330mv)
+ Perbit_Eye_Height = (pVref_Voltage_Table[VREF_RANGE_0][((gEyeScan_ContinueVrefHeight[u1BitIdx] >> 8) & 0xff)] - pVref_Voltage_Table[VREF_RANGE_0][(gEyeScan_ContinueVrefHeight[u1BitIdx] & 0xff)]) / 100;
+ Perbit_Eye_Area = gEyeScan_TotalPassCount[u1BitIdx] * gHQALOG_RX_delay_cell_ps_075V * (((pVref_Voltage_Table[VREF_RANGE_0][((gEyeScan_ContinueVrefHeight[u1BitIdx] >> 8) & 0xff)] - pVref_Voltage_Table[VREF_RANGE_0][(gEyeScan_ContinueVrefHeight[u1BitIdx] & 0xff)])) / ((((gEyeScan_ContinueVrefHeight[u1BitIdx] >> 8) & 0xff) - (gEyeScan_ContinueVrefHeight[u1BitIdx] & 0xff)) * 10)) / 1000;
}
else //if (print_type==2)
{
@@ -1383,7 +1265,7 @@ static void print_EyeScanVcent_for_HQA_report_used(DRAMC_CTX_T *p, U8 print_type
Perbit_Window_Upperbond_percent = ((gEyeScan_WinSize[(EyeScanVcent[2] * 30 + EyeScanVcent[3]) / EYESCAN_GRAPH_CATX_VREF_STEP][u1BitIdx]) * 100 + 31) / 32;
Perbit_Window_Lowerbond_percent = ((gEyeScan_WinSize[(EyeScanVcent[4] * 30 + EyeScanVcent[5]) / EYESCAN_GRAPH_CATX_VREF_STEP][u1BitIdx]) * 100 + 31) / 32;
Perbit_Eye_Height = (gEyeScan_ContinueVrefHeight[u1BitIdx] - 1) * 6 * vddq / 1000;
- Perbit_Eye_Area = (gEyeScan_TotalPassCount[u1BitIdx] * 10 * 3 * vddq / (32 * DDRPhyGetRealFreq(p)))*100; //total count*1/32UI*(1/freq*10^6 ps)*(0.6%vddq)
+ Perbit_Eye_Area = (gEyeScan_TotalPassCount[u1BitIdx] * 10 * 3 * vddq / (32 * DDRPhyGetRealFreq(p)))*100;
}
HQA_Log_Message_for_Report(p, p->channel, p->rank, HQA_REPORT_FORMAT0_1, print_EYESCAN_LOG_type(print_type), "_Perbit_Window(%)", u1BitIdx, Perbit_Window_percent, NULL);
@@ -1399,16 +1281,6 @@ static void print_EyeScanVcent_for_HQA_report_used(DRAMC_CTX_T *p, U8 print_type
void HQA_Log_Message_for_Report(DRAMC_CTX_T *p, U8 u1ChannelIdx, U8 u1RankIdx, U32 who_am_I, U8 *main_str, U8 *main_str2, U8 byte_bit_idx, S32 value1, U8 *ans_str)
{
- // HQA_REPORT_FORMAT0 : [HQALOG] 3200 Gating_Center_2T Channel0 Rank0 Byte0 3
- // HQA_REPORT_FORMAT0_1:[HQALOG] 3200 Gating_Center_2T Channel0 Rank0 Bit0 3
- // HQA_REPORT_FORMAT0_2:[HQALOG] 3200 Gating_Center_2T Channel0 Rank0 CA0 3
- // HQA_REPORT_FORMAT1 : [HQALOG] 3200 WriteLeveling_DQS0 Channel0 Rank0 35
- // HQA_REPORT_FORMAT2 : [HQALOG] 3200 TX_Final_Vref Vcent Channel0 Rank0 16860
- // HQA_REPORT_FORMAT2_1:[HQALOG] 3200 RX_Final_Vref Vcent Channel0 Rank0 B0 16860
- // HQA_REPORT_FORMAT3 : [HQALOG] 3200 DUTY CLK_MAX Channel0 5171
- // HQA_REPORT_FORMAT4 : [HQALOG] 3200 TX_Vcent_LowerBound_Window_PF Channel0 Rank0 PASS
- // HQA_REPORT_FORMAT5 : [HQALOG] 3200 AAAAAAAAAAAA BBBBB
- // HQA_REPORT_FORMAT6 : [HQALOG] 3200 AAAAAAAAAAAA 0
if (gHQALog_flag == 1)
{
@@ -1482,14 +1354,14 @@ static void EyeScan_Pic_draw_line(DRAMC_CTX_T *p, U8 draw_type, U8 u1VrefRange,
{
u2DQDelayStep=4;
u2VrefStep=EYESCAN_GRAPH_RX_VREF_STEP;
- if (p->odt_onoff==TRUE) //tern
+ if (p->odt_onoff==TRUE)
{
if (p->dram_type==TYPE_LPDDR5)
pVref_Voltage_Table[VREF_RANGE_0] = (U16 *)gRXVref_Voltage_Table_0P5V_T;
else
pVref_Voltage_Table[VREF_RANGE_0] = (U16 *)gRXVref_Voltage_Table_0P6V_T;
}
- else //un-tern
+ else
{
if (p->dram_type==TYPE_LPDDR5)
pVref_Voltage_Table[VREF_RANGE_0] = (U16 *)gRXVref_Voltage_Table_0P5V_UT;
@@ -1504,7 +1376,7 @@ static void EyeScan_Pic_draw_line(DRAMC_CTX_T *p, U8 draw_type, U8 u1VrefRange,
FinalDQCaliDelay = (U16)EyeScan_DelayCellPI_value;
EyeScan_DelayCellPI_value = 0;
- //pass region = 20%UI, = +-10$UI, 1UI=1/freq*10^6, 10%UI=((1/freq*10^6)/10)/delay cell
+
pass_region_h_value = PI_of_1_UI/10;
delay_cell_ps = p->u2DelayCellTimex100;
@@ -1519,7 +1391,7 @@ static void EyeScan_Pic_draw_line(DRAMC_CTX_T *p, U8 draw_type, U8 u1VrefRange,
{
u2VrefStep = EYESCAN_GRAPH_CATX_VREF_STEP;
- //pass region = 20%UI, = +- 10%UI, 1UI=32PI, 10%UI=3PI
+
pass_region_h_value = 3;
if (p->dram_type == TYPE_LPDDR4)
@@ -1695,7 +1567,7 @@ static void EyeScan_Pic_draw_line(DRAMC_CTX_T *p, U8 draw_type, U8 u1VrefRange,
#endif
{
#if !VENDER_JV_LOG && !defined(RELEASE)
- if ((i>=(FinalDQCaliDelay+EyeScan_DelayCellPI_value-(u2DQDelayStep/2)))&&(i<=(FinalDQCaliDelay+EyeScan_DelayCellPI_value+(u2DQDelayStep/2)))) //Final DQ delay
+ if ((i>=(FinalDQCaliDelay+EyeScan_DelayCellPI_value-(u2DQDelayStep/2)))&&(i<=(FinalDQCaliDelay+EyeScan_DelayCellPI_value+(u2DQDelayStep/2))))
{
if (gEye_Scan_color_flag)
{
@@ -1707,7 +1579,7 @@ static void EyeScan_Pic_draw_line(DRAMC_CTX_T *p, U8 draw_type, U8 u1VrefRange,
}
}
else
- if ((local_VrefIdx >= local_Final_VrefIdx-(u2VrefStep/2))&&(local_VrefIdx <= local_Final_VrefIdx+(u2VrefStep/2))) //Final Vref
+ if ((local_VrefIdx >= local_Final_VrefIdx-(u2VrefStep/2))&&(local_VrefIdx <= local_Final_VrefIdx+(u2VrefStep/2)))
{
if (gEye_Scan_color_flag)
{
@@ -1718,7 +1590,7 @@ static void EyeScan_Pic_draw_line(DRAMC_CTX_T *p, U8 draw_type, U8 u1VrefRange,
mcSHOW_EYESCAN_MSG(("V"));
}
}
- else //spec in margin
+ else
if (local_VrefIdx <= local_Upper_Vcent && local_VrefIdx >= local_Lower_Vcent && i >= (FinalDQCaliDelay + EyeScan_DelayCellPI_value - pass_region_h_value) && i <= (FinalDQCaliDelay + EyeScan_DelayCellPI_value + pass_region_h_value))
{
if (gEye_Scan_color_flag)
@@ -1730,7 +1602,7 @@ static void EyeScan_Pic_draw_line(DRAMC_CTX_T *p, U8 draw_type, U8 u1VrefRange,
mcSHOW_EYESCAN_MSG(("Q"));
}
}
- else //pass margin
+ else
#endif
{
#if VENDER_JV_LOG || defined(RELEASE)
@@ -1787,7 +1659,7 @@ static void EyeScan_Pic_draw_line(DRAMC_CTX_T *p, U8 draw_type, U8 u1VrefRange,
#endif
#endif
{
- //not valid
+
#if VENDER_JV_LOG || defined(RELEASE)
if (gEye_Scan_color_flag)
{
@@ -1866,7 +1738,7 @@ static void EyeScan_Pic_draw_line(DRAMC_CTX_T *p, U8 draw_type, U8 u1VrefRange,
mcSHOW_EYESCAN_MSG((" --- "));
}
#endif
- //window
+
#if VENDER_JV_LOG || defined(RELEASE)
mcSHOW_EYESCAN_MSG(("%dps", Final_EyeScan_winsize * delay_cell_ps / 100));
#else
@@ -1898,7 +1770,7 @@ static void EyeScan_Pic_draw_line(DRAMC_CTX_T *p, U8 draw_type, U8 u1VrefRange,
mcSHOW_EYESCAN_MSG((" --- "));
}
#endif
- //window
+
#if VENDER_JV_LOG || defined(RELEASE)
mcSHOW_EYESCAN_MSG(("%dps", Final_EyeScan_winsize * delay_cell_ps / 100));
#else
@@ -1953,14 +1825,14 @@ void print_EYESCAN_LOG_message(DRAMC_CTX_T *p, U8 print_type)
{
u2VrefStep = EYESCAN_GRAPH_RX_VREF_STEP;
- if (p->odt_onoff==TRUE) //tern
+ if (p->odt_onoff==TRUE)
{
if (p->dram_type==TYPE_LPDDR5)
pVref_Voltage_Table[VREF_RANGE_0] = (U16 *)gRXVref_Voltage_Table_0P5V_T;
else
pVref_Voltage_Table[VREF_RANGE_0] = (U16 *)gRXVref_Voltage_Table_0P6V_T;
}
- else //un-tern
+ else
{
if (p->dram_type==TYPE_LPDDR5)
pVref_Voltage_Table[VREF_RANGE_0] = (U16 *)gRXVref_Voltage_Table_0P5V_UT;
@@ -1992,30 +1864,27 @@ void print_EYESCAN_LOG_message(DRAMC_CTX_T *p, U8 print_type)
u1RXEyeScanEnable = GetEyeScanEnable(p, EYESCAN_TYPE_RX);
u1TXEyeScanEnable = GetEyeScanEnable(p, EYESCAN_TYPE_TX);
-#if 0 //fra test
+#if 0
u1CBTEyeScanEnable = u1CBTEyeScanEnable & (p->channel == 0 && p->rank == 0);
#endif
-/**************************************************************************************
- CBT/RX/TX EYESCAN log
-***************************************************************************************/
if (print_type == EYESCAN_TYPE_CBT)
{
- if (p->frequency <= 934) VdlVWTotal = 17500; //VcIVW 175mv
- else if (p->frequency <= 1600) VdlVWTotal = 15500; //VcIVW 155mv
- else VdlVWTotal = 14500; //VcIVW 145mv
+ if (p->frequency <= 934) VdlVWTotal = 17500;
+ else if (p->frequency <= 1600) VdlVWTotal = 15500;
+ else VdlVWTotal = 14500;
}
else
{
#if 0
- if (p->frequency <= 1600) VdlVWTotal = 10000; //14000; //140mv
- else VdlVWTotal = 10000; //12000; //120mv
+ if (p->frequency <= 1600) VdlVWTotal = 10000;
+ else VdlVWTotal = 10000;
#else
VdlVWTotal = 10000;
#endif
}
- if (p->dram_type!=TYPE_LPDDR5)//LP5 no range
+ if (p->dram_type!=TYPE_LPDDR5)
{
CBTVrefRange = (u1MR12Value[p->channel][p->rank][p->dram_fsp] >> 6) & 1;
TXVrefRange = (u1MR14Value[p->channel][p->rank][p->dram_fsp] >> 6) & 1;
@@ -2033,7 +1902,7 @@ for (u1ByteIdx = u1ByteIdx_Begin; u1ByteIdx <= u1ByteIdx_End; u1ByteIdx++)
#if 1 //#if !VENDER_JV_LOG && !defined(RELEASE)
if ((print_type == EYESCAN_TYPE_CBT && u1CBTEyeScanEnable) || (print_type == EYESCAN_TYPE_RX && u1RXEyeScanEnable) || (print_type == EYESCAN_TYPE_TX && u1TXEyeScanEnable))
{
- vddq = vGetVoltage(p, 2) / 1000; //mv
+ vddq = vGetVoltage(p, 2) / 1000;
EYESCAN_LOG_Print_Prefix_String(); mcSHOW_DBG_MSG(("VDDQ=%dmV\n", vddq));
if (print_type == EYESCAN_TYPE_CBT)
@@ -2054,7 +1923,7 @@ for (u1ByteIdx = u1ByteIdx_Begin; u1ByteIdx <= u1ByteIdx_End; u1ByteIdx++)
finalVrefRange = 0;
finalVref = gFinalRXVrefDQ[u1ChannelIdx][u1RankIdx][u1ByteIdx];
- cal_length = DQS_BIT_NUMBER; //p->data_width;
+ cal_length = DQS_BIT_NUMBER;
}
else//if (print_type==2)
{
@@ -2095,7 +1964,7 @@ for (u1ByteIdx = u1ByteIdx_Begin; u1ByteIdx <= u1ByteIdx_End; u1ByteIdx++)
}
- //find VdlVWHigh first
+
if (print_type == EYESCAN_TYPE_RX)
{
VdlVWHigh_Upper_Vcent_Range = 0;
@@ -2126,7 +1995,7 @@ for (u1ByteIdx = u1ByteIdx_Begin; u1ByteIdx <= u1ByteIdx_End; u1ByteIdx++)
{
if (pVref_Voltage_Table[vrefrange_i][i] - Vcent_DQ >= VdlVWTotal / 2)
{
- /* find VdlVWHigh upper bound */
+
VdlVWHigh_Upper_Vcent = i;
break;
}
@@ -2135,7 +2004,7 @@ for (u1ByteIdx = u1ByteIdx_Begin; u1ByteIdx <= u1ByteIdx_End; u1ByteIdx++)
{
if (((pVref_Voltage_Table[vrefrange_i][i] * vddq / 100 - Vcent_DQ)) >= VdlVWTotal / 2)
{
- /* find VdlVWHigh upper bound */
+
VdlVWHigh_Upper_Vcent = i;
VdlVWHigh_Upper_Vcent_Range = vrefrange_i;
break;
@@ -2165,7 +2034,7 @@ for (u1ByteIdx = u1ByteIdx_Begin; u1ByteIdx <= u1ByteIdx_End; u1ByteIdx++)
}
- //find VldVWLow first
+
VdlVWHigh_Lower_Vcent_Range = 0;
VdlVWHigh_Lower_Vcent = 0;
vrefrange_i = finalVrefRange;
@@ -2175,7 +2044,7 @@ for (u1ByteIdx = u1ByteIdx_Begin; u1ByteIdx <= u1ByteIdx_End; u1ByteIdx++)
{
if (Vcent_DQ - pVref_Voltage_Table[vrefrange_i][i] >= VdlVWTotal / 2)
{
- /* find VdlVWHigh lower bound */
+
VdlVWHigh_Lower_Vcent = i;
break;
}
@@ -2184,7 +2053,7 @@ for (u1ByteIdx = u1ByteIdx_Begin; u1ByteIdx <= u1ByteIdx_End; u1ByteIdx++)
{
if (((Vcent_DQ - pVref_Voltage_Table[vrefrange_i][i] * vddq / 100)) >= VdlVWTotal / 2)
{
- /* find VdlVWHigh lower bound */
+
VdlVWHigh_Lower_Vcent = i;
VdlVWHigh_Lower_Vcent_Range = vrefrange_i;
break;
@@ -2238,7 +2107,7 @@ for (u1ByteIdx = u1ByteIdx_Begin; u1ByteIdx <= u1ByteIdx_End; u1ByteIdx++)
{
if (print_type != EYESCAN_TYPE_RX)
{
- // compare Upper/Lower Vcent pass criterion is pass or fail?
+
for (u1VrefIdx = finalVref + finalVrefRange * 30; u1VrefIdx <= (S8)(VdlVWHigh_Upper_Vcent + VdlVWHigh_Upper_Vcent_Range * 30); u1VrefIdx += u2VrefStep)
{
Upper_Vcent_pass_flag = 0;
@@ -2251,7 +2120,7 @@ for (u1ByteIdx = u1ByteIdx_Begin; u1ByteIdx <= u1ByteIdx_End; u1ByteIdx++)
Upper_Vcent_pass_flag = 1;
}
}
- if (Upper_Vcent_pass_flag == 0) break; // fail!!
+ if (Upper_Vcent_pass_flag == 0) break;
}
for (u1VrefIdx = VdlVWHigh_Lower_Vcent + VdlVWHigh_Lower_Vcent_Range * 30; u1VrefIdx <= (S8)(finalVref + finalVrefRange * 30); u1VrefIdx += u2VrefStep)
{
@@ -2265,12 +2134,12 @@ for (u1ByteIdx = u1ByteIdx_Begin; u1ByteIdx <= u1ByteIdx_End; u1ByteIdx++)
Lower_Vcent_pass_flag = 1;
}
}
- if (Lower_Vcent_pass_flag == 0) break; //fail!!
+ if (Lower_Vcent_pass_flag == 0) break;
}
}
#ifdef FOR_HQA_TEST_USED
- //find VdlVWBest Vref Range and Vref
+
VdlVWBest_Vcent_Range = 1;
VdlVWBest_Vcent = VREF_VOLTAGE_TABLE_NUM_LP4- 1;
if (print_type == EYESCAN_TYPE_RX||(print_type != EYESCAN_TYPE_RX&&p->dram_type==TYPE_LPDDR5)) vrefrange_i = 0;
@@ -2481,7 +2350,7 @@ void vPrintPinInfoResult(DRAMC_CTX_T *p)
mcSHOW_DBG_MSG3(("\n\n[Pin Info Summary] Freqency %d\n", p->frequency));
- for (u1FreqRegionIdx=0;u1FreqRegionIdx<2/*IMP_VREF_MAX*/;u1FreqRegionIdx++)
+ for (u1FreqRegionIdx=0;u1FreqRegionIdx<2;u1FreqRegionIdx++)
{
for (u1ImpIdx=0;u1ImpIdx<IMP_DRV_MAX;u1ImpIdx++)
{
@@ -2498,10 +2367,10 @@ void vPrintPinInfoResult(DRAMC_CTX_T *p)
{
mcSHOW_DBG_MSG3(("CH %d, Rank %d\n", u1CHIdx, u1RankIdx));
- //CA pin check
+
for (u1CAIdx =0; u1CAIdx <CATRAINING_NUM_LP4; u1CAIdx++)
{
- #if 1//Transfer to Percentage
+ #if 1
PINInfo_flashtool.CA_WIN_SIZE[u1CHIdx][u1RankIdx][u1CAIdx]= (PINInfo_flashtool.CA_WIN_SIZE[u1CHIdx][u1RankIdx][u1CAIdx]* 100 + 63) /64;
if ((PINInfo_flashtool.CA_WIN_SIZE[u1CHIdx][u1RankIdx][u1CAIdx]==0)||(PINInfo_flashtool.CA_WIN_SIZE[u1CHIdx][u1RankIdx][u1CAIdx]<=PERCENTAGE_THRESHOLD))
#else
@@ -2519,15 +2388,15 @@ void vPrintPinInfoResult(DRAMC_CTX_T *p)
}
- //DQ pin check
+
for (u1BitIdx =0; u1BitIdx <DQ_DATA_WIDTH; u1BitIdx++)
{
u1ByteIdx = (u1BitIdx>=8?1:0);
u1BitIdx_DQ = uiLPDDR4_O1_Mapping_POP[p->channel][u1BitIdx];
u1ByteIdx_DQ = (u1BitIdx_DQ>=8?1:0);
- //RX
- #if 1//Transfer to Percentage
+
+ #if 1
PINInfo_flashtool.DQ_RX_WIN_SIZE[u1CHIdx][u1RankIdx][u1BitIdx] = ((PINInfo_flashtool.DQ_RX_WIN_SIZE[u1CHIdx][u1RankIdx][u1BitIdx]* gHQALOG_RX_delay_cell_ps_075V * DDRPhyGetRealFreq(p)* 2)+ (1000000 - 1)) / 1000000;
if (PINInfo_flashtool.DQ_RX_WIN_SIZE[u1CHIdx][u1RankIdx][u1BitIdx]<=PERCENTAGE_THRESHOLD)
#else
@@ -2540,8 +2409,8 @@ void vPrintPinInfoResult(DRAMC_CTX_T *p)
PINInfo_flashtool.TOTAL_ERR |= (0x1<<(u1CHIdx*4+u1RankIdx*2+1));
}
- //TX
- #if 1//Transfer to Percentage
+
+ #if 1
PINInfo_flashtool.DQ_TX_WIN_SIZE[u1CHIdx][u1RankIdx][u1BitIdx] = (PINInfo_flashtool.DQ_TX_WIN_SIZE[u1CHIdx][u1RankIdx][u1BitIdx]* 100+ (vGet_DDR_Loop_Mode(p) == DDR800_CLOSE_LOOP? 63: 31)) / (vGet_DDR_Loop_Mode(p) == DDR800_CLOSE_LOOP? 64: 32);
if (PINInfo_flashtool.DQ_TX_WIN_SIZE[u1CHIdx][u1RankIdx][u1BitIdx]<=PERCENTAGE_THRESHOLD)
#else
@@ -2577,16 +2446,16 @@ void vGetErrorTypeResult(DRAMC_CTX_T *p)
{
U8 u1CHIdx, u1CHIdx_EMI, u1RankIdx, u1CAIdx, u1ByteIdx, u1BitIdx, u1FreqRegionIdx, u1ImpIdx;
- //pErrorTypeInfo = "ERROR TYPE TEST";
+
mcSHOW_DBG_MSG3(("\n[Get Pin Error Type Result]\n"));
- if (PINInfo_flashtool.TOTAL_ERR==0 && PINInfo_flashtool.IMP_ERR_FLAG==0)//ALL PASS
+ if (PINInfo_flashtool.TOTAL_ERR==0 && PINInfo_flashtool.IMP_ERR_FLAG==0)
{
mcSHOW_DBG_MSG3(("ALL PASS\n"));
}
- //TYPE 1: Impedance calibration fail
+
if (PINInfo_flashtool.IMP_ERR_FLAG)
{
mcSHOW_DBG_MSG3(("[CHECK RESULT] FAIL: Impedance calibration fail\n"));
@@ -2594,7 +2463,7 @@ void vGetErrorTypeResult(DRAMC_CTX_T *p)
mcSHOW_DBG_MSG3(("Suspect EXTR related resistor contact issue\n"));
}
- //TYPE 2: ALL CH ALL Cal FAIL
+
if ((PINInfo_flashtool.TOTAL_ERR == 0xffff) && (PINInfo_flashtool.WL_ERR_FLAG== 0xff))
{
mcSHOW_DBG_MSG3(("[CHECK RESULT] FAIL: ALL calibration fail\n"));
@@ -2611,12 +2480,12 @@ void vGetErrorTypeResult(DRAMC_CTX_T *p)
u1CHIdx_EMI = CHANNEL_C;
else if(u1CHIdx == CHANNEL_C)
u1CHIdx_EMI = CHANNEL_B;
- else //CHANNEL_A,CHANNEL_D
+ else
}
#endif
u1CHIdx_EMI = u1CHIdx;
- //TYPE 3: ONE CH ALL RK ALL Cal FAIL
+
if ((PINInfo_flashtool.TOTAL_ERR>>(u1CHIdx*4) & 0xf) == 0xf)
{
mcSHOW_DBG_MSG3(("[CHECK RESULT] FAIL: CH%d all calibration fail\n",u1CHIdx));
@@ -2631,7 +2500,7 @@ void vGetErrorTypeResult(DRAMC_CTX_T *p)
{
for(u1RankIdx = 0; u1RankIdx < p->support_rank_num; u1RankIdx++)
{
- //TYPE 4: ONE CH ONE RK ALL Cal FAIL
+
if ((((PINInfo_flashtool.TOTAL_ERR>>(u1CHIdx*4+u1RankIdx*2)) & 0x3)==0x3) && \
(PINInfo_flashtool.DRAM_PIN_RX_ERR_FLAG[u1CHIdx][u1RankIdx][BYTE_0] == 0xff) && \
(PINInfo_flashtool.DRAM_PIN_RX_ERR_FLAG[u1CHIdx][u1RankIdx][BYTE_1] == 0xff)&& \
@@ -2646,7 +2515,7 @@ void vGetErrorTypeResult(DRAMC_CTX_T *p)
{
for (u1ByteIdx = 0; u1ByteIdx < DQS_BYTE_NUMBER; u1ByteIdx++)
{
- //TYPE 5: ONE CH ONE RK ONE Byte FAIL
+
if((PINInfo_flashtool.DRAM_PIN_RX_ERR_FLAG[u1CHIdx][u1RankIdx][u1ByteIdx] == 0xff) &&\
(PINInfo_flashtool.DRAM_PIN_TX_ERR_FLAG[u1CHIdx][u1RankIdx][u1ByteIdx] == 0xff))
{
@@ -2654,7 +2523,7 @@ void vGetErrorTypeResult(DRAMC_CTX_T *p)
mcSHOW_DBG_MSG3(("Suspect EMI%d_DQS%d_T contact issue\n",u1CHIdx_EMI,u1ByteIdx));
mcSHOW_DBG_MSG3(("Suspect EMI%d_DQS%d_C contact issue\n",u1CHIdx_EMI,u1ByteIdx));
}
- //TYPE 6: ONE CH ONE RK ONE Bit FAIL
+
else if (PINInfo_flashtool.DRAM_PIN_RX_ERR_FLAG[u1CHIdx][u1RankIdx][u1ByteIdx]&&\
PINInfo_flashtool.DRAM_PIN_TX_ERR_FLAG[u1CHIdx][u1RankIdx][u1ByteIdx])
{
@@ -2668,7 +2537,7 @@ void vGetErrorTypeResult(DRAMC_CTX_T *p)
}
}
}
- //TYPE 7: ONE CH ONE RK ONE Byte FAIL(only RX or TX) -->OTHERS
+
else if((PINInfo_flashtool.DRAM_PIN_RX_ERR_FLAG[u1CHIdx][u1RankIdx][u1ByteIdx] == 0xff) ||\
(PINInfo_flashtool.DRAM_PIN_TX_ERR_FLAG[u1CHIdx][u1RankIdx][u1ByteIdx] == 0xff))
{
@@ -2716,9 +2585,9 @@ void DramcGatingDebugInit(DRAMC_CTX_T *p)
}
vSetPHY2ChannelMapping(p, backup_channel);
- //Disable MR4 MR18/MR19, TxHWTracking, Dummy RD before reset
- vIO32WriteFldAlign_All(DRAMC_REG_SPCMDCTRL, 0x1, SPCMDCTRL_REFRDIS); //MR4 Disable
- vIO32WriteFldAlign_All(DRAMC_REG_DQSOSCR, 0x1, DQSOSCR_DQSOSCRDIS); //MR18, MR19 Disable
+
+ vIO32WriteFldAlign_All(DRAMC_REG_SPCMDCTRL, 0x1, SPCMDCTRL_REFRDIS);
+ vIO32WriteFldAlign_All(DRAMC_REG_DQSOSCR, 0x1, DQSOSCR_DQSOSCRDIS);
for (shu_index = SRAM_SHU0; shu_index < DRAM_DFS_SRAM_MAX; shu_index++)
vIO32WriteFldAlign_All(DRAMC_REG_SHU_SCINTV + SHU_GRP_DRAMC_OFFSET * shu_index, 0x1, SHU_SCINTV_DQSOSCENDIS);
vIO32WriteFldMulti_All(DRAMC_REG_DUMMY_RD, P_Fld(0x0, DUMMY_RD_DUMMY_RD_EN)
@@ -2729,7 +2598,7 @@ void DramcGatingDebugInit(DRAMC_CTX_T *p)
DramPhyReset(p);
- //Restore backup regs
+
for (channel_idx = CHANNEL_A; channel_idx < p->support_channel_num; channel_idx++)
{
vSetPHY2ChannelMapping(p, channel_idx);
@@ -2742,19 +2611,19 @@ void DramcGatingDebugInit(DRAMC_CTX_T *p)
vSetPHY2ChannelMapping(p, backup_channel);
- //enable &reset DQS counter
+
vIO32WriteFldAlign_All(DRAMC_REG_ADDR(DRAMC_REG_SPCMD), 1, SPCMD_DQSGCNTEN);
- mcDELAY_US(4);//wait 1 auto refresh after DQS Counter enable
+ mcDELAY_US(4);
vIO32WriteFldAlign_All(DRAMC_REG_ADDR(DRAMC_REG_SPCMD), 1, SPCMD_DQSGCNTRST);
- mcDELAY_US(1);//delay 2T
+ mcDELAY_US(1);
vIO32WriteFldAlign_All(DRAMC_REG_ADDR(DRAMC_REG_SPCMD), 0, SPCMD_DQSGCNTRST);
//mcSHOW_DBG_MSG(("DramcGatingDebugInit done\n" ));
}
void DramcGatingDebugExit(DRAMC_CTX_T *p)
{
- //enable &reset DQS counter
+
vIO32WriteFldAlign_All(DRAMC_REG_ADDR(DRAMC_REG_SPCMD), 0, SPCMD_DQSGCNTEN);
vIO32WriteFldAlign_All(DDRPHY_MISC_CTRL1, 0, MISC_CTRL1_R_DMSTBENCMP_RK_OPT);
}
@@ -2779,14 +2648,14 @@ static void DramcGatingDebug(DRAMC_CTX_T *p, U8 u1Channel)
u4all_result_R = LP3_DataPerByte[0] | (LP3_DataPerByte[2] << 8);
- // falling
+
LP3_DataPerByte[0] = (u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_MISC_STBERR_RK0_F), MISC_STBERR_RK0_F_STBERR_RK0_F));
LP3_DataPerByte[2] = (LP3_DataPerByte[0] >> 8) & 0xff;
LP3_DataPerByte[0] &= 0xff;
u4all_result_F = LP3_DataPerByte[0] | (LP3_DataPerByte[2] << 8);
- //read DQS counter
+
u4DebugCnt[0] = u4IO32Read4B(DRAMC_REG_ADDR(DRAMC_REG_DQSGNWCNT0));
u4DebugCnt[1] = (u4DebugCnt[0] >> 16) & 0xffff;
u4DebugCnt[0] &= 0xffff;
@@ -2804,14 +2673,14 @@ static void DramcGatingDebug(DRAMC_CTX_T *p, U8 u1Channel)
if (p->support_rank_num == RANK_DUAL)
{
- LP3_DataPerByte[0] = (u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_MISC_STBERR_RK1_R), MISC_STBERR_RK1_R_STBERR_RK1_R));//PHY_B
+ LP3_DataPerByte[0] = (u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_MISC_STBERR_RK1_R), MISC_STBERR_RK1_R_STBERR_RK1_R));
LP3_DataPerByte[2] = (LP3_DataPerByte[0] >> 8) & 0xff;
LP3_DataPerByte[0] &= 0xff;
u4all_result_R = LP3_DataPerByte[0] | (LP3_DataPerByte[2] << 8);
- // falling
- LP3_DataPerByte[0] = (u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_MISC_STBERR_RK1_F), MISC_STBERR_RK1_F_STBERR_RK1_F));//PHY_B
+
+ LP3_DataPerByte[0] = (u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_MISC_STBERR_RK1_F), MISC_STBERR_RK1_F_STBERR_RK1_F));
LP3_DataPerByte[2] = (LP3_DataPerByte[0] >> 8) & 0xff;
LP3_DataPerByte[0] &= 0xff;
@@ -2841,7 +2710,7 @@ static void DramcGatingDebug(DRAMC_CTX_T *p, U8 u1Channel)
void DramcDumpDebugInfo(DRAMC_CTX_T *p)
{
-U8 u1RefreshRate; //mpdivInSel, cali_shu_sel, mpdiv_shu_sel
+U8 u1RefreshRate;
DRAM_CHANNEL_T channelIdx;
@@ -2886,13 +2755,13 @@ DRAM_CHANNEL_T channelIdx;
cali_shu_sel = u4IO32ReadFldAlign(DRAMC_REG_SHUCTRL, SHUCTRL_R_OTHER_SHU_GP);
mpdiv_shu_sel = u4IO32ReadFldAlign(DRAMC_REG_SHUCTRL, SHUCTRL_R_MPDIV_SHU_GP);
- // Read shuffle selection
+
mcSHOW_DBG_MSG2(("\n\n[DumpDebugInfo]\n"
"\tmpdivInSel %d, cali_shu_sel %d, mpdiv_shu_sel %d\n",
mpdivInSel, cali_shu_sel, mpdiv_shu_sel));
#if GATING_ONLY_FOR_DEBUG
- // Read gating error flag
+
//DramcGatingDebugInit(p);
for (channelIdx = CHANNEL_A; channelIdx < p->support_channel_num; channelIdx++)
{
@@ -2901,7 +2770,7 @@ DRAM_CHANNEL_T channelIdx;
#endif
#if (FOR_DV_SIMULATION_USED == 0 && SW_CHANGE_FOR_SIMULATION == 0)
- // Read HW gating tracking
+
#ifdef HW_GATING
for (channelIdx = CHANNEL_A; channelIdx < p->support_channel_num; channelIdx++)
{
@@ -2955,10 +2824,10 @@ static void DramcRegDumpRange(DRAMC_CTX_T *p, U32 u4StartAddr, U32 u4EndAddr)
for (ii = u4StartAddr; ii <= u4EndAddr; ii += 4)
{
mcSHOW_DBG_MSG(("Reg(0x%xh) Address 0x%X = 0x%X\n", (ii & 0xfff) >> 2, ii, u4Dram_Register_Read(p, DRAMC_REG_ADDR(ii))));
- mcDELAY_US(20000); //Large delay to prevent UART overflow
+ mcDELAY_US(20000);
}
}
- #if 0//(fcFOR_CHIP_ID == fcLafite)
+ #if 0
#define DRAMC_NAO_DUMP_RANGE (DRAMC_REG_RK2_B23_STB_DBG_INFO_15 - DRAMC_NAO_BASE_ADDRESS)
#define DDRPHY_NAO_DUMP_RANGE (DDRPHY_MISC_MBIST_STATUS2 - DDRPHY_NAO_BASE_ADDR)
#define DRAMC_AO_NONSHU_DUMP_RANGE (DRAMC_REG_RK1_PRE_TDQSCK27 - DRAMC_AO_BASE_ADDRESS)
@@ -3104,7 +2973,7 @@ void DumpAllChAllShuAllRkRG(DRAMC_CTX_T *p)
}
static void DumpShuRG(DRAMC_CTX_T *p)
{
- DRAM_DFS_FREQUENCY_TABLE_T *pFreqTable = p->pDFSTable; // from dramc conf shu0
+ DRAM_DFS_FREQUENCY_TABLE_T *pFreqTable = p->pDFSTable;
U8 u1ShuffleIdx;
U32 u4DramcShuOffset = 0;
U32 u4DDRPhyShuOffset = 0;
@@ -3124,24 +2993,24 @@ static void DumpShuRG(DRAMC_CTX_T *p)
#endif
};
DramcBackupRegisters(p, u4RegBackupAddress, sizeof(u4RegBackupAddress) / sizeof(U32));
- vIO32WriteFldAlign_All(DDRPHY_REG_MISC_SRAM_DMA0, 0x0, MISC_SRAM_DMA0_APB_SLV_SEL);//before setting
+ vIO32WriteFldAlign_All(DDRPHY_REG_MISC_SRAM_DMA0, 0x0, MISC_SRAM_DMA0_APB_SLV_SEL);
vIO32WriteFldAlign_All(DDRPHY_REG_MISC_SRAM_DMA1, 0x1, MISC_SRAM_DMA1_R_APB_DMA_DBG_ACCESS);
DumpAllRkRG(p,NONSHUFFLE_RG);
- for (u1ShuffleIdx = 0; u1ShuffleIdx <= DRAM_DFS_SRAM_MAX; u1ShuffleIdx++) //fill SHU1 of conf while (u1ShuffleIdx==DRAM_DFS_SRAM_MAX)
+ for (u1ShuffleIdx = 0; u1ShuffleIdx <= DRAM_DFS_SRAM_MAX; u1ShuffleIdx++)
{
if (u1ShuffleIdx == DRAM_DFS_SRAM_MAX)
{
- vSetDFSTable(p, pFreqTable);//Restore DFS table
+ vSetDFSTable(p, pFreqTable);
u4DramcShuOffset = 0;
u4DDRPhyShuOffset = 0;
DramcRestoreRegisters(p, u4RegBackupAddress, sizeof(u4RegBackupAddress) / sizeof(U32));
}
else
{
- vSetDFSTable(p, get_FreqTbl_by_SRAMIndex(p, u1ShuffleIdx));//Update DFS table
- vIO32WriteFldAlign_All(DDRPHY_REG_MISC_SRAM_DMA0, 0x0, MISC_SRAM_DMA0_APB_SLV_SEL);//before setting
+ vSetDFSTable(p, get_FreqTbl_by_SRAMIndex(p, u1ShuffleIdx));
+ vIO32WriteFldAlign_All(DDRPHY_REG_MISC_SRAM_DMA0, 0x0, MISC_SRAM_DMA0_APB_SLV_SEL);
vIO32WriteFldAlign_All(DDRPHY_REG_MISC_SRAM_DMA1, u1ShuffleIdx, MISC_SRAM_DMA1_R_APB_DMA_DBG_LEVEL);
- vIO32WriteFldAlign_All(DDRPHY_REG_MISC_SRAM_DMA0, 0x1, MISC_SRAM_DMA0_APB_SLV_SEL);//Trigger DEBUG MODE
+ vIO32WriteFldAlign_All(DDRPHY_REG_MISC_SRAM_DMA0, 0x1, MISC_SRAM_DMA0_APB_SLV_SEL);
p->ShuRGAccessIdx = DRAM_DFS_REG_SHU1;
DumpAllRkRG(p,SHUFFLE_RG);
p->ShuRGAccessIdx = DRAM_DFS_REG_SHU0;
@@ -3197,8 +3066,8 @@ void DramcModeReg_Check(DRAMC_CTX_T *p)
{
U8 backup_channel, backup_rank;
U8 u1ChannelIdx, u1RankIdx;
- U8 u1MRFsp; //operating_fsp = p->dram_fsp
- U8 ii, u1MR[] = {5, 12, 14, 4, 18, 19}; //MR5, MR12, MR14, MR18, MR19
+ U8 u1MRFsp;
+ U8 ii, u1MR[] = {5, 12, 14, 4, 18, 19};
U16 u2MRValue = 0, u2Value = 0;
U8 u1match = 0;
U8 backup_u1MR13Value[RANK_MAX] = {0};
@@ -3257,9 +3126,9 @@ void DramcModeReg_Check(DRAMC_CTX_T *p)
#endif
if (u1MRFsp == FSP_1)
- u1MR13Value[u1RankIdx] |= 0x40; //Read/Write FSP
+ u1MR13Value[u1RankIdx] |= 0x40;
else
- u1MR13Value[u1RankIdx] &= (~0x40); //Read/Write FSP
+ u1MR13Value[u1RankIdx] &= (~0x40);
DramcModeRegWriteByRank(p, u1RankIdx, 13, u1MR13Value[u1RankIdx]);
@@ -3268,7 +3137,7 @@ void DramcModeReg_Check(DRAMC_CTX_T *p)
DramcModeRegReadByRank(p, u1RankIdx, u1MR[ii], &u2Value);
u2Value &= 0xFF;
- if ((u1MR[ii] == 12) || (u1MR[ii] == 14)) //need to compare final setting with global variants
+ if ((u1MR[ii] == 12) || (u1MR[ii] == 14))
{
if (u1MR[ii] == 12)
{
@@ -3310,7 +3179,7 @@ void DramcModeReg_Check(DRAMC_CTX_T *p)
const char *str_vender = "";
if (u1MR[ii] == 5)
{
- //Vendor ID 1: Samsung, 6: Hynix
+
str_vender = (u2Value == 1)? "Samsung":(u2Value==0xff)?"Micron":(u2Value==0x5)?"Nanya":(u2Value==0x6)?"Hynix":"mismatch";
}
mcSHOW_DBG_MSG2(("\t\tMR%d = 0x%x %s\n", u1MR[ii], u2Value, str_vender));
@@ -3319,7 +3188,7 @@ void DramcModeReg_Check(DRAMC_CTX_T *p)
}
- // resotre MR13 settings
+
u1MR13Value[u1RankIdx] = backup_u1MR13Value[u1RankIdx];
}
}
@@ -3382,11 +3251,11 @@ void vPrintFinalModeRegisterSetting(DRAMC_CTX_T * p)
for (u1MRIdx = 0; u1MRIdx < MR_NUM; u1MRIdx++)
{
u2MRValue = u2MRRecord[u1CHIdx][u1RankIdx][u1FSPIdx][u1MRIdx];
- if (u2MRValue != 0xffff) //value changed
+ if (u2MRValue != 0xffff)
{
mcSHOW_MRW_MSG(("[MR Dump] CH%d Rank%d Fsp%d MR%d =0x%x\n", p->channel, p->rank, gFSPWR_Flag[p->rank], u1MRIdx, u2MRValue));
#if MRW_BACKUP
- //MR13(LP4) work around, two RG is not synchronized
+
{
if (u1MRIdx==13)
gFSPWR_Flag[p->rank]=u1Backup_Fsp;
@@ -3445,15 +3314,15 @@ static void BackupRGBeforeTestMode(DRAMC_CTX_T *p)
mcSHOW_DBG_MSG(("***CHB\n"));
}
- u4TestModeV0[i] = u4IO32Read4B(DRAMC_REG_ADDR(DRAMC_REG_SWCMD_CTRL0));//MRS_MRSRK
+ u4TestModeV0[i] = u4IO32Read4B(DRAMC_REG_ADDR(DRAMC_REG_SWCMD_CTRL0));
mcSHOW_DBG_MSG5(("DRAMC_REG_MRS[0x%x]\n", u4TestModeV0[i]));
u4TestModeV1[i] = u4IO32Read4B(DRAMC_REG_ADDR(DRAMC_REG_DRAMC_PD_CTRL));
mcSHOW_DBG_MSG5(("DRAMC_REG_DRAMC_PD_CTRL[0x%x]\n", u4TestModeV1[i]));
- u4TestModeV2[i] = u4IO32Read4B(DRAMC_REG_ADDR(DDRPHY_REG_MISC_STBCAL));//STBCAL_DQSIENCG_NORMAL_EN
+ u4TestModeV2[i] = u4IO32Read4B(DRAMC_REG_ADDR(DDRPHY_REG_MISC_STBCAL));
mcSHOW_DBG_MSG5(("DRAMC_REG_STBCAL[0x%x]\n", u4TestModeV2[i]));
- u4TestModeV3[i] = u4IO32Read4B(DRAMC_REG_ADDR(DRAMC_REG_REFCTRL0));//Auto refresh
+ u4TestModeV3[i] = u4IO32Read4B(DRAMC_REG_ADDR(DRAMC_REG_REFCTRL0));
mcSHOW_DBG_MSG5(("DRAMC_REG_REFCTRL0[0x%x]\n", u4TestModeV3[i]));
- u4TestModeV4[i] = u4IO32Read4B(DRAMC_REG_ADDR(DRAMC_REG_HMR4));//HW MR4
+ u4TestModeV4[i] = u4IO32Read4B(DRAMC_REG_ADDR(DRAMC_REG_HMR4));
mcSHOW_DBG_MSG5(("DRAMC_REG_SPCMDCTRL[0x%x]\n", u4TestModeV4[i]));
u4TestModeV5[i] = u4IO32Read4B(DRAMC_REG_ADDR(DRAMC_REG_CKECTRL));
mcSHOW_DBG_MSG5(("DRAMC_REG_CKECTRL[0x%x]\n", u4TestModeV5[i]));
@@ -3532,12 +3401,12 @@ void ProgramModeEnter(DRAMC_CTX_T *p)
}
vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_SWCMD_CTRL0), u1Rank, SWCMD_CTRL0_MRSRK);
- //Disable dramc and DDRPHY clock gated, let clock freerun
+
vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_DRAMC_PD_CTRL), 0, DRAMC_PD_CTRL_DCMEN);
vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_DRAMC_PD_CTRL), 0, DRAMC_PD_CTRL_PHYCLKDYNGEN);
vIO32WriteFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_STBCAL), 0, MISC_STBCAL_DQSIENCG_NORMAL_EN);
- //Disable MR4, refresh
+
vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_REFCTRL0), 1, REFCTRL0_REFDIS);
vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_HMR4), 1, HMR4_REFRDIS);
vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_CKECTRL), 1, CKECTRL_CKEFIXON);
@@ -3580,7 +3449,7 @@ void ProgramCodeInput(DRAMC_CTX_T *p, U16 u2A_value, U16 u2B_value, U16 u2C_valu
BackupRGBeforeTestMode(p);
p->channel = CHANNEL_A;
- //CA0, CA1, CA2, CA3, CA4, CA5
+
U8 PCI_Key[5][6] =
{
{ 0, 0, 0, 0, 0, 0},
@@ -3642,12 +3511,12 @@ void ProgramCodeInput(DRAMC_CTX_T *p, U16 u2A_value, U16 u2B_value, U16 u2C_valu
}
vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_SWCMD_CTRL0), u1Rank, SWCMD_CTRL0_MRSRK);
- //Disable dramc and DDRPHY clock gated, let clock freerun
+
vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_DRAMC_PD_CTRL), 0, DRAMC_PD_CTRL_DCMEN);
vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_DRAMC_PD_CTRL), 0, DRAMC_PD_CTRL_PHYCLKDYNGEN);
vIO32WriteFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_STBCAL), 0, MISC_STBCAL_DQSIENCG_NORMAL_EN);
- //Disable MR4, refresh
+
vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_REFCTRL0), 1, REFCTRL0_REFDIS);
vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_HMR4), 1, HMR4_REFRDIS);
vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_CKECTRL), 1, CKECTRL_CKEFIXON);
@@ -3681,8 +3550,7 @@ void ProgramCodeInput(DRAMC_CTX_T *p, U16 u2A_value, U16 u2B_value, U16 u2C_valu
void vApplyProgramSequence(DRAMC_CTX_T *p)
{
#if SAMSUNG_TEST_MODE_MRS_FOR_PRELOADER == 1
- //Buffer sensitivity decrease1
- //test 2. TMRS enter -> 000 -> 390 -> 120 -> 8A7
+
ProgramModeEnter(p);
ProgramCodeInput(p, 0, 0, 0);
ProgramCodeInput(p, 3, 9, 0);
@@ -3692,8 +3560,7 @@ void vApplyProgramSequence(DRAMC_CTX_T *p)
mcSHOW_DBG_MSG3(("Buffer sensitivity decrease1: TMRS enter -> 000 -> 390 -> 120 -> 8A7 -> 258\n"));
#elif SAMSUNG_TEST_MODE_MRS_FOR_PRELOADER == 2
- //Buffer sensitivity decrease2
- //test 3. TMRS enter -> 000 -> 390 -> 120 -> 803
+
ProgramModeEnter(p);
ProgramCodeInput(p, 0, 0, 0);
ProgramCodeInput(p, 3, 9, 0);
@@ -3703,8 +3570,7 @@ void vApplyProgramSequence(DRAMC_CTX_T *p)
mcSHOW_DBG_MSG3(("Buffer sensitivity decrease1: TMRS enter -> 000 -> 390 -> 120 -> 803 -> 258\n"));
#elif SAMSUNG_TEST_MODE_MRS_FOR_PRELOADER == 3
- //2014 + 2863
- //test 4.TMRS enter -> 000 -> 390 -> 120 -> 014 -> 863
+
ProgramModeEnter(p);
ProgramCodeInput(p, 0, 0, 0);
ProgramCodeInput(p, 3, 9, 0);
@@ -3715,8 +3581,7 @@ void vApplyProgramSequence(DRAMC_CTX_T *p)
mcSHOW_DBG_MSG3(("2014 + 2863: test 4.TMRS enter -> 000 -> 390 -> 120 -> 014 -> 863 -> 258\n"));
#elif SAMSUNG_TEST_MODE_MRS_FOR_PRELOADER == 4
- //252A
- //test 5. TMRS enter -> 000 -> 390 -> 120 -> 52A
+
ProgramModeEnter(p);
ProgramCodeInput(p, 0, 0, 0);
ProgramCodeInput(p, 3, 9, 0);
@@ -3734,7 +3599,7 @@ void vApplyProgramSequence(DRAMC_CTX_T *p)
}
#else
- //test 1. TMRS enter -> 000 -> 390 -> 021
+
ProgramModeEnter(p);
ProgramCodeInput(p, 0, 0, 0);
ProgramCodeInput(p, 3, 9, 0);
@@ -3782,23 +3647,23 @@ void DramcRunTimeShmooRG_BackupRestore(DRAMC_CTX_T *p)
U32 u4RegBackupAddress[] =
{
- // Rx shmoo backup RG
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_B0_DQ5)), //RX Vref
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_B1_DQ5)), //RX Vref
- //RK0
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_RXDLY0)), //RX DQ Delay
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_RXDLY1)), //RX DQ Delay
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_RXDLY2)), //RX DQ Delay
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_RXDLY3)), //RX DQ Delay
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_RXDLY4)), //RX DQM Delay
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_RXDLY5)), //RX DQS Delay
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_RXDLY0)), //RX DQ Delay
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_RXDLY1)), //RX DQ Delay
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_RXDLY2)), //RX DQ Delay
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_RXDLY3)), //RX DQ Delay
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_RXDLY4)), //RX DQM Delay
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_RXDLY5)), //RX DQS Delay
- //RK1
+
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_B0_DQ5)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_B1_DQ5)),
+
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_RXDLY0)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_RXDLY1)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_RXDLY2)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_RXDLY3)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_RXDLY4)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_RXDLY5)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_RXDLY0)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_RXDLY1)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_RXDLY2)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_RXDLY3)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_RXDLY4)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_RXDLY5)),
+
(DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_RXDLY0+DDRPHY_AO_RANK_OFFSET)),
(DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_RXDLY1+DDRPHY_AO_RANK_OFFSET)),
(DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_RXDLY2+DDRPHY_AO_RANK_OFFSET)),
@@ -3813,28 +3678,28 @@ void DramcRunTimeShmooRG_BackupRestore(DRAMC_CTX_T *p)
(DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_RXDLY5+DDRPHY_AO_RANK_OFFSET)),
- // Tx shmoo backup RG
- //RK0
- (DRAMC_REG_ADDR(DRAMC_REG_SHURK_PI)), //TX tracking DQ PI Delay
- (DRAMC_REG_ADDR(DRAMC_REG_SHURK_SELPH_DQ0)), //TX DQ MCK Delay
- (DRAMC_REG_ADDR(DRAMC_REG_SHURK_SELPH_DQ1)), //TX DQM MCK Delay
- (DRAMC_REG_ADDR(DRAMC_REG_SHURK_SELPH_DQ2)), //TX DQ UI Delay
- (DRAMC_REG_ADDR(DRAMC_REG_SHURK_SELPH_DQ3)), //TX DQM UI Delay
- (DRAMC_REG_ADDR(DRAMC_REG_SHURK_DQS2DQ_CAL1)), //TX Tracking Source DQ
- (DRAMC_REG_ADDR(DRAMC_REG_SHURK_DQS2DQ_CAL2)), //TX Tracking Target DQ
- (DRAMC_REG_ADDR(DRAMC_REG_SHURK_DQS2DQ_CAL5)), //TX Tracking Target DQM
-
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_TXDLY0)), //TX DQ per bit delay cell bit0~3
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_TXDLY1)), //TX DQ per bit delay cell bit4~7
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_TXDLY0)), //TX DQ per bit delay cell bit8~11
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_TXDLY1)), //TX DQ per bit delay cell bit12~15
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_TXDLY3)), //TX DQM WCK WCK_B delay cell
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_TXDLY3)), //TX DQM WCK WCK_B delay cell
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_DQ0)), //TX DQ WCK PI Delay (TX Calibration)
- (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_DQ0)), //TX DQ WCK PI Delay (TX Calibration)
- //(DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_CA_CMD0)), //CA CLK Delay
-
- //RK1
+
+
+ (DRAMC_REG_ADDR(DRAMC_REG_SHURK_PI)),
+ (DRAMC_REG_ADDR(DRAMC_REG_SHURK_SELPH_DQ0)),
+ (DRAMC_REG_ADDR(DRAMC_REG_SHURK_SELPH_DQ1)),
+ (DRAMC_REG_ADDR(DRAMC_REG_SHURK_SELPH_DQ2)),
+ (DRAMC_REG_ADDR(DRAMC_REG_SHURK_SELPH_DQ3)),
+ (DRAMC_REG_ADDR(DRAMC_REG_SHURK_DQS2DQ_CAL1)),
+ (DRAMC_REG_ADDR(DRAMC_REG_SHURK_DQS2DQ_CAL2)),
+ (DRAMC_REG_ADDR(DRAMC_REG_SHURK_DQS2DQ_CAL5)),
+
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_TXDLY0)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_TXDLY1)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_TXDLY0)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_TXDLY1)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_TXDLY3)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_TXDLY3)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_DQ0)),
+ (DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B1_DQ0)),
+
+
+
(DRAMC_REG_ADDR(DRAMC_REG_SHURK_PI+DRAMC_REG_AO_RANK_OFFSET )),
(DRAMC_REG_ADDR(DRAMC_REG_SHURK_SELPH_DQ0+DRAMC_REG_AO_RANK_OFFSET)),
(DRAMC_REG_ADDR(DRAMC_REG_SHURK_SELPH_DQ1+DRAMC_REG_AO_RANK_OFFSET)),
@@ -3878,7 +3743,7 @@ void DramcRunTimeShmooRG_BackupRestore(DRAMC_CTX_T *p)
}
vSetPHY2ChannelMapping(p, channel_backup);
- //DramcRegDump(p);//for run time Tx eye scan RG check
+ //DramcRegDump(p);
}
#endif
@@ -3887,17 +3752,17 @@ void CKEFixOnOff_dbg(DRAMC_CTX_T *p, U8 u1RankIdx, CKE_FIX_OPTION option, CHANNE
{
U8 u1CKEOn, u1CKEOff, u1setChannel, u1BackupChannel;
- if (option == CKE_DYNAMIC) //if CKE is dynamic, set both CKE fix On and Off as 0
- { //After CKE FIX on/off, CKE should be returned to dynamic (control by HW)
+ if (option == CKE_DYNAMIC)
+ {
u1CKEOn = u1CKEOff = 0;
}
- else //if CKE fix on is set as 1, CKE fix off should also be set as 0; vice versa
+ else
{
u1CKEOn = option;
u1CKEOff = (1 - option);
}
- if (WriteChannelNUM == TO_ALL_CHANNEL) //write register to all channel
+ if (WriteChannelNUM == TO_ALL_CHANNEL)
{
if((u1RankIdx == RANK_0)||(u1RankIdx == TO_ALL_RANK))
{
@@ -3934,13 +3799,13 @@ void DramcModeRegWrite_DcmOff(DRAMC_CTX_T *p, U8 u1MRIdx, U8 u1Value)
u4register_dcm = u4IO32Read4B(DRAMC_REG_ADDR(DRAMC_REG_DRAMC_PD_CTRL));
- vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_DRAMC_PD_CTRL), 1, DRAMC_PD_CTRL_MIOCKCTRLOFF);/* MIOCKCTRLOFF = 1 */
- vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_DRAMC_PD_CTRL), 0, DRAMC_PD_CTRL_DCMEN2);/* DCMEN2 = 0 */
- vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_DRAMC_PD_CTRL), 0, DRAMC_PD_CTRL_PHYCLKDYNGEN);/* PHYCLKDYNGEN = 0 */
+ vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_DRAMC_PD_CTRL), 1, DRAMC_PD_CTRL_MIOCKCTRLOFF);
+ vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_DRAMC_PD_CTRL), 0, DRAMC_PD_CTRL_DCMEN2);
+ vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_DRAMC_PD_CTRL), 0, DRAMC_PD_CTRL_PHYCLKDYNGEN);
DramcModeRegWrite_111(p, u1MRIdx, u1Value);
- vIO32Write4B(DRAMC_REG_ADDR(DRAMC_REG_DRAMC_PD_CTRL), u4register_dcm); //restore DCM setting
+ vIO32Write4B(DRAMC_REG_ADDR(DRAMC_REG_DRAMC_PD_CTRL), u4register_dcm);
}
#endif
@@ -3972,10 +3837,10 @@ void Get_TA2_ErrCnt(DRAMC_CTX_T *p)
mcSHOW_DBG_MSG(("flag 14C:0x%x\n", u4Value));
{
- //Choose which Byte of TA2 error count
+
//vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_TEST2_A3), iByte, TEST2_A3_ERRFLAG_BYTE_SEL);
- //Byte by TEST2_A3_ERRFLAG_BYTE_SEL
+
u4Value = u4IO32Read4B(DRAMC_REG_ADDR(DRAMC_REG_TEST_RF_ERROR_CNT1));
mcSHOW_DBG_MSG(("150:0x%x ", u4Value));
@@ -4019,8 +3884,8 @@ void Modify_TX_Delay_Cell(DRAMC_CTX_T *p, int i)
while(1);
}
- //Choose which Byte of TA2 error count
- vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_TEST2_A3), u4value, TEST2_A3_ERRFLAG_BYTE_SEL);//Should set before TA2 trigger
+
+ vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_TEST2_A3), u4value, TEST2_A3_ERRFLAG_BYTE_SEL);
mcSHOW_DBG_MSG(("********** Modify_TX_Delay_Cell %d **********\n", i));
vIO32WriteFldMulti(DRAMC_REG_ADDR(DDRPHY_REG_SHU_R0_B0_TXDLY0),
@@ -4050,7 +3915,7 @@ void Modify_TX_Delay_Cell(DRAMC_CTX_T *p, int i)
}
#endif
-#if 0//1. Test2agent R/F fail flag; Test agent compare error counter
+#if 0
void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)
{
int i=0;
@@ -4091,11 +3956,10 @@ void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)
while(u1StopMiniStress){mcDELAY_MS(1000);}
#ifdef TA2_STRESS
- // HW mode: RKSEL=4, RWOFOEN = from 0 to 1
- //@Darren, If single rank RWOFOEN = 1 (always) and enable tx tracking is available.
+
TA2_Test_Run_Time_HW_Presetting(p, TA2_TEST_SIZE, TA2_RKSEL_HW);
- TA2_Test_Run_Time_HW_Write(p, ENABLE);//TA2 trigger W
+ TA2_Test_Run_Time_HW_Write(p, ENABLE);
#endif
#ifdef FAKE_ENGINE_STRESS
@@ -4108,15 +3972,15 @@ void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)
Get_TA2_ErrCnt(p);
#ifdef TA2_STRESS
- TA2_Test_Run_Time_HW_Status(p);//Check TA2 status
+ TA2_Test_Run_Time_HW_Status(p);
#endif
- //Error inject
+
vSetPHY2ChannelMapping(p, (i++) % p->support_channel_num);
vIO32WriteFldMulti(DRAMC_REG_ADDR(DRAMC_REG_SHURK_SELPH_DQ0), \
- P_Fld(7, SHURK_SELPH_DQ0_TXDLY_DQ0)) //MCK
+ P_Fld(7, SHURK_SELPH_DQ0_TXDLY_DQ0))
//vIO32WriteFldMulti(DRAMC_REG_ADDR(DRAMC_REG_SHURK_SELPH_DQ2),
- // P_Fld(6, SHURK_SELPH_DQ2_DLY_DQ0)); //UI
+ // P_Fld(6, SHURK_SELPH_DQ2_DLY_DQ0));
//vSetRank(p, RANK_1);
//Modify_TX_Delay_Cell(p, (i++)%16); //Delay cell
@@ -4126,7 +3990,7 @@ void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)
}
#endif
-#if 0 //2. TA2 R/W with identify RID/AID
+#if 0
void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)
{
U32 u4BackupDQSOSCENDIS = 0;
@@ -4160,7 +4024,7 @@ void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)
}
#endif
- TA2_Test_Run_Time_Pat_Setting(p, TA2_PAT_SWITCH_OFF);//Use worst SI
+ TA2_Test_Run_Time_Pat_Setting(p, TA2_PAT_SWITCH_OFF);
do {
while(u1StopMiniStress){mcDELAY_MS(1000);}
@@ -4170,45 +4034,44 @@ void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)
{
DramcBackupRegisters(p, u4RegBackupAddress, sizeof(u4RegBackupAddress)/sizeof(U32));
- //Disable MR4 MR18/MR19, TxHWTracking, Dummy RD before reset
- vIO32WriteFldAlign_All(DRAMC_REG_HMR4, 0x1, HMR4_REFRDIS); //MR4 Disable
+
+ vIO32WriteFldAlign_All(DRAMC_REG_HMR4, 0x1, HMR4_REFRDIS);
u1ShuLevel = u4IO32ReadFldAlign(DDRPHY_REG_MISC_DVFSCTL, MISC_DVFSCTL_R_OTHER_SHU_GP);
u4BackupDQSOSCENDIS = u4IO32Read4B(DRAMC_REG_SHU_DQSOSC_SET0 + (SHU_GRP_DRAMC_OFFSET * u1ShuLevel));
- vIO32WriteFldAlign_All(DRAMC_REG_DQSOSCR, 0x1, DQSOSCR_DQSOSCRDIS); //MR18, MR19 Disable
+ vIO32WriteFldAlign_All(DRAMC_REG_DQSOSCR, 0x1, DQSOSCR_DQSOSCRDIS);
vIO32WriteFldAlign_All(DRAMC_REG_SHU_DQSOSC_SET0+(SHU_GRP_DRAMC_OFFSET*u1ShuLevel), 0x1, SHU_DQSOSC_SET0_DQSOSCENDIS);
vIO32WriteFldMulti_All(DRAMC_REG_DUMMY_RD, P_Fld(0x0, DUMMY_RD_DUMMY_RD_EN)
| P_Fld(0x0, DUMMY_RD_SREF_DMYRD_EN)
| P_Fld(0x0, DUMMY_RD_DQSG_DMYRD_EN)
| P_Fld(0x0, DUMMY_RD_DMY_RD_DBG));
- // XRT mode: RKSEL=3, RWOFOEN = from 1 to 0
+
//TA2_Test_Run_Time_Pat_Setting(p, TA2_PAT_SWITCH_ON);
- TA2_Test_Run_Time_HW_Presetting(p, TA2_TEST_SIZE, TA2_RKSEL_XRT); //enhance XRT R2R W2W test, TEST2_2_TEST2_OFF=0x400
- TA2_Test_Run_Time_HW_Write(p, ENABLE);//TA2 trigger W
- TA2_Test_Run_Time_HW_Status(p);//Check TA2 status
+ TA2_Test_Run_Time_HW_Presetting(p, TA2_TEST_SIZE, TA2_RKSEL_XRT);
+ TA2_Test_Run_Time_HW_Write(p, ENABLE);
+ TA2_Test_Run_Time_HW_Status(p);
}
#endif
#ifdef TA2_STRESS
- // HW mode: RKSEL=4, RWOFOEN = from 0 to 1
- //@Darren, If single rank RWOFOEN = 1 (always) and enable tx tracking is available.
+
//TA2_Test_Run_Time_Pat_Setting(p, TA2_PAT_SWITCH_ON);
TA2_Test_Run_Time_HW_Presetting(p, TA2_TEST_SIZE, TA2_RKSEL_HW);
- //vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_TEST2_A2), 0x10, TEST2_A2_TEST2_OFF);//TODO: Need to find out the reason
+ //vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_TEST2_A2), 0x10, TEST2_A2_TEST2_OFF);
if (p->support_rank_num==RANK_DUAL)
{
- //@Darren, Fixed TA2 overnight stress r/w fail (Don't enable tx tracking when RWOFOEN=0)
+
vIO32Write4B_All(DRAMC_REG_SHU_DQSOSC_SET0+(SHU_GRP_DRAMC_OFFSET*u1ShuLevel), u4BackupDQSOSCENDIS);
DramcRestoreRegisters(p, u4RegBackupAddress, sizeof(u4RegBackupAddress)/sizeof(U32));
}
- TA2_Test_Run_Time_HW_Write(p, ENABLE);//TA2 trigger W
+ TA2_Test_Run_Time_HW_Write(p, ENABLE);
#endif
#ifdef FAKE_ENGINE_STRESS
if(u1IsLP4Family(p->dram_type))
{
- //static U8 trans_type = W;
+
//Do_Memory_Test_Fake_Engine_Presetting(p, (trans_type++) % 2);
static U8 trans_type = W;
Do_Memory_Test_Fake_Engine_Presetting(p, (trans_type++) % 3);
@@ -4217,13 +4080,13 @@ void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)
#endif
#if (DRAMC_DFS_MODE != 3)
- DFSTestProgram(p, 0); // Should open after DVFS is ready
+ DFSTestProgram(p, 0);
#else
- GetPhyPllFrequency(p); // for DPM PST mode
+ GetPhyPllFrequency(p);
#endif
#ifdef TA2_STRESS
- TA2_Test_Run_Time_HW_Status(p);//Check TA2 status
+ TA2_Test_Run_Time_HW_Status(p);
#endif
#ifdef FAKE_ENGINE_STRESS
@@ -4277,7 +4140,7 @@ void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)
}
#endif
-#if 0 //3. Loop mode (loop time 2^n/ never end/error break)
+#if 0
void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)
{
int i=0;
@@ -4295,7 +4158,7 @@ void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)
vIO32WriteFldAlign_All(DRAMC_REG_TEST2_A0, 1, TEST2_A0_TA2_LOOP_EN);
vIO32WriteFldAlign_All(DRAMC_REG_TEST2_A0, 1, TEST2_A0_LOOP_NV_END);
vIO32WriteFldAlign_All(DRAMC_REG_TEST2_A0, 1, TEST2_A0_ERR_BREAK_EN);
- TA2_Test_Run_Time_HW_Write(p, ENABLE);//TA2 trigger W
+ TA2_Test_Run_Time_HW_Write(p, ENABLE);
do {
while(u1StopMiniStress){mcDELAY_MS(1000);}
@@ -4309,13 +4172,13 @@ void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)
//Get_TA2_ErrCnt(p);
Get_TA2_ST(p);
- //Error inject
+
if(i==20)
{
mcSHOW_DBG_MSG(("!!! Error Injection in CHA\n"));
vIO32WriteFldMulti(DRAMC_REG_ADDR(DRAMC_REG_SHURK_SELPH_DQ0), \
- P_Fld(7, SHURK_SELPH_DQ0_TXDLY_DQ0)) //MCK
+ P_Fld(7, SHURK_SELPH_DQ0_TXDLY_DQ0))
}
i++;
} while(1);
@@ -4323,13 +4186,13 @@ void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)
}
#endif
-#if 0 //pst mode
+#if 0
typedef enum
{
SIDLE_SR_S1_S0 = 0,
SIDLE_SR_S1,
} ETT_STRESS_LPS;
-void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)//Use the best effort of HW, since TA2 could compare data
+void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)
{
U32 u4BackupDQSOSCENDIS = 0;
U8 u1ShuLevel = 0;
@@ -4366,20 +4229,20 @@ void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)//Use the best effort of HW, since TA2 c
do {
while(u1StopMiniStress){mcDELAY_MS(1000);}
-#if 1 //low power OK
+#if 1
if(iTestCnt % 10 == 0)
{
bLowPwrState = (bLowPwrState == SIDLE_SR_S1_S0) ? (SIDLE_SR_S1) : (SIDLE_SR_S1_S0);
mcSHOW_DBG_MSG(("*** Stop delay then start\n"));
- Reg_Sync_Writel(0x10940020, 0x00000000);// GPR0 //S1, SR, idle
- Reg_Sync_Writel(0x10A40020, 0x00000000);// GPR0
+ Reg_Sync_Writel(0x10940020, 0x00000000);
+ Reg_Sync_Writel(0x10A40020, 0x00000000);
- Reg_Sync_Writel(0x10940028, 0x00000003);// GPR2
- Reg_Sync_Writel(0x10A40028, 0x00000003);// GPR2
+ Reg_Sync_Writel(0x10940028, 0x00000003);
+ Reg_Sync_Writel(0x10A40028, 0x00000003);
- Reg_Sync_Writel(0x109400A0, 1);//Tigger MSG BOX to stop low power flow
- Reg_Sync_Writel(0x10A400A0, 1);//Tigger MSG BOX to stop low power flow
+ Reg_Sync_Writel(0x109400A0, 1);
+ Reg_Sync_Writel(0x10A400A0, 1);
mcDELAY_MS(100);
@@ -4387,80 +4250,80 @@ void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)//Use the best effort of HW, since TA2 c
{
mcSHOW_DBG_MSG(("*** SIDLE_SR_S1_S0\n"));
- Reg_Sync_Writel(0x10940020, 0x00010203);// GPR0 //S0, S1, SR, idle
- Reg_Sync_Writel(0x10A40020, 0x00010203);// GPR0
+ Reg_Sync_Writel(0x10940020, 0x00010203);
+ Reg_Sync_Writel(0x10A40020, 0x00010203);
- Reg_Sync_Writel(0x10940028, 0x80000004);// GPR2
- Reg_Sync_Writel(0x10A40028, 0x80000004);// GPR2
+ Reg_Sync_Writel(0x10940028, 0x80000004);
+ Reg_Sync_Writel(0x10A40028, 0x80000004);
bTa2_stress_enable = 0;
}
else
{
mcSHOW_DBG_MSG(("*** SIDLE_SR_S1 stop then start\n"));
- Reg_Sync_Writel(0x10940020, 0x00010200);// GPR0 //S1, SR, idle
- Reg_Sync_Writel(0x10A40020, 0x00010200);// GPR0
+ Reg_Sync_Writel(0x10940020, 0x00010200);
+ Reg_Sync_Writel(0x10A40020, 0x00010200);
- Reg_Sync_Writel(0x10940028, 0x80000003);// GPR2
- Reg_Sync_Writel(0x10A40028, 0x80000003);// GPR2
+ Reg_Sync_Writel(0x10940028, 0x80000003);
+ Reg_Sync_Writel(0x10A40028, 0x80000003);
bTa2_stress_enable = 1;
}
- Reg_Sync_Writel(0x109400A0, 1);//Tigger MSG BOX
- Reg_Sync_Writel(0x10A400A0, 1);//Tigger MSG BOX
+ Reg_Sync_Writel(0x109400A0, 1);
+ Reg_Sync_Writel(0x10A400A0, 1);
}
iTestCnt++;
#endif
-#if 0 //mix ==> bug
+#if 0
if(iTestCnt % 10 == 0)
{
bLowPwrState = (bLowPwrState == SIDLE_SR_S1_S0) ? (SIDLE_SR_S1) : (SIDLE_SR_S1_S0);
mcSHOW_DBG_MSG(("*** Stop delay then start\n"));
- Reg_Sync_Writel(0x10940020, 0x00000000);// GPR0 //S1, SR, idle
- Reg_Sync_Writel(0x10A40020, 0x00000000);// GPR0
+ Reg_Sync_Writel(0x10940020, 0x00000000);
+ Reg_Sync_Writel(0x10A40020, 0x00000000);
- Reg_Sync_Writel(0x10940028, 0x00000003);// GPR2
- Reg_Sync_Writel(0x10A40028, 0x00000003);// GPR2
+ Reg_Sync_Writel(0x10940028, 0x00000003);
+ Reg_Sync_Writel(0x10A40028, 0x00000003);
- Reg_Sync_Writel(0x109400A0, 1);//Tigger MSG BOX to stop low power flow
- Reg_Sync_Writel(0x10A400A0, 1);//Tigger MSG BOX to stop low power flow
+ Reg_Sync_Writel(0x109400A0, 1);
+ Reg_Sync_Writel(0x10A400A0, 1);
if(bLowPwrState == SIDLE_SR_S1_S0)
{
mcSHOW_DBG_MSG(("*** SIDLE_SR_S1_S0\n"));
- Reg_Sync_Writel(0x10940020, 0x00010300);// GPR0 //S0 -> S1 -> SR -> idle
- Reg_Sync_Writel(0x10A40020, 0x00010300);// GPR0
+ Reg_Sync_Writel(0x10940020, 0x00010300);
+ Reg_Sync_Writel(0x10A40020, 0x00010300);
- Reg_Sync_Writel(0x10940024, 0x13121110);// GPR1 //->SHU0 -> SHU1 -> SHU2 -> SHU3
- Reg_Sync_Writel(0x10A40024, 0x13121110);// GPR1
+ Reg_Sync_Writel(0x10940024, 0x13121110);
+ Reg_Sync_Writel(0x10A40024, 0x13121110);
- Reg_Sync_Writel(0x10940028, 0x80000008);// GPR2
- Reg_Sync_Writel(0x10A40028, 0x80000008);// GPR2
+ Reg_Sync_Writel(0x10940028, 0x80000008);
+ Reg_Sync_Writel(0x10A40028, 0x80000008);
bTa2_stress_enable = 0;
}
else
{
mcSHOW_DBG_MSG(("*** SIDLE_SR_S1\n"));
- Reg_Sync_Writel(0x10940020, 0x00010200);// GPR0 //S1 -> SR -> idle
- Reg_Sync_Writel(0x10A40020, 0x00010200);// GPR0
+ Reg_Sync_Writel(0x10940020, 0x00010200);
+ Reg_Sync_Writel(0x10A40020, 0x00010200);
- Reg_Sync_Writel(0x10940024, 0x13121110);// GPR1 //->SHU0 -> SHU1 -> SHU2 -> SHU3
- Reg_Sync_Writel(0x10A40024, 0x13121110);// GPR1
+ Reg_Sync_Writel(0x10940024, 0x13121110);
+ Reg_Sync_Writel(0x10A40024, 0x13121110);
- Reg_Sync_Writel(0x10940028, 0x80000008);// GPR2
- Reg_Sync_Writel(0x10A40028, 0x80000008);// GPR2
+ Reg_Sync_Writel(0x10940028, 0x80000008);
+ Reg_Sync_Writel(0x10A40028, 0x80000008);
bTa2_stress_enable = 1;
}
- Reg_Sync_Writel(0x109400A0, 1);//Tigger MSG BOX
- Reg_Sync_Writel(0x10A400A0, 1);//Tigger MSG BOX
+ Reg_Sync_Writel(0x109400A0, 1);
+ Reg_Sync_Writel(0x10A400A0, 1);
}
iTestCnt++;
#endif
-#if 0 //DVFS
+#if 0
if(iTestCnt % 10 == 0)
{
bLowPwrState = (bLowPwrState == SIDLE_SR_S1_S0) ? (SIDLE_SR_S1) : (SIDLE_SR_S1_S0);
@@ -4468,32 +4331,32 @@ void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)//Use the best effort of HW, since TA2 c
{
mcSHOW_DBG_MSG(("*** SIDLE_SR_S1_S0\n"));
- Reg_Sync_Writel(0x10940020, 0x12111000);// GPR0 //all SHU
- Reg_Sync_Writel(0x10A40020, 0x12111000);// GPR0
+ Reg_Sync_Writel(0x10940020, 0x12111000);
+ Reg_Sync_Writel(0x10A40020, 0x12111000);
- Reg_Sync_Writel(0x10940024, 0x16151413);// GPR1
- Reg_Sync_Writel(0x10A40024, 0x16151413);// GPR1
+ Reg_Sync_Writel(0x10940024, 0x16151413);
+ Reg_Sync_Writel(0x10A40024, 0x16151413);
- Reg_Sync_Writel(0x10940028, 0x80000008);// GPR2
- Reg_Sync_Writel(0x10A40028, 0x80000008);// GPR2
+ Reg_Sync_Writel(0x10940028, 0x80000008);
+ Reg_Sync_Writel(0x10A40028, 0x80000008);
bTa2_stress_enable = 0;
}
else
{
mcSHOW_DBG_MSG(("*** SIDLE_SR_S1\n"));
- Reg_Sync_Writel(0x10940020, 0x12111000);// GPR0 //all SHU
- Reg_Sync_Writel(0x10A40020, 0x12111000);// GPR0
+ Reg_Sync_Writel(0x10940020, 0x12111000);
+ Reg_Sync_Writel(0x10A40020, 0x12111000);
- Reg_Sync_Writel(0x10940024, 0x16151413);// GPR1
- Reg_Sync_Writel(0x10A40024, 0x16151413);// GPR1
+ Reg_Sync_Writel(0x10940024, 0x16151413);
+ Reg_Sync_Writel(0x10A40024, 0x16151413);
- Reg_Sync_Writel(0x10940028, 0x80000008);// GPR2
- Reg_Sync_Writel(0x10A40028, 0x80000008);// GPR2
+ Reg_Sync_Writel(0x10940028, 0x80000008);
+ Reg_Sync_Writel(0x10A40028, 0x80000008);
bTa2_stress_enable = 1;
}
- Reg_Sync_Writel(0x109400A0, 1);//Tigger MSG BOX
- Reg_Sync_Writel(0x10A400A0, 1);//Tigger MSG BOX
+ Reg_Sync_Writel(0x109400A0, 1);
+ Reg_Sync_Writel(0x10A400A0, 1);
}
iTestCnt++;
#endif
@@ -4507,26 +4370,25 @@ if(bTa2_stress_enable)
{
DramcBackupRegisters(p, u4RegBackupAddress, sizeof(u4RegBackupAddress)/sizeof(U32));
- //Disable MR4 MR18/MR19, TxHWTracking, Dummy RD before reset
- vIO32WriteFldAlign_All(DRAMC_REG_HMR4, 0x1, HMR4_REFRDIS); //MR4 Disable
+
+ vIO32WriteFldAlign_All(DRAMC_REG_HMR4, 0x1, HMR4_REFRDIS);
u1ShuLevel = u4IO32ReadFldAlign(DDRPHY_REG_MISC_DVFSCTL, MISC_DVFSCTL_R_OTHER_SHU_GP);
u4BackupDQSOSCENDIS = u4IO32Read4B(DRAMC_REG_SHU_DQSOSC_SET0 + (SHU_GRP_DRAMC_OFFSET * u1ShuLevel));
- vIO32WriteFldAlign_All(DRAMC_REG_DQSOSCR, 0x1, DQSOSCR_DQSOSCRDIS); //MR18, MR19 Disable
+ vIO32WriteFldAlign_All(DRAMC_REG_DQSOSCR, 0x1, DQSOSCR_DQSOSCRDIS);
vIO32WriteFldAlign_All(DRAMC_REG_SHU_DQSOSC_SET0+(SHU_GRP_DRAMC_OFFSET*u1ShuLevel), 0x1, SHU_DQSOSC_SET0_DQSOSCENDIS);
vIO32WriteFldMulti_All(DRAMC_REG_DUMMY_RD, P_Fld(0x0, DUMMY_RD_DUMMY_RD_EN)
| P_Fld(0x0, DUMMY_RD_SREF_DMYRD_EN)
| P_Fld(0x0, DUMMY_RD_DQSG_DMYRD_EN)
| P_Fld(0x0, DUMMY_RD_DMY_RD_DBG));
- // XRT mode: RKSEL=3, RWOFOEN = from 1 to 0
+
TA2_Test_Run_Time_Pat_Setting(p, TA2_PAT_SWITCH_ON);
- TA2_Test_Run_Time_HW_Presetting(p, TA2_TEST_SIZE, TA2_RKSEL_XRT); //enhance XRT R2R W2W test, TEST2_2_TEST2_OFF=0x400
- TA2_Test_Run_Time_HW_Write(p, ENABLE);//TA2 trigger W
- TA2_Test_Run_Time_HW_Status(p);//Check TA2 status
+ TA2_Test_Run_Time_HW_Presetting(p, TA2_TEST_SIZE, TA2_RKSEL_XRT);
+ TA2_Test_Run_Time_HW_Write(p, ENABLE);
+ TA2_Test_Run_Time_HW_Status(p);
}
- // HW mode: RKSEL=4, RWOFOEN = from 0 to 1
- //@Darren, If single rank RWOFOEN = 1 (always) and enable tx tracking is available.
+
TA2_Test_Run_Time_Pat_Setting(p, TA2_PAT_SWITCH_ON);
TA2_Test_Run_Time_HW_Presetting(p, TA2_TEST_SIZE, TA2_RKSEL_HW);
//vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_TEST2_A2), 0x10, TEST2_A2_TEST2_OFF);//TODO: Need to find out the reason
@@ -4534,11 +4396,11 @@ if(bTa2_stress_enable)
if (p->support_rank_num==RANK_DUAL)
{
- //@Darren, Fixed TA2 overnight stress r/w fail (Don't enable tx tracking when RWOFOEN=0)
+
vIO32Write4B_All(DRAMC_REG_SHU_DQSOSC_SET0+(SHU_GRP_DRAMC_OFFSET*u1ShuLevel), u4BackupDQSOSCENDIS);
DramcRestoreRegisters(p, u4RegBackupAddress, sizeof(u4RegBackupAddress)/sizeof(U32));
}
- TA2_Test_Run_Time_HW_Write(p, ENABLE);//TA2 trigger W
+ TA2_Test_Run_Time_HW_Write(p, ENABLE);
}
#endif
@@ -4557,7 +4419,7 @@ if(bTa2_stress_enable)
#ifdef TA2_STRESS
if(bTa2_stress_enable)
{
- TA2_Test_Run_Time_HW_Status(p);//Check TA2 status
+ TA2_Test_Run_Time_HW_Status(p);
}
#endif
@@ -4594,55 +4456,14 @@ if(bTa2_stress_enable)
}
#endif
-//RX
-//if (u1UseTestEngine == PATTERN_TEST_ENGINE)
-//{
-// U32 u4B0Tatal =0;
-// U32 u4B1Tatal =0;
-// mcSHOW_DBG_MSG(("RX window per bit CH[%d] Rank[%d] window size\n", p->channel, p->rank));
-// for (u1BitIdx = 0; u1BitIdx < p->data_width; u1BitIdx++)
-// {
-// mcSHOW_DBG_MSG(("DQ[%d] size = %d\n", u1BitIdx, gFinalRXPerbitWin[p->channel][p->rank][u1BitIdx]));
-// if(u1BitIdx < 8)
-// {
-// u4B0Tatal += gFinalRXPerbitWin[p->channel][p->rank][u1BitIdx];
-// }
-// else
-// {
-// u4B1Tatal += gFinalRXPerbitWin[p->channel][p->rank][u1BitIdx];
-// }
-// }
-// mcSHOW_DBG_MSG(("total rx window size B0: %d B1: %d\n", u4B0Tatal, u4B1Tatal));
-//}
-
-//TX
-//static void TxPrintWidnowInfo(DRAMC_CTX_T *p, PASS_WIN_DATA_T WinPerBitData[])
-//{
-// U8 u1BitIdx;
-// U32 u4B0Tatal=0;
-// U32 u4B1Tatal=0;
-// for (u1BitIdx = 0; u1BitIdx < 16; u1BitIdx++)
-// {
-// if(u1BitIdx < 8)
-// {
-// u4B0Tatal += WinPerBitData[u1BitIdx].win_size;
-// }
-// else
-// {
-// u4B1Tatal += WinPerBitData[u1BitIdx].win_size;
-// }
-//
-// }
-// mcSHOW_DBG_MSG(("\ntotal tx window size B0: %d B1: %d\n", u4B0Tatal, u4B1Tatal));
-//}
//#ifdef ETT_MINI_STRESS_TEST
-#if 0 //Only trigger W once, then R in the loop with TA2 HW mode
-//err |= aTA2_Test_Run_Time_HW_Status(p);/* Compare should use TE_OP_READ_CHECK */
+#if 0
+//err |= aTA2_Test_Run_Time_HW_Status(p);
unsigned int DPMIsAlive(DRAMC_CTX_T *p);
void Ett_Mini_Strss_Test_DPM(DRAMC_CTX_T *p, int iTestCnt, bool *bTa2_stress_enable);
-void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)//Use the best effort of HW, since TA2 could compare data
+void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)
{
static int sTestCnt = 0;
U8 channelIdx, channelBak;
@@ -4657,9 +4478,9 @@ void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)//Use the best effort of HW, since TA2 c
}
#endif
- TA2_Test_Run_Time_Pat_Setting(p, TA2_PAT_SWITCH_OFF);//Assign TEST_WORST_SI_PATTERN
+ TA2_Test_Run_Time_Pat_Setting(p, TA2_PAT_SWITCH_OFF);
TA2_Test_Run_Time_HW_Presetting(p, TA2_TEST_SIZE, TA2_RKSEL_HW);
- TA2_Test_Run_Time_HW_Write(p, ENABLE);//TA2 trigger W
+ TA2_Test_Run_Time_HW_Write(p, ENABLE);
do {
while(u1StopMiniStress){mcDELAY_MS(1000);}
@@ -4668,9 +4489,9 @@ void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)//Use the best effort of HW, since TA2 c
#ifdef TA2_STRESS
if(bTa2_stress_enable)
{
- if(sTestCnt)//after 2rd times
+ if(sTestCnt)
{
- TA2_Test_Run_Time_HW_Read(p, ENABLE);//TA2 trigger R
+ TA2_Test_Run_Time_HW_Read(p, ENABLE);
}
}
#endif
@@ -4683,12 +4504,12 @@ void Ett_Mini_Strss_Test(DRAMC_CTX_T *p)//Use the best effort of HW, since TA2 c
}
#endif
- DFSTestProgram(p, 0); // Should open after DVFS is ready
+ DFSTestProgram(p, 0);
#ifdef TA2_STRESS
if(bTa2_stress_enable)
{
- err |= TA2_Test_Run_Time_HW_Status(p);/* Compare should use TE_OP_READ_CHECK */
+ err |= TA2_Test_Run_Time_HW_Status(p);
}
#endif
sTestCnt ++;