• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: BSD-3-Clause */
2 
3 //-----------------------------------------------------------------------------
4 // Include files
5 //-----------------------------------------------------------------------------
6 #include "dramc_common.h"
7 #include "dramc_int_global.h"
8 #include "x_hal_io.h"
9 //-----------------------------------------------------------------------------
10 // Global variables
11 //-----------------------------------------------------------------------------
12 U8 gDRSEnableSelfWakeup = 0;
13 
14 //----------------------------------------
15 // Auto Gen Code -- START
16 //----------------------------------------
17 #if (CHECK_GOLDEN_SETTING == TRUE)
18 typedef struct _GOLDEN_FIELD_T
19 {
20 	char fieldName[64]; //field name
21 	U32 group;
22 	U32 field;
23 	U32 u4ChaValue;
24 } GOLDEN_FIELD_T;
25 GOLDEN_FIELD_T *golden_setting_anwer;
26 
27 #if APPLY_LOWPOWER_GOLDEN_SETTINGS
28 // DCM On
29 GOLDEN_FIELD_T shuf_golden_setting_anwer[] =
30 {
31 	{"SHU_B1_DQ8_R_DMRANK_CHG_PIPE_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMRANK_CHG_PIPE_CG_IG_B1, 0x0},
32 	{"MISC_SHU_RX_CG_CTRL_RX_PRECAL_CG_EN", DDRPHY_REG_MISC_SHU_RX_CG_CTRL, MISC_SHU_RX_CG_CTRL_RX_PRECAL_CG_EN, 0x0},
33 	{"SHU_CA_CMD8_R_DMDQSIEN_FLAG_SYNC_CG_IG_CA", DDRPHY_REG_SHU_CA_CMD8, SHU_CA_CMD8_R_DMDQSIEN_FLAG_SYNC_CG_IG_CA, 0x0},
34 	{"MISC_SHU_CG_CTRL0_R_PHY_MCK_CG_CTRL", DDRPHY_REG_MISC_SHU_CG_CTRL0, MISC_SHU_CG_CTRL0_R_PHY_MCK_CG_CTRL, 0x33403000},
35 	{"SHU_B1_DQ7_R_DMTX_ARPI_CG_DQS_NEW_B1", DDRPHY_REG_SHU_B1_DQ7, SHU_B1_DQ7_R_DMTX_ARPI_CG_DQS_NEW_B1, 0x0},
36 	{"SHU_B0_DQ8_R_RMRX_TOPHY_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_RMRX_TOPHY_CG_IG_B0, 0x1},
37 	{"SHU_B1_DQ8_R_DMRXDVS_RDSEL_TOG_PIPE_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMRXDVS_RDSEL_TOG_PIPE_CG_IG_B1, 0x0},
38 	{"SHU_CA_CMD8_R_DMDQSIEN_RDSEL_PIPE_CG_IG_CA", DDRPHY_REG_SHU_CA_CMD8, SHU_CA_CMD8_R_DMDQSIEN_RDSEL_PIPE_CG_IG_CA, 0x0},
39 	{"SHU_B0_DQ8_R_DMDQSIEN_RDSEL_PIPE_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMDQSIEN_RDSEL_PIPE_CG_IG_B0, 0x0},
40 	{"SHU_CA_CMD8_R_RMRX_TOPHY_CG_IG_CA", DDRPHY_REG_SHU_CA_CMD8, SHU_CA_CMD8_R_RMRX_TOPHY_CG_IG_CA, 0x0},
41 	{"SHU_CA_CMD7_R_DMTX_ARPI_CG_CS_NEW", DDRPHY_REG_SHU_CA_CMD7, SHU_CA_CMD7_R_DMTX_ARPI_CG_CS_NEW, 0x0},
42 	{"SHU_B1_DQ7_R_DMTX_ARPI_CG_DQM_NEW_B1", DDRPHY_REG_SHU_B1_DQ7, SHU_B1_DQ7_R_DMTX_ARPI_CG_DQM_NEW_B1, 0x0},
43 	{"SHU_B1_DQ8_R_DMDQSIEN_RDSEL_TOG_PIPE_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMDQSIEN_RDSEL_TOG_PIPE_CG_IG_B1, 0x0},
44 	{"SHU_CA_CMD8_R_RMRODTEN_CG_IG_CA", DDRPHY_REG_SHU_CA_CMD8, SHU_CA_CMD8_R_RMRODTEN_CG_IG_CA, 0x0},
45 	{"SHU_B0_DQ8_R_RMRODTEN_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_RMRODTEN_CG_IG_B0, 0x0},
46 	{"SHU_B1_DQ8_R_DMRANK_RXDLY_PIPE_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMRANK_RXDLY_PIPE_CG_IG_B1, 0x0},
47 	{"SHU_B0_DQ8_R_DMRXDVS_RDSEL_PIPE_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMRXDVS_RDSEL_PIPE_CG_IG_B0, 0x0},
48 	{"SHU_B1_DQ8_R_DMDQSIEN_RDSEL_PIPE_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMDQSIEN_RDSEL_PIPE_CG_IG_B1, 0x0},
49 	{"SHU_CA_CMD8_R_DMRANK_PIPE_CG_IG_CA", DDRPHY_REG_SHU_CA_CMD8, SHU_CA_CMD8_R_DMRANK_PIPE_CG_IG_CA, 0x0},
50 	{"SHU_B0_DQ8_R_DMRANK_CHG_PIPE_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMRANK_CHG_PIPE_CG_IG_B0, 0x0},
51 	{"MISC_SHU_ODTCTRL_RODTENSTB_SELPH_CG_IG", DDRPHY_REG_MISC_SHU_ODTCTRL, MISC_SHU_ODTCTRL_RODTENSTB_SELPH_CG_IG, 0x0},
52 	{"SHU_B1_DQ8_R_DMDQSIEN_FLAG_SYNC_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMDQSIEN_FLAG_SYNC_CG_IG_B1, 0x0},
53 	{"SHU_CA_CMD8_R_DMDQSIEN_FLAG_PIPE_CG_IG_CA", DDRPHY_REG_SHU_CA_CMD8, SHU_CA_CMD8_R_DMDQSIEN_FLAG_PIPE_CG_IG_CA, 0x0},
54 	{"SHU_B1_DQ8_R_DMRANK_PIPE_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMRANK_PIPE_CG_IG_B1, 0x0},
55 	{"SHU_B1_DQ8_R_RMRX_TOPHY_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_RMRX_TOPHY_CG_IG_B1, 0x1},
56 	{"SHU_B1_DQ8_R_DMDQSIEN_FLAG_PIPE_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMDQSIEN_FLAG_PIPE_CG_IG_B1, 0x0},
57 	{"SHU_B0_DQ8_R_DMRXDVS_RDSEL_TOG_PIPE_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMRXDVS_RDSEL_TOG_PIPE_CG_IG_B0, 0x0},
58 	{"SHU_CA_CMD8_R_DMRANK_CHG_PIPE_CG_IG_CA", DDRPHY_REG_SHU_CA_CMD8, SHU_CA_CMD8_R_DMRANK_CHG_PIPE_CG_IG_CA, 0x0},
59 	{"SHU_CA_CMD8_R_DMDQSIEN_RDSEL_TOG_PIPE_CG_IG_CA", DDRPHY_REG_SHU_CA_CMD8, SHU_CA_CMD8_R_DMDQSIEN_RDSEL_TOG_PIPE_CG_IG_CA, 0x0},
60 	{"SHU_B0_DQ8_R_DMRXDLY_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMRXDLY_CG_IG_B0, 0x1},
61 	{"SHU_CA_CMD7_R_DMTX_ARPI_CG_CMD_NEW", DDRPHY_REG_SHU_CA_CMD7, SHU_CA_CMD7_R_DMTX_ARPI_CG_CMD_NEW, 0x0},
62 	{"SHU_B0_DQ7_R_DMTX_ARPI_CG_DQM_NEW_B0", DDRPHY_REG_SHU_B0_DQ7, SHU_B0_DQ7_R_DMTX_ARPI_CG_DQM_NEW_B0, 0x0},
63 	{"SHU_B1_DQ8_R_RMRODTEN_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_RMRODTEN_CG_IG_B1, 0x0},
64 	{"SHU_B0_DQ8_R_DMDQSIEN_FLAG_SYNC_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMDQSIEN_FLAG_SYNC_CG_IG_B0, 0x0},
65 	{"SHU_B0_DQ8_R_DMDQSIEN_FLAG_PIPE_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMDQSIEN_FLAG_PIPE_CG_IG_B0, 0x0},
66 	{"SHU_CA_CMD13_RG_TX_ARCLKB_READ_BASE_DATA_TIE_EN_CA", DDRPHY_REG_SHU_CA_CMD13, SHU_CA_CMD13_RG_TX_ARCLKB_READ_BASE_DATA_TIE_EN_CA, 0x0},
67 	{"SHU_B1_DQ8_R_DMRXDVS_RDSEL_PIPE_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMRXDVS_RDSEL_PIPE_CG_IG_B1, 0x0},
68 	{"SHU_B0_DQ8_R_DMRANK_PIPE_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMRANK_PIPE_CG_IG_B0, 0x0},
69 	{"SHU_B0_DQ8_R_DMDQSIEN_RDSEL_TOG_PIPE_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMDQSIEN_RDSEL_TOG_PIPE_CG_IG_B0, 0x0},
70 	{"SHU_B0_DQ7_R_DMTX_ARPI_CG_DQ_NEW_B0", DDRPHY_REG_SHU_B0_DQ7, SHU_B0_DQ7_R_DMTX_ARPI_CG_DQ_NEW_B0, 0x0},
71 	{"SHU_B1_DQ7_R_DMTX_ARPI_CG_DQ_NEW_B1", DDRPHY_REG_SHU_B1_DQ7, SHU_B1_DQ7_R_DMTX_ARPI_CG_DQ_NEW_B1, 0x0},
72 	{"SHU_APHY_TX_PICG_CTRL_DDRPHY_CLK_EN_COMB_TX_OPT", DRAMC_REG_SHU_APHY_TX_PICG_CTRL, SHU_APHY_TX_PICG_CTRL_DDRPHY_CLK_EN_COMB_TX_OPT, 0x1},
73 	{"MISC_SHU_RX_CG_CTRL_RX_DQSIEN_RETRY_CG_EN", DDRPHY_REG_MISC_SHU_RX_CG_CTRL, MISC_SHU_RX_CG_CTRL_RX_DQSIEN_RETRY_CG_EN, 0x1},
74 	{"SHU_B0_DQ8_R_DMRANK_RXDLY_PIPE_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMRANK_RXDLY_PIPE_CG_IG_B0, 0x0},
75 	{"SHU_B0_DQ7_R_DMTX_ARPI_CG_DQS_NEW_B0", DDRPHY_REG_SHU_B0_DQ7, SHU_B0_DQ7_R_DMTX_ARPI_CG_DQS_NEW_B0, 0x0},
76 	{"SHU_B1_DQ8_R_DMRXDLY_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMRXDLY_CG_IG_B1, 0x1},
77 	{"MISC_SHU_RX_CG_CTRL_RX_RDSEL_TRACKING_CG_EN", DDRPHY_REG_MISC_SHU_RX_CG_CTRL, MISC_SHU_RX_CG_CTRL_RX_RDSEL_TRACKING_CG_EN, 0x1},
78 };
79 
80 GOLDEN_FIELD_T nonshuf_golden_setting_anwer[] =
81 {
82 	{"SCSMCTRL_CG_SCARB_SM_CGAR", DRAMC_REG_SCSMCTRL_CG, SCSMCTRL_CG_SCARB_SM_CGAR, 0x0},
83 	{"MISC_CG_CTRL5_R_DQ0_DLY_DCM_EN", DDRPHY_REG_MISC_CG_CTRL5, MISC_CG_CTRL5_R_DQ0_DLY_DCM_EN, 0x1},
84 	{"MISC_CG_CTRL0_RG_CG_PHY_OFF_DIABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_PHY_OFF_DIABLE, 0x0},
85 	{"MISC_CTRL3_ARPI_MPDIV_CG_CA_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_MPDIV_CG_CA_OPT, 0x0},
86 	{"DUMMY_RD_DUMMY_RD_PA_OPT", DRAMC_REG_DUMMY_RD, DUMMY_RD_DUMMY_RD_PA_OPT, 0x1},
87 	{"DVFS_CTRL0_DVFS_CG_OPT", DRAMC_REG_DVFS_CTRL0, DVFS_CTRL0_DVFS_CG_OPT, 0x0},
88 	{"MISC_CTRL3_ARPI_MPDIV_CG_DQ_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_MPDIV_CG_DQ_OPT, 0x0},
89 	{"MISC_CTRL3_ARPI_CG_MCTL_CA_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_CG_MCTL_CA_OPT, 0x0},
90 	{"MISC_CTRL4_R_OPT2_CG_DQSIEN", DDRPHY_REG_MISC_CTRL4, MISC_CTRL4_R_OPT2_CG_DQSIEN, 0x1},
91 	{"MISC_CG_CTRL2_RG_MEM_DCM_FSEL", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_FSEL, 0x0},
92 	{"MISC_CG_CTRL0_RG_CG_COMB0_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_COMB0_OFF_DISABLE, 0x0},
93 	{"RX_CG_SET0_RDATCKAR", DRAMC_REG_RX_CG_SET0, RX_CG_SET0_RDATCKAR, 0x0},
94 	{"MISC_CTRL3_ARPI_CG_MCTL_DQ_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_CG_MCTL_DQ_OPT, 0x0},
95 	{"MISC_CG_CTRL0_RG_CG_RX_COMB1_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_RX_COMB1_OFF_DISABLE, 0x0},
96 	{"MISC_CG_CTRL0_RG_CG_DRAMC_CK_OFF", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_DRAMC_CK_OFF, 0x0},
97 	{"MISC_CG_CTRL0_RG_CG_CMD_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_CMD_OFF_DISABLE, 0x0},
98 	{"MISC_CTRL3_R_DDRPHY_RX_PIPE_CG_IG", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_R_DDRPHY_RX_PIPE_CG_IG, 0x0},
99 	{"RX_CG_SET0_RDYCKAR", DRAMC_REG_RX_CG_SET0, RX_CG_SET0_RDYCKAR, 0x0},
100 	{"DDRCOMMON0_DISSTOP26M", DRAMC_REG_DDRCOMMON0, DDRCOMMON0_DISSTOP26M, 0x0},
101 	{"MISCTL0_REFP_ARBMASK_PBR2PBR_PA_DIS", DRAMC_REG_MISCTL0, MISCTL0_REFP_ARBMASK_PBR2PBR_PA_DIS, 0x0},
102 	{"DCM_CTRL0_BCLKAR", DRAMC_REG_DCM_CTRL0, DCM_CTRL0_BCLKAR, 0x0},
103 	{"DRAMC_PD_CTRL_DCMEN", DRAMC_REG_DRAMC_PD_CTRL, DRAMC_PD_CTRL_DCMEN, 0x1},
104 	{"MISC_CG_CTRL5_R_CA_DLY_DCM_EN", DDRPHY_REG_MISC_CG_CTRL5, MISC_CG_CTRL5_R_CA_DLY_DCM_EN, 0x1},
105 	{"CLKAR_REQQUECLKRUN", DRAMC_REG_CLKAR, CLKAR_REQQUECLKRUN, 0x0},
106 	{"CA_DLL_ARPI1_RG_ARPISM_MCK_SEL_CA_REG_OPT", DDRPHY_REG_CA_DLL_ARPI1, CA_DLL_ARPI1_RG_ARPISM_MCK_SEL_CA_REG_OPT, 0x0},
107 	{"DRAMC_PD_CTRL_DCMENNOTRFC", DRAMC_REG_DRAMC_PD_CTRL, DRAMC_PD_CTRL_DCMENNOTRFC, 0x1},
108 	{"MISC_DUTYSCAN1_RX_EYE_SCAN_CG_EN", DDRPHY_REG_MISC_DUTYSCAN1, MISC_DUTYSCAN1_RX_EYE_SCAN_CG_EN, 0x0},
109 	{"TX_TRACKING_SET0_HMRRSEL_CGAR", DRAMC_REG_TX_TRACKING_SET0, TX_TRACKING_SET0_HMRRSEL_CGAR, 0x0},
110 	{"ACTIMING_CTRL_SEQCLKRUN", DRAMC_REG_ACTIMING_CTRL, ACTIMING_CTRL_SEQCLKRUN, 0x0},
111 	{"MISC_CTRL3_ARPI_CG_CLK_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_CG_CLK_OPT, 0x0},
112 	{"CMD_DEC_CTRL0_SELPH_CMD_CG_DIS", DRAMC_REG_CMD_DEC_CTRL0, CMD_DEC_CTRL0_SELPH_CMD_CG_DIS, 0x0},
113 	{"MISC_CTRL4_R_OPT2_CG_DQS", DDRPHY_REG_MISC_CTRL4, MISC_CTRL4_R_OPT2_CG_DQS, 0x1},
114 	{"TX_TRACKING_SET0_RDDQSOSC_CGAR", DRAMC_REG_TX_TRACKING_SET0, TX_TRACKING_SET0_RDDQSOSC_CGAR, 0x0},
115 	{"MISC_CTRL4_R_OPT2_CG_CMD", DDRPHY_REG_MISC_CTRL4, MISC_CTRL4_R_OPT2_CG_CMD, 0x1},
116 	{"DRAMC_PD_CTRL_PHYCLKDYNGEN", DRAMC_REG_DRAMC_PD_CTRL, DRAMC_PD_CTRL_PHYCLKDYNGEN, 0x1},
117 	{"MISC_CG_CTRL2_RG_MEM_DCM_DCM_EN", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_DCM_EN, 0x1},
118 	{"MISC_CTRL3_ARPI_CG_MCK_CA_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_CG_MCK_CA_OPT, 0x0},
119 	{"MISC_CG_CTRL2_RG_MEM_DCM_CG_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_CG_OFF_DISABLE, 0x1},
120 	{"MISC_CG_CTRL2_RG_MEM_DCM_APB_TOG", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_APB_TOG, 0x0},
121 	{"MISC_CG_CTRL2_RG_MEM_DCM_FORCE_OFF", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_FORCE_OFF, 0x0},
122 	{"DRAMC_PD_CTRL_COMBPHY_CLKENSAME", DRAMC_REG_DRAMC_PD_CTRL, DRAMC_PD_CTRL_COMBPHY_CLKENSAME, 0x0},
123 	{"MISC_CG_CTRL2_RG_PIPE0_CG_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_PIPE0_CG_OFF_DISABLE, 0x0},
124 	{"MISC_CTRL3_ARPI_CG_CMD_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_CG_CMD_OPT, 0x0},
125 	{"MISC_CTRL4_R_OPT2_CG_DQ", DDRPHY_REG_MISC_CTRL4, MISC_CTRL4_R_OPT2_CG_DQ, 0x1},
126 	{"MISC_CTRL3_ARPI_CG_DQ_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_CG_DQ_OPT, 0x0},
127 	{"MISC_CG_CTRL0_RG_CG_RX_COMB0_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_RX_COMB0_OFF_DISABLE, 0x0},
128 	{"DRAMC_PD_CTRL_COMBCLKCTRL", DRAMC_REG_DRAMC_PD_CTRL, DRAMC_PD_CTRL_COMBCLKCTRL, 0x1},
129 	{"MISC_CG_CTRL5_R_DQ1_DLY_DCM_EN", DDRPHY_REG_MISC_CG_CTRL5, MISC_CG_CTRL5_R_DQ1_DLY_DCM_EN, 0x1},
130 	{"MISC_CG_CTRL5_R_CA_PI_DCM_EN", DDRPHY_REG_MISC_CG_CTRL5, MISC_CG_CTRL5_R_CA_PI_DCM_EN, 0x1},
131 	{"MISC_CG_CTRL0_RG_CG_COMB_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_COMB_OFF_DISABLE, 0x0},
132 	{"MISC_CTRL3_ARPI_CG_DQS_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_CG_DQS_OPT, 0x0},
133 	{"TX_CG_SET0_TX_ATK_CLKRUN", DRAMC_REG_TX_CG_SET0, TX_CG_SET0_TX_ATK_CLKRUN, 0x0},
134 	{"ZQ_SET0_ZQCS_MASK_SEL_CGAR", DRAMC_REG_ZQ_SET0, ZQ_SET0_ZQCS_MASK_SEL_CGAR, 0x0},
135 	{"DRAMC_PD_CTRL_APHYCKCG_FIXOFF", DRAMC_REG_DRAMC_PD_CTRL, DRAMC_PD_CTRL_APHYCKCG_FIXOFF, 0x0},
136 	{"MISC_CG_CTRL2_RESERVED_MISC_CG_CTRL2_BIT30", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RESERVED_MISC_CG_CTRL2_BIT30, 0x0},
137 	{"MISC_CTRL4_R_OPT2_CG_CS", DDRPHY_REG_MISC_CTRL4, MISC_CTRL4_R_OPT2_CG_CS, 0x1},
138 	{"MISC_CG_CTRL0_RG_CG_IDLE_SYNC_EN", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_IDLE_SYNC_EN, 0x0},
139 	{"MISC_CTRL3_R_DDRPHY_COMB_CG_IG", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_R_DDRPHY_COMB_CG_IG, 0x0},
140 	{"MISC_CG_CTRL0_RG_CG_NAO_FORCE_OFF", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_NAO_FORCE_OFF, 0x0},
141 	{"DRAMC_PD_CTRL_DCMEN2", DRAMC_REG_DRAMC_PD_CTRL, DRAMC_PD_CTRL_DCMEN2, 0x1},
142 	{"MISC_CG_CTRL2_RG_MEM_DCM_DBC_EN", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_DBC_EN, 0x1},
143 	{"MISC_CG_CTRL2_RESERVED_MISC_CG_CTRL2_BIT27", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RESERVED_MISC_CG_CTRL2_BIT27, 0x0},
144 	{"MISC_CG_CTRL0_RG_CG_DRAMC_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_DRAMC_OFF_DISABLE, 0x0},
145 	{"MISC_CG_CTRL2_RG_MEM_DCM_DBC_CNT", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_DBC_CNT, 0x5},
146 	{"SCSMCTRL_CG_SCSM_CGAR", DRAMC_REG_SCSMCTRL_CG, SCSMCTRL_CG_SCSM_CGAR, 0x0},
147 	{"DRAMC_PD_CTRL_MIOCKCTRLOFF", DRAMC_REG_DRAMC_PD_CTRL, DRAMC_PD_CTRL_MIOCKCTRLOFF, 0x0},
148 	{"MISC_CTRL4_R_OPT2_CG_CLK", DDRPHY_REG_MISC_CTRL4, MISC_CTRL4_R_OPT2_CG_CLK, 0x1},
149 	{"MISC_CG_CTRL0_RG_CG_RX_CMD_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_RX_CMD_OFF_DISABLE, 0x0},
150 	{"MISC_CG_CTRL2_RG_MEM_DCM_FORCE_ON", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_FORCE_ON, 0x0},
151 	{"TX_CG_SET0_SELPH_4LCG_DIS", DRAMC_REG_TX_CG_SET0, TX_CG_SET0_SELPH_4LCG_DIS, 0x0},
152 	{"ACTIMING_CTRL_SEQCLKRUN3", DRAMC_REG_ACTIMING_CTRL, ACTIMING_CTRL_SEQCLKRUN3, 0x1},
153 	{"ACTIMING_CTRL_SEQCLKRUN2", DRAMC_REG_ACTIMING_CTRL, ACTIMING_CTRL_SEQCLKRUN2, 0x0},
154 	{"MISC_CG_CTRL5_R_DQ0_PI_DCM_EN", DDRPHY_REG_MISC_CG_CTRL5, MISC_CG_CTRL5_R_DQ0_PI_DCM_EN, 0x1},
155 	{"MISC_RX_AUTOK_CFG0_RX_CAL_CG_EN", DDRPHY_REG_MISC_RX_AUTOK_CFG0, MISC_RX_AUTOK_CFG0_RX_CAL_CG_EN, 0x0},
156 	{"MISC_CTRL3_ARPI_CG_MCK_DQ_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_CG_MCK_DQ_OPT, 0x0},
157 	{"MISC_CG_CTRL2_RG_PHY_CG_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_PHY_CG_OFF_DISABLE, 0x0},
158 	{"MISC_CG_CTRL0_RG_CG_COMB1_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_COMB1_OFF_DISABLE, 0x0},
159 	{"TX_CG_SET0_DWCLKRUN", DRAMC_REG_TX_CG_SET0, TX_CG_SET0_DWCLKRUN, 0x0},
160 	{"MISC_CG_CTRL0_RG_CG_EMI_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_EMI_OFF_DISABLE, 0x1},
161 	{"SREF_DPD_CTRL_SREF_CG_OPT", DRAMC_REG_SREF_DPD_CTRL, SREF_DPD_CTRL_SREF_CG_OPT, 0x0},
162 	{"TX_TRACKING_SET0_TXUIPI_CAL_CGAR", DRAMC_REG_TX_TRACKING_SET0, TX_TRACKING_SET0_TXUIPI_CAL_CGAR, 0x0},
163 	{"MISC_CTRL4_R_OPT2_MPDIV_CG", DDRPHY_REG_MISC_CTRL4, MISC_CTRL4_R_OPT2_MPDIV_CG, 0x1},
164 	{"TX_CG_SET0_WDATA_CG_DIS", DRAMC_REG_TX_CG_SET0, TX_CG_SET0_WDATA_CG_DIS, 0x0},
165 	{"MISC_CG_CTRL0_RG_CG_INFRA_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_INFRA_OFF_DISABLE, 0x0},
166 	{"MISC_CTRL4_R_OPT2_CG_MCK", DDRPHY_REG_MISC_CTRL4, MISC_CTRL4_R_OPT2_CG_MCK, 0x1},
167 	{"MISC_CG_CTRL2_RG_MEM_DCM_IDLE_FSEL", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_IDLE_FSEL, 0x3},
168 	{"MISC_CG_CTRL2_RG_MEM_DCM_APB_SEL", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_APB_SEL, 0x17},
169 	{"TX_CG_SET0_SELPH_CG_DIS", DRAMC_REG_TX_CG_SET0, TX_CG_SET0_SELPH_CG_DIS, 0x0},
170 	{"DRAMC_PD_CTRL_PHYGLUECLKRUN", DRAMC_REG_DRAMC_PD_CTRL, DRAMC_PD_CTRL_PHYGLUECLKRUN, 0x0},
171 	{"MISC_CG_CTRL5_R_DQ1_PI_DCM_EN", DDRPHY_REG_MISC_CG_CTRL5, MISC_CG_CTRL5_R_DQ1_PI_DCM_EN, 0x1},
172 	{"CLKAR_REQQUE_PACG_DIS", DRAMC_REG_CLKAR, CLKAR_REQQUE_PACG_DIS, 0x0},
173 	{"ZQ_SET0_ZQMASK_CGAR", DRAMC_REG_ZQ_SET0, ZQ_SET0_ZQMASK_CGAR, 0x0},
174 	{"MISC_CTRL4_R_OPT2_CG_DQM", DDRPHY_REG_MISC_CTRL4, MISC_CTRL4_R_OPT2_CG_DQM, 0x1},
175 };
176 
177 #else
178 // DCM Off
179 GOLDEN_FIELD_T shuf_golden_setting_anwer[] =
180 {
181 	{"SHU_B1_DQ8_R_DMRANK_CHG_PIPE_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMRANK_CHG_PIPE_CG_IG_B1, 0x1},
182 	{"MISC_SHU_RX_CG_CTRL_RX_PRECAL_CG_EN", DDRPHY_REG_MISC_SHU_RX_CG_CTRL, MISC_SHU_RX_CG_CTRL_RX_PRECAL_CG_EN, 0x0},
183 	{"SHU_CA_CMD8_R_DMDQSIEN_FLAG_SYNC_CG_IG_CA", DDRPHY_REG_SHU_CA_CMD8, SHU_CA_CMD8_R_DMDQSIEN_FLAG_SYNC_CG_IG_CA, 0x1},
184 	{"MISC_SHU_CG_CTRL0_R_PHY_MCK_CG_CTRL", DDRPHY_REG_MISC_SHU_CG_CTRL0, MISC_SHU_CG_CTRL0_R_PHY_MCK_CG_CTRL, 0x33403000},
185 	{"SHU_B1_DQ7_R_DMTX_ARPI_CG_DQS_NEW_B1", DDRPHY_REG_SHU_B1_DQ7, SHU_B1_DQ7_R_DMTX_ARPI_CG_DQS_NEW_B1, 0x0},
186 	{"SHU_B0_DQ8_R_RMRX_TOPHY_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_RMRX_TOPHY_CG_IG_B0, 0x1},
187 	{"SHU_B1_DQ8_R_DMRXDVS_RDSEL_TOG_PIPE_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMRXDVS_RDSEL_TOG_PIPE_CG_IG_B1, 0x1},
188 	{"SHU_CA_CMD8_R_DMDQSIEN_RDSEL_PIPE_CG_IG_CA", DDRPHY_REG_SHU_CA_CMD8, SHU_CA_CMD8_R_DMDQSIEN_RDSEL_PIPE_CG_IG_CA, 0x1},
189 	{"SHU_B0_DQ8_R_DMDQSIEN_RDSEL_PIPE_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMDQSIEN_RDSEL_PIPE_CG_IG_B0, 0x1},
190 	{"SHU_CA_CMD8_R_RMRX_TOPHY_CG_IG_CA", DDRPHY_REG_SHU_CA_CMD8, SHU_CA_CMD8_R_RMRX_TOPHY_CG_IG_CA, 0x1},
191 	{"SHU_CA_CMD7_R_DMTX_ARPI_CG_CS_NEW", DDRPHY_REG_SHU_CA_CMD7, SHU_CA_CMD7_R_DMTX_ARPI_CG_CS_NEW, 0x0},
192 	{"SHU_B1_DQ7_R_DMTX_ARPI_CG_DQM_NEW_B1", DDRPHY_REG_SHU_B1_DQ7, SHU_B1_DQ7_R_DMTX_ARPI_CG_DQM_NEW_B1, 0x0},
193 	{"SHU_B1_DQ8_R_DMDQSIEN_RDSEL_TOG_PIPE_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMDQSIEN_RDSEL_TOG_PIPE_CG_IG_B1, 0x1},
194 	{"SHU_CA_CMD8_R_RMRODTEN_CG_IG_CA", DDRPHY_REG_SHU_CA_CMD8, SHU_CA_CMD8_R_RMRODTEN_CG_IG_CA, 0x1},
195 	{"SHU_B0_DQ8_R_RMRODTEN_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_RMRODTEN_CG_IG_B0, 0x1},
196 	{"SHU_B1_DQ8_R_DMRANK_RXDLY_PIPE_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMRANK_RXDLY_PIPE_CG_IG_B1, 0x1},
197 	{"SHU_B0_DQ8_R_DMRXDVS_RDSEL_PIPE_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMRXDVS_RDSEL_PIPE_CG_IG_B0, 0x1},
198 	{"SHU_B1_DQ8_R_DMDQSIEN_RDSEL_PIPE_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMDQSIEN_RDSEL_PIPE_CG_IG_B1, 0x1},
199 	{"SHU_CA_CMD8_R_DMRANK_PIPE_CG_IG_CA", DDRPHY_REG_SHU_CA_CMD8, SHU_CA_CMD8_R_DMRANK_PIPE_CG_IG_CA, 0x1},
200 	{"SHU_B0_DQ8_R_DMRANK_CHG_PIPE_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMRANK_CHG_PIPE_CG_IG_B0, 0x1},
201 	{"MISC_SHU_ODTCTRL_RODTENSTB_SELPH_CG_IG", DDRPHY_REG_MISC_SHU_ODTCTRL, MISC_SHU_ODTCTRL_RODTENSTB_SELPH_CG_IG, 0x1},
202 	{"SHU_B1_DQ8_R_DMDQSIEN_FLAG_SYNC_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMDQSIEN_FLAG_SYNC_CG_IG_B1, 0x1},
203 	{"SHU_CA_CMD8_R_DMDQSIEN_FLAG_PIPE_CG_IG_CA", DDRPHY_REG_SHU_CA_CMD8, SHU_CA_CMD8_R_DMDQSIEN_FLAG_PIPE_CG_IG_CA, 0x1},
204 	{"SHU_B1_DQ8_R_DMRANK_PIPE_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMRANK_PIPE_CG_IG_B1, 0x1},
205 	{"SHU_B1_DQ8_R_RMRX_TOPHY_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_RMRX_TOPHY_CG_IG_B1, 0x1},
206 	{"SHU_B1_DQ8_R_DMDQSIEN_FLAG_PIPE_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMDQSIEN_FLAG_PIPE_CG_IG_B1, 0x1},
207 	{"SHU_B0_DQ8_R_DMRXDVS_RDSEL_TOG_PIPE_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMRXDVS_RDSEL_TOG_PIPE_CG_IG_B0, 0x1},
208 	{"SHU_CA_CMD8_R_DMRANK_CHG_PIPE_CG_IG_CA", DDRPHY_REG_SHU_CA_CMD8, SHU_CA_CMD8_R_DMRANK_CHG_PIPE_CG_IG_CA, 0x1},
209 	{"SHU_CA_CMD8_R_DMDQSIEN_RDSEL_TOG_PIPE_CG_IG_CA", DDRPHY_REG_SHU_CA_CMD8, SHU_CA_CMD8_R_DMDQSIEN_RDSEL_TOG_PIPE_CG_IG_CA, 0x1},
210 	{"SHU_B0_DQ8_R_DMRXDLY_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMRXDLY_CG_IG_B0, 0x1},
211 	{"SHU_CA_CMD7_R_DMTX_ARPI_CG_CMD_NEW", DDRPHY_REG_SHU_CA_CMD7, SHU_CA_CMD7_R_DMTX_ARPI_CG_CMD_NEW, 0x0},
212 	{"SHU_B0_DQ7_R_DMTX_ARPI_CG_DQM_NEW_B0", DDRPHY_REG_SHU_B0_DQ7, SHU_B0_DQ7_R_DMTX_ARPI_CG_DQM_NEW_B0, 0x0},
213 	{"SHU_B1_DQ8_R_RMRODTEN_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_RMRODTEN_CG_IG_B1, 0x1},
214 	{"SHU_B0_DQ8_R_DMDQSIEN_FLAG_SYNC_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMDQSIEN_FLAG_SYNC_CG_IG_B0, 0x1},
215 	{"SHU_B0_DQ8_R_DMDQSIEN_FLAG_PIPE_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMDQSIEN_FLAG_PIPE_CG_IG_B0, 0x1},
216 	{"SHU_CA_CMD13_RG_TX_ARCLKB_READ_BASE_DATA_TIE_EN_CA", DDRPHY_REG_SHU_CA_CMD13, SHU_CA_CMD13_RG_TX_ARCLKB_READ_BASE_DATA_TIE_EN_CA, 0x0},
217 	{"SHU_B1_DQ8_R_DMRXDVS_RDSEL_PIPE_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMRXDVS_RDSEL_PIPE_CG_IG_B1, 0x1},
218 	{"SHU_B0_DQ8_R_DMRANK_PIPE_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMRANK_PIPE_CG_IG_B0, 0x1},
219 	{"SHU_B0_DQ8_R_DMDQSIEN_RDSEL_TOG_PIPE_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMDQSIEN_RDSEL_TOG_PIPE_CG_IG_B0, 0x1},
220 	{"SHU_B0_DQ7_R_DMTX_ARPI_CG_DQ_NEW_B0", DDRPHY_REG_SHU_B0_DQ7, SHU_B0_DQ7_R_DMTX_ARPI_CG_DQ_NEW_B0, 0x0},
221 	{"SHU_B1_DQ7_R_DMTX_ARPI_CG_DQ_NEW_B1", DDRPHY_REG_SHU_B1_DQ7, SHU_B1_DQ7_R_DMTX_ARPI_CG_DQ_NEW_B1, 0x0},
222 	{"SHU_APHY_TX_PICG_CTRL_DDRPHY_CLK_EN_COMB_TX_OPT", DRAMC_REG_SHU_APHY_TX_PICG_CTRL, SHU_APHY_TX_PICG_CTRL_DDRPHY_CLK_EN_COMB_TX_OPT, 0x0},
223 	{"MISC_SHU_RX_CG_CTRL_RX_DQSIEN_RETRY_CG_EN", DDRPHY_REG_MISC_SHU_RX_CG_CTRL, MISC_SHU_RX_CG_CTRL_RX_DQSIEN_RETRY_CG_EN, 0x1},
224 	{"SHU_B0_DQ8_R_DMRANK_RXDLY_PIPE_CG_IG_B0", DDRPHY_REG_SHU_B0_DQ8, SHU_B0_DQ8_R_DMRANK_RXDLY_PIPE_CG_IG_B0, 0x1},
225 	{"SHU_B0_DQ7_R_DMTX_ARPI_CG_DQS_NEW_B0", DDRPHY_REG_SHU_B0_DQ7, SHU_B0_DQ7_R_DMTX_ARPI_CG_DQS_NEW_B0, 0x0},
226 	{"SHU_B1_DQ8_R_DMRXDLY_CG_IG_B1", DDRPHY_REG_SHU_B1_DQ8, SHU_B1_DQ8_R_DMRXDLY_CG_IG_B1, 0x1},
227 	{"MISC_SHU_RX_CG_CTRL_RX_RDSEL_TRACKING_CG_EN", DDRPHY_REG_MISC_SHU_RX_CG_CTRL, MISC_SHU_RX_CG_CTRL_RX_RDSEL_TRACKING_CG_EN, 0x1},
228 };
229 
230 GOLDEN_FIELD_T nonshuf_golden_setting_anwer[] =
231 {
232 	{"SCSMCTRL_CG_SCARB_SM_CGAR", DRAMC_REG_SCSMCTRL_CG, SCSMCTRL_CG_SCARB_SM_CGAR, 0x1},
233 	{"MISC_CG_CTRL5_R_DQ0_DLY_DCM_EN", DDRPHY_REG_MISC_CG_CTRL5, MISC_CG_CTRL5_R_DQ0_DLY_DCM_EN, 0x0},
234 	{"MISC_CG_CTRL0_RG_CG_PHY_OFF_DIABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_PHY_OFF_DIABLE, 0x1},
235 	{"MISC_CTRL3_ARPI_MPDIV_CG_CA_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_MPDIV_CG_CA_OPT, 0x0},
236 	{"DUMMY_RD_DUMMY_RD_PA_OPT", DRAMC_REG_DUMMY_RD, DUMMY_RD_DUMMY_RD_PA_OPT, 0x1},
237 	{"DVFS_CTRL0_DVFS_CG_OPT", DRAMC_REG_DVFS_CTRL0, DVFS_CTRL0_DVFS_CG_OPT, 0x1},
238 	{"MISC_CTRL3_ARPI_MPDIV_CG_DQ_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_MPDIV_CG_DQ_OPT, 0x0},
239 	{"MISC_CTRL3_ARPI_CG_MCTL_CA_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_CG_MCTL_CA_OPT, 0x0},
240 	{"MISC_CTRL4_R_OPT2_CG_DQSIEN", DDRPHY_REG_MISC_CTRL4, MISC_CTRL4_R_OPT2_CG_DQSIEN, 0x0},
241 	{"MISC_CG_CTRL2_RG_MEM_DCM_FSEL", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_FSEL, 0x0},
242 	{"MISC_CG_CTRL0_RG_CG_COMB0_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_COMB0_OFF_DISABLE, 0x1},
243 	{"RX_CG_SET0_RDATCKAR", DRAMC_REG_RX_CG_SET0, RX_CG_SET0_RDATCKAR, 0x1},
244 	{"MISC_CTRL3_ARPI_CG_MCTL_DQ_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_CG_MCTL_DQ_OPT, 0x0},
245 	{"MISC_CG_CTRL0_RG_CG_RX_COMB1_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_RX_COMB1_OFF_DISABLE, 0x1},
246 	{"MISC_CG_CTRL0_RG_CG_DRAMC_CK_OFF", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_DRAMC_CK_OFF, 0x0},
247 	{"MISC_CG_CTRL0_RG_CG_CMD_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_CMD_OFF_DISABLE, 0x1},
248 	{"MISC_CTRL3_R_DDRPHY_RX_PIPE_CG_IG", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_R_DDRPHY_RX_PIPE_CG_IG, 0x1},
249 	{"RX_CG_SET0_RDYCKAR", DRAMC_REG_RX_CG_SET0, RX_CG_SET0_RDYCKAR, 0x1},
250 	{"DDRCOMMON0_DISSTOP26M", DRAMC_REG_DDRCOMMON0, DDRCOMMON0_DISSTOP26M, 0x1},
251 	{"MISCTL0_REFP_ARBMASK_PBR2PBR_PA_DIS", DRAMC_REG_MISCTL0, MISCTL0_REFP_ARBMASK_PBR2PBR_PA_DIS, 0x1},
252 	{"DCM_CTRL0_BCLKAR", DRAMC_REG_DCM_CTRL0, DCM_CTRL0_BCLKAR, 0x1},
253 	{"DRAMC_PD_CTRL_DCMEN", DRAMC_REG_DRAMC_PD_CTRL, DRAMC_PD_CTRL_DCMEN, 0x0},
254 	{"MISC_CG_CTRL5_R_CA_DLY_DCM_EN", DDRPHY_REG_MISC_CG_CTRL5, MISC_CG_CTRL5_R_CA_DLY_DCM_EN, 0x0},
255 	{"CLKAR_REQQUECLKRUN", DRAMC_REG_CLKAR, CLKAR_REQQUECLKRUN, 0x1},
256 	{"CA_DLL_ARPI1_RG_ARPISM_MCK_SEL_CA_REG_OPT", DDRPHY_REG_CA_DLL_ARPI1, CA_DLL_ARPI1_RG_ARPISM_MCK_SEL_CA_REG_OPT, 0x0},
257 	{"DRAMC_PD_CTRL_DCMENNOTRFC", DRAMC_REG_DRAMC_PD_CTRL, DRAMC_PD_CTRL_DCMENNOTRFC, 0x0},
258 	{"MISC_DUTYSCAN1_RX_EYE_SCAN_CG_EN", DDRPHY_REG_MISC_DUTYSCAN1, MISC_DUTYSCAN1_RX_EYE_SCAN_CG_EN, 0x1},
259 	{"TX_TRACKING_SET0_HMRRSEL_CGAR", DRAMC_REG_TX_TRACKING_SET0, TX_TRACKING_SET0_HMRRSEL_CGAR, 0x1},
260 	{"ACTIMING_CTRL_SEQCLKRUN", DRAMC_REG_ACTIMING_CTRL, ACTIMING_CTRL_SEQCLKRUN, 0x1},
261 	{"MISC_CTRL3_ARPI_CG_CLK_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_CG_CLK_OPT, 0x0},
262 	{"CMD_DEC_CTRL0_SELPH_CMD_CG_DIS", DRAMC_REG_CMD_DEC_CTRL0, CMD_DEC_CTRL0_SELPH_CMD_CG_DIS, 0x1},
263 	{"MISC_CTRL4_R_OPT2_CG_DQS", DDRPHY_REG_MISC_CTRL4, MISC_CTRL4_R_OPT2_CG_DQS, 0x0},
264 	{"TX_TRACKING_SET0_RDDQSOSC_CGAR", DRAMC_REG_TX_TRACKING_SET0, TX_TRACKING_SET0_RDDQSOSC_CGAR, 0x1},
265 	{"MISC_CTRL4_R_OPT2_CG_CMD", DDRPHY_REG_MISC_CTRL4, MISC_CTRL4_R_OPT2_CG_CMD, 0x0},
266 	{"DRAMC_PD_CTRL_PHYCLKDYNGEN", DRAMC_REG_DRAMC_PD_CTRL, DRAMC_PD_CTRL_PHYCLKDYNGEN, 0x0},
267 	{"MISC_CG_CTRL2_RG_MEM_DCM_DCM_EN", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_DCM_EN, 0x0},
268 	{"MISC_CTRL3_ARPI_CG_MCK_CA_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_CG_MCK_CA_OPT, 0x0},
269 	{"MISC_CG_CTRL2_RG_MEM_DCM_CG_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_CG_OFF_DISABLE, 0x1},
270 	{"MISC_CG_CTRL2_RG_MEM_DCM_APB_TOG", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_APB_TOG, 0x0},
271 	{"MISC_CG_CTRL2_RG_MEM_DCM_FORCE_OFF", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_FORCE_OFF, 0x0},
272 	{"DRAMC_PD_CTRL_COMBPHY_CLKENSAME", DRAMC_REG_DRAMC_PD_CTRL, DRAMC_PD_CTRL_COMBPHY_CLKENSAME, 0x1},
273 	{"MISC_CG_CTRL2_RG_PIPE0_CG_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_PIPE0_CG_OFF_DISABLE, 0x0},
274 	{"MISC_CTRL3_ARPI_CG_CMD_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_CG_CMD_OPT, 0x0},
275 	{"MISC_CTRL4_R_OPT2_CG_DQ", DDRPHY_REG_MISC_CTRL4, MISC_CTRL4_R_OPT2_CG_DQ, 0x0},
276 	{"MISC_CTRL3_ARPI_CG_DQ_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_CG_DQ_OPT, 0x0},
277 	{"MISC_CG_CTRL0_RG_CG_RX_COMB0_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_RX_COMB0_OFF_DISABLE, 0x1},
278 	{"DRAMC_PD_CTRL_COMBCLKCTRL", DRAMC_REG_DRAMC_PD_CTRL, DRAMC_PD_CTRL_COMBCLKCTRL, 0x0},
279 	{"MISC_CG_CTRL5_R_DQ1_DLY_DCM_EN", DDRPHY_REG_MISC_CG_CTRL5, MISC_CG_CTRL5_R_DQ1_DLY_DCM_EN, 0x0},
280 	{"MISC_CG_CTRL5_R_CA_PI_DCM_EN", DDRPHY_REG_MISC_CG_CTRL5, MISC_CG_CTRL5_R_CA_PI_DCM_EN, 0x0},
281 	{"MISC_CG_CTRL0_RG_CG_COMB_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_COMB_OFF_DISABLE, 0x1},
282 	{"MISC_CTRL3_ARPI_CG_DQS_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_CG_DQS_OPT, 0x0},
283 	{"TX_CG_SET0_TX_ATK_CLKRUN", DRAMC_REG_TX_CG_SET0, TX_CG_SET0_TX_ATK_CLKRUN, 0x1},
284 	{"ZQ_SET0_ZQCS_MASK_SEL_CGAR", DRAMC_REG_ZQ_SET0, ZQ_SET0_ZQCS_MASK_SEL_CGAR, 0x1},
285 	{"DRAMC_PD_CTRL_APHYCKCG_FIXOFF", DRAMC_REG_DRAMC_PD_CTRL, DRAMC_PD_CTRL_APHYCKCG_FIXOFF, 0x1},
286 	{"MISC_CG_CTRL2_RESERVED_MISC_CG_CTRL2_BIT30", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RESERVED_MISC_CG_CTRL2_BIT30, 0x0},
287 	{"MISC_CTRL4_R_OPT2_CG_CS", DDRPHY_REG_MISC_CTRL4, MISC_CTRL4_R_OPT2_CG_CS, 0x0},
288 	{"MISC_CG_CTRL0_RG_CG_IDLE_SYNC_EN", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_IDLE_SYNC_EN, 0x0},
289 	{"MISC_CTRL3_R_DDRPHY_COMB_CG_IG", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_R_DDRPHY_COMB_CG_IG, 0x1},
290 	{"MISC_CG_CTRL0_RG_CG_NAO_FORCE_OFF", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_NAO_FORCE_OFF, 0x0},
291 	{"DRAMC_PD_CTRL_DCMEN2", DRAMC_REG_DRAMC_PD_CTRL, DRAMC_PD_CTRL_DCMEN2, 0x0},
292 	{"MISC_CG_CTRL2_RG_MEM_DCM_DBC_EN", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_DBC_EN, 0x1},
293 	{"MISC_CG_CTRL2_RESERVED_MISC_CG_CTRL2_BIT27", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RESERVED_MISC_CG_CTRL2_BIT27, 0x0},
294 	{"MISC_CG_CTRL0_RG_CG_DRAMC_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_DRAMC_OFF_DISABLE, 0x1},
295 	{"MISC_CG_CTRL2_RG_MEM_DCM_DBC_CNT", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_DBC_CNT, 0x5},
296 	{"SCSMCTRL_CG_SCSM_CGAR", DRAMC_REG_SCSMCTRL_CG, SCSMCTRL_CG_SCSM_CGAR, 0x1},
297 	{"DRAMC_PD_CTRL_MIOCKCTRLOFF", DRAMC_REG_DRAMC_PD_CTRL, DRAMC_PD_CTRL_MIOCKCTRLOFF, 0x1},
298 	{"MISC_CTRL4_R_OPT2_CG_CLK", DDRPHY_REG_MISC_CTRL4, MISC_CTRL4_R_OPT2_CG_CLK, 0x0},
299 	{"MISC_CG_CTRL0_RG_CG_RX_CMD_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_RX_CMD_OFF_DISABLE, 0x1},
300 	{"MISC_CG_CTRL2_RG_MEM_DCM_FORCE_ON", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_FORCE_ON, 0x1},
301 	{"TX_CG_SET0_SELPH_4LCG_DIS", DRAMC_REG_TX_CG_SET0, TX_CG_SET0_SELPH_4LCG_DIS, 0x1},
302 	{"ACTIMING_CTRL_SEQCLKRUN3", DRAMC_REG_ACTIMING_CTRL, ACTIMING_CTRL_SEQCLKRUN3, 0x1},
303 	{"ACTIMING_CTRL_SEQCLKRUN2", DRAMC_REG_ACTIMING_CTRL, ACTIMING_CTRL_SEQCLKRUN2, 0x1},
304 	{"MISC_CG_CTRL5_R_DQ0_PI_DCM_EN", DDRPHY_REG_MISC_CG_CTRL5, MISC_CG_CTRL5_R_DQ0_PI_DCM_EN, 0x0},
305 	{"MISC_RX_AUTOK_CFG0_RX_CAL_CG_EN", DDRPHY_REG_MISC_RX_AUTOK_CFG0, MISC_RX_AUTOK_CFG0_RX_CAL_CG_EN, 0x1},
306 	{"MISC_CTRL3_ARPI_CG_MCK_DQ_OPT", DDRPHY_REG_MISC_CTRL3, MISC_CTRL3_ARPI_CG_MCK_DQ_OPT, 0x0},
307 	{"MISC_CG_CTRL2_RG_PHY_CG_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_PHY_CG_OFF_DISABLE, 0x0},
308 	{"MISC_CG_CTRL0_RG_CG_COMB1_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_COMB1_OFF_DISABLE, 0x1},
309 	{"TX_CG_SET0_DWCLKRUN", DRAMC_REG_TX_CG_SET0, TX_CG_SET0_DWCLKRUN, 0x1},
310 	{"MISC_CG_CTRL0_RG_CG_EMI_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_EMI_OFF_DISABLE, 0x1},
311 	{"SREF_DPD_CTRL_SREF_CG_OPT", DRAMC_REG_SREF_DPD_CTRL, SREF_DPD_CTRL_SREF_CG_OPT, 0x1},
312 	{"TX_TRACKING_SET0_TXUIPI_CAL_CGAR", DRAMC_REG_TX_TRACKING_SET0, TX_TRACKING_SET0_TXUIPI_CAL_CGAR, 0x1},
313 	{"MISC_CTRL4_R_OPT2_MPDIV_CG", DDRPHY_REG_MISC_CTRL4, MISC_CTRL4_R_OPT2_MPDIV_CG, 0x0},
314 	{"TX_CG_SET0_WDATA_CG_DIS", DRAMC_REG_TX_CG_SET0, TX_CG_SET0_WDATA_CG_DIS, 0x1},
315 	{"MISC_CG_CTRL0_RG_CG_INFRA_OFF_DISABLE", DDRPHY_REG_MISC_CG_CTRL0, MISC_CG_CTRL0_RG_CG_INFRA_OFF_DISABLE, 0x1},
316 	{"MISC_CTRL4_R_OPT2_CG_MCK", DDRPHY_REG_MISC_CTRL4, MISC_CTRL4_R_OPT2_CG_MCK, 0x0},
317 	{"MISC_CG_CTRL2_RG_MEM_DCM_IDLE_FSEL", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_IDLE_FSEL, 0x3},
318 	{"MISC_CG_CTRL2_RG_MEM_DCM_APB_SEL", DDRPHY_REG_MISC_CG_CTRL2, MISC_CG_CTRL2_RG_MEM_DCM_APB_SEL, 0x17},
319 	{"TX_CG_SET0_SELPH_CG_DIS", DRAMC_REG_TX_CG_SET0, TX_CG_SET0_SELPH_CG_DIS, 0x1},
320 	{"DRAMC_PD_CTRL_PHYGLUECLKRUN", DRAMC_REG_DRAMC_PD_CTRL, DRAMC_PD_CTRL_PHYGLUECLKRUN, 0x1},
321 	{"MISC_CG_CTRL5_R_DQ1_PI_DCM_EN", DDRPHY_REG_MISC_CG_CTRL5, MISC_CG_CTRL5_R_DQ1_PI_DCM_EN, 0x0},
322 	{"CLKAR_REQQUE_PACG_DIS", DRAMC_REG_CLKAR, CLKAR_REQQUE_PACG_DIS, 0x7fff},
323 	{"ZQ_SET0_ZQMASK_CGAR", DRAMC_REG_ZQ_SET0, ZQ_SET0_ZQMASK_CGAR, 0x1},
324 	{"MISC_CTRL4_R_OPT2_CG_DQM", DDRPHY_REG_MISC_CTRL4, MISC_CTRL4_R_OPT2_CG_DQM, 0x0},
325 };
326 
327 #endif
328 #endif
329 
EnableCommonDCMNonShuffle(DRAMC_CTX_T * p)330 static void EnableCommonDCMNonShuffle(DRAMC_CTX_T *p)
331 {
332 	vIO32WriteFldAlign_All(DRAMC_REG_ACTIMING_CTRL, 0x1, ACTIMING_CTRL_SEQCLKRUN3);
333 	vIO32WriteFldMulti_All(DDRPHY_REG_MISC_CG_CTRL0,
334 			P_Fld(0x1, MISC_CG_CTRL0_RG_CG_EMI_OFF_DISABLE) |
335 			P_Fld(0x0, MISC_CG_CTRL0_RG_CG_IDLE_SYNC_EN) |
336 			P_Fld(0x0, MISC_CG_CTRL0_RG_CG_NAO_FORCE_OFF) |
337 			P_Fld(0x0, MISC_CG_CTRL0_RG_CG_DRAMC_CK_OFF));
338 	vIO32WriteFldMulti_All(DDRPHY_REG_MISC_CG_CTRL2,
339 			P_Fld(0x1, MISC_CG_CTRL2_RG_MEM_DCM_CG_OFF_DISABLE) |
340 			P_Fld(0x17, MISC_CG_CTRL2_RG_MEM_DCM_APB_SEL) |
341 			P_Fld(0x0, MISC_CG_CTRL2_RG_MEM_DCM_FSEL) |
342 			P_Fld(0x0, MISC_CG_CTRL2_RESERVED_MISC_CG_CTRL2_BIT27) |
343 			P_Fld(0x3, MISC_CG_CTRL2_RG_MEM_DCM_IDLE_FSEL) |
344 			P_Fld(0x0, MISC_CG_CTRL2_RESERVED_MISC_CG_CTRL2_BIT30) |
345 			P_Fld(0x0, MISC_CG_CTRL2_RG_MEM_DCM_FORCE_OFF) |
346 			P_Fld(0x1, MISC_CG_CTRL2_RG_MEM_DCM_DBC_EN) |
347 			P_Fld(0x0, MISC_CG_CTRL2_RG_PHY_CG_OFF_DISABLE) |
348 			P_Fld(0x0, MISC_CG_CTRL2_RG_PIPE0_CG_OFF_DISABLE) |
349 			P_Fld(0x0, MISC_CG_CTRL2_RG_MEM_DCM_APB_TOG) |
350 			P_Fld(0x5, MISC_CG_CTRL2_RG_MEM_DCM_DBC_CNT));
351 	// RG group needs to be toggled!!
352 	vIO32WriteFldAlign_All(DDRPHY_REG_MISC_CG_CTRL2, 1, MISC_CG_CTRL2_RG_MEM_DCM_APB_TOG);
353 	vIO32WriteFldAlign_All(DDRPHY_REG_MISC_CG_CTRL2, 0, MISC_CG_CTRL2_RG_MEM_DCM_APB_TOG);
354 	vIO32WriteFldAlign_All(DDRPHY_REG_CA_DLL_ARPI1, 0x0, CA_DLL_ARPI1_RG_ARPISM_MCK_SEL_CA_REG_OPT);
355 	vIO32WriteFldAlign_All(DRAMC_REG_DUMMY_RD, 0x1, DUMMY_RD_DUMMY_RD_PA_OPT);
356 	vIO32WriteFldMulti_All(DDRPHY_REG_MISC_CTRL3,
357 			P_Fld(0x0, MISC_CTRL3_ARPI_CG_DQS_OPT) |
358 			P_Fld(0x0, MISC_CTRL3_ARPI_MPDIV_CG_CA_OPT) |
359 			P_Fld(0x0, MISC_CTRL3_ARPI_CG_DQ_OPT) |
360 			P_Fld(0x0, MISC_CTRL3_ARPI_CG_MCK_DQ_OPT) |
361 			P_Fld(0x0, MISC_CTRL3_ARPI_CG_CMD_OPT) |
362 			P_Fld(0x0, MISC_CTRL3_ARPI_CG_MCTL_DQ_OPT) |
363 			P_Fld(0x0, MISC_CTRL3_ARPI_CG_MCTL_CA_OPT) |
364 			P_Fld(0x0, MISC_CTRL3_ARPI_CG_CLK_OPT) |
365 			P_Fld(0x0, MISC_CTRL3_ARPI_MPDIV_CG_DQ_OPT) |
366 			P_Fld(0x0, MISC_CTRL3_ARPI_CG_MCK_CA_OPT));
367 return;
368 }
369 
EnableCommonDCMShuffle(DRAMC_CTX_T * p,U32 u4DramcShuOffset,U32 u4DDRPhyShuOffset)370 static void EnableCommonDCMShuffle(DRAMC_CTX_T *p, U32 u4DramcShuOffset, U32 u4DDRPhyShuOffset)
371 {
372 	vIO32WriteFldAlign_All(DDRPHY_REG_SHU_CA_CMD13 + u4DDRPhyShuOffset, 0x0, SHU_CA_CMD13_RG_TX_ARCLKB_READ_BASE_DATA_TIE_EN_CA);
373 	vIO32WriteFldMulti_All(DDRPHY_REG_MISC_SHU_RX_CG_CTRL + u4DDRPhyShuOffset,
374 			P_Fld(0x1, MISC_SHU_RX_CG_CTRL_RX_DQSIEN_RETRY_CG_EN) |
375 			P_Fld(0x1, MISC_SHU_RX_CG_CTRL_RX_RDSEL_TRACKING_CG_EN));
376 	vIO32WriteFldMulti_All(DDRPHY_REG_SHU_B0_DQ8 + u4DDRPhyShuOffset,
377 			P_Fld(0x1, SHU_B0_DQ8_R_DMRXDLY_CG_IG_B0) |
378 			P_Fld(0x1, SHU_B0_DQ8_R_RMRX_TOPHY_CG_IG_B0));
379 	vIO32WriteFldAlign_All(DDRPHY_REG_MISC_SHU_CG_CTRL0 + u4DDRPhyShuOffset, 0x33403000, MISC_SHU_CG_CTRL0_R_PHY_MCK_CG_CTRL);
380 	vIO32WriteFldMulti_All(DDRPHY_REG_SHU_B1_DQ8 + u4DDRPhyShuOffset,
381 			P_Fld(0x1, SHU_B1_DQ8_R_RMRX_TOPHY_CG_IG_B1) |
382 			P_Fld(0x1, SHU_B1_DQ8_R_DMRXDLY_CG_IG_B1));
383 	vIO32WriteFldMulti_All(DDRPHY_REG_SHU_B1_DQ7 + u4DDRPhyShuOffset,
384 			P_Fld(0x0, SHU_B1_DQ7_R_DMTX_ARPI_CG_DQS_NEW_B1) |
385 			P_Fld(0x0, SHU_B1_DQ7_R_DMTX_ARPI_CG_DQM_NEW_B1) |
386 			P_Fld(0x0, SHU_B1_DQ7_R_DMTX_ARPI_CG_DQ_NEW_B1));
387 	vIO32WriteFldMulti_All(DDRPHY_REG_SHU_CA_CMD7 + u4DDRPhyShuOffset,
388 			P_Fld(0x0, SHU_CA_CMD7_R_DMTX_ARPI_CG_CS_NEW) |
389 			P_Fld(0x0, SHU_CA_CMD7_R_DMTX_ARPI_CG_CMD_NEW));
390 #if TX_PICG_NEW_MODE
391 	vIO32WriteFldMulti_All(DDRPHY_REG_SHU_B0_DQ7 + u4DDRPhyShuOffset,
392 			P_Fld(0x0, SHU_B0_DQ7_R_DMTX_ARPI_CG_DQ_NEW_B0) |
393 			P_Fld(0x0, SHU_B0_DQ7_R_DMTX_ARPI_CG_DQM_NEW_B0) |
394 			P_Fld(0x0, SHU_B0_DQ7_R_DMTX_ARPI_CG_DQS_NEW_B0));
395 #endif
396 return;
397 }
398 
EnableDramcPhyDCMNonShuffle(DRAMC_CTX_T * p,bool bEn)399 void EnableDramcPhyDCMNonShuffle(DRAMC_CTX_T *p, bool bEn)
400 {
401 	// Special case
402 	EnableCommonDCMNonShuffle(p);
403 
404 	if(bEn)
405 	{
406 		vIO32WriteFldMulti_All(DRAMC_REG_TX_CG_SET0,
407 				P_Fld(0x0, TX_CG_SET0_DWCLKRUN) |
408 				P_Fld(0x0, TX_CG_SET0_SELPH_CG_DIS) |
409 				P_Fld(0x0, TX_CG_SET0_SELPH_4LCG_DIS) |
410 				P_Fld(0x0, TX_CG_SET0_TX_ATK_CLKRUN) |
411 				P_Fld(0x0, TX_CG_SET0_WDATA_CG_DIS));
412 		vIO32WriteFldMulti_All(DDRPHY_REG_MISC_CG_CTRL5,
413 				P_Fld(0x1, MISC_CG_CTRL5_R_DQ1_DLY_DCM_EN) |
414 				P_Fld(0x1, MISC_CG_CTRL5_R_DQ1_PI_DCM_EN) |
415 				P_Fld(0x1, MISC_CG_CTRL5_R_DQ0_PI_DCM_EN) |
416 				P_Fld(0x1, MISC_CG_CTRL5_R_CA_PI_DCM_EN) |
417 				P_Fld(0x1, MISC_CG_CTRL5_R_DQ0_DLY_DCM_EN) |
418 				P_Fld(0x1, MISC_CG_CTRL5_R_CA_DLY_DCM_EN));
419 		vIO32WriteFldMulti_All(DDRPHY_REG_MISC_CG_CTRL0,
420 				P_Fld(0x0, MISC_CG_CTRL0_RG_CG_DRAMC_OFF_DISABLE) |
421 				P_Fld(0x0, MISC_CG_CTRL0_RG_CG_COMB_OFF_DISABLE) |
422 				P_Fld(0x0, MISC_CG_CTRL0_RG_CG_CMD_OFF_DISABLE) |
423 				P_Fld(0x0, MISC_CG_CTRL0_RG_CG_COMB0_OFF_DISABLE) |
424 				P_Fld(0x0, MISC_CG_CTRL0_RG_CG_RX_COMB1_OFF_DISABLE) |
425 				P_Fld(0x0, MISC_CG_CTRL0_RG_CG_RX_COMB0_OFF_DISABLE) |
426 				P_Fld(0x0, MISC_CG_CTRL0_RG_CG_INFRA_OFF_DISABLE) |
427 				P_Fld(0x0, MISC_CG_CTRL0_RG_CG_PHY_OFF_DIABLE) |
428 				P_Fld(0x0, MISC_CG_CTRL0_RG_CG_COMB1_OFF_DISABLE) |
429 				P_Fld(0x0, MISC_CG_CTRL0_RG_CG_RX_CMD_OFF_DISABLE));
430 		vIO32WriteFldMulti_All(DDRPHY_REG_MISC_CG_CTRL2,
431 				P_Fld(0x0, MISC_CG_CTRL2_RG_MEM_DCM_FORCE_ON) |
432 				P_Fld(0x1, MISC_CG_CTRL2_RG_MEM_DCM_DCM_EN));
433 		// RG group needs to be toggled!!
434 		vIO32WriteFldAlign_All(DDRPHY_REG_MISC_CG_CTRL2, 1, MISC_CG_CTRL2_RG_MEM_DCM_APB_TOG);
435 		vIO32WriteFldAlign_All(DDRPHY_REG_MISC_CG_CTRL2, 0, MISC_CG_CTRL2_RG_MEM_DCM_APB_TOG);
436 		vIO32WriteFldAlign_All(DRAMC_REG_MISCTL0, 0x0, MISCTL0_REFP_ARBMASK_PBR2PBR_PA_DIS);
437 		vIO32WriteFldAlign_All(DRAMC_REG_SREF_DPD_CTRL, 0x0, SREF_DPD_CTRL_SREF_CG_OPT);
438 		vIO32WriteFldMulti_All(DRAMC_REG_RX_CG_SET0,
439 				P_Fld(0x0, RX_CG_SET0_RDYCKAR) |
440 				P_Fld(0x0, RX_CG_SET0_RDATCKAR));
441 		vIO32WriteFldMulti_All(DRAMC_REG_ACTIMING_CTRL,
442 				P_Fld(0x0, ACTIMING_CTRL_SEQCLKRUN2) |
443 				P_Fld(0x0, ACTIMING_CTRL_SEQCLKRUN));
444 		vIO32WriteFldMulti_All(DRAMC_REG_SCSMCTRL_CG,
445 				P_Fld(0x0, SCSMCTRL_CG_SCARB_SM_CGAR) |
446 				P_Fld(0x0, SCSMCTRL_CG_SCSM_CGAR));
447 		vIO32WriteFldAlign_All(DRAMC_REG_CMD_DEC_CTRL0, 0x0, CMD_DEC_CTRL0_SELPH_CMD_CG_DIS);
448 		vIO32WriteFldMulti_All(DRAMC_REG_CLKAR,
449 				P_Fld(0x0, CLKAR_REQQUE_PACG_DIS) |
450 				P_Fld(0x0, CLKAR_REQQUECLKRUN));
451 		vIO32WriteFldAlign_All(DDRPHY_REG_MISC_DUTYSCAN1, 0x0, MISC_DUTYSCAN1_RX_EYE_SCAN_CG_EN);
452 		vIO32WriteFldAlign_All(DRAMC_REG_DDRCOMMON0, 0x0, DDRCOMMON0_DISSTOP26M);
453 		vIO32WriteFldAlign_All(DRAMC_REG_DVFS_CTRL0, 0x0, DVFS_CTRL0_DVFS_CG_OPT);
454 		vIO32WriteFldAlign_All(DRAMC_REG_DCM_CTRL0, 0x0, DCM_CTRL0_BCLKAR);
455 		vIO32WriteFldMulti_All(DRAMC_REG_DRAMC_PD_CTRL,
456 				P_Fld(0x1, DRAMC_PD_CTRL_PHYCLKDYNGEN) |
457 				P_Fld(0x1, DRAMC_PD_CTRL_DCMEN2) |
458 				P_Fld(0x1, DRAMC_PD_CTRL_DCMEN) |
459 				P_Fld(0x0, DRAMC_PD_CTRL_PHYGLUECLKRUN) |
460 				P_Fld(0x0, DRAMC_PD_CTRL_COMBPHY_CLKENSAME) |
461 				P_Fld(0x0, DRAMC_PD_CTRL_APHYCKCG_FIXOFF) |
462 				P_Fld(0x0, DRAMC_PD_CTRL_MIOCKCTRLOFF) |
463 				P_Fld(0x1, DRAMC_PD_CTRL_DCMENNOTRFC) |
464 				P_Fld(0x1, DRAMC_PD_CTRL_COMBCLKCTRL));
465 		vIO32WriteFldMulti_All(DDRPHY_REG_MISC_CTRL3,
466 				P_Fld(0x0, MISC_CTRL3_R_DDRPHY_RX_PIPE_CG_IG) |
467 				P_Fld(0x0, MISC_CTRL3_R_DDRPHY_COMB_CG_IG));
468 		vIO32WriteFldMulti_All(DDRPHY_REG_MISC_CTRL4,
469 #if (RX_PICG_NEW_MODE || TX_PICG_NEW_MODE)
470 				P_Fld(0x1, MISC_CTRL4_R_OPT2_CG_MCK) |
471 				P_Fld(0x1, MISC_CTRL4_R_OPT2_MPDIV_CG) |
472 #endif
473 #if RX_PICG_NEW_MODE
474 				P_Fld(0x1, MISC_CTRL4_R_OPT2_CG_DQSIEN) |
475 #endif
476 #if TX_PICG_NEW_MODE
477 				P_Fld(0x1, MISC_CTRL4_R_OPT2_CG_DQ)  |
478 				P_Fld(0x1, MISC_CTRL4_R_OPT2_CG_DQS) |
479 				P_Fld(0x1, MISC_CTRL4_R_OPT2_CG_DQM) |
480 #endif
481 				P_Fld(0x1, MISC_CTRL4_R_OPT2_CG_CMD) |
482 				P_Fld(0x1, MISC_CTRL4_R_OPT2_CG_CLK) |
483 				P_Fld(0x1, MISC_CTRL4_R_OPT2_CG_CS));
484 		vIO32WriteFldMulti_All(DRAMC_REG_TX_TRACKING_SET0,
485 				P_Fld(0x0, TX_TRACKING_SET0_TXUIPI_CAL_CGAR) |
486 				P_Fld(0x0, TX_TRACKING_SET0_RDDQSOSC_CGAR) |
487 				P_Fld(0x0, TX_TRACKING_SET0_HMRRSEL_CGAR));
488 		vIO32WriteFldMulti_All(DRAMC_REG_ZQ_SET0,
489 				P_Fld(0x0, ZQ_SET0_ZQCS_MASK_SEL_CGAR) |
490 				P_Fld(0x0, ZQ_SET0_ZQMASK_CGAR));
491 		vIO32WriteFldAlign_All(DDRPHY_REG_MISC_RX_AUTOK_CFG0, 0x0, MISC_RX_AUTOK_CFG0_RX_CAL_CG_EN);
492 	}
493 	else
494 	{
495 		vIO32WriteFldMulti_All(DRAMC_REG_TX_CG_SET0,
496 				P_Fld(0x1, TX_CG_SET0_DWCLKRUN) |
497 				P_Fld(0x1, TX_CG_SET0_SELPH_CG_DIS) |
498 				P_Fld(0x1, TX_CG_SET0_SELPH_4LCG_DIS) |
499 				P_Fld(0x1, TX_CG_SET0_TX_ATK_CLKRUN) |
500 				P_Fld(0x1, TX_CG_SET0_WDATA_CG_DIS));
501 		vIO32WriteFldMulti_All(DDRPHY_REG_MISC_CG_CTRL5,
502 				P_Fld(0x0, MISC_CG_CTRL5_R_DQ1_DLY_DCM_EN) |
503 				P_Fld(0x0, MISC_CG_CTRL5_R_DQ1_PI_DCM_EN) |
504 				P_Fld(0x0, MISC_CG_CTRL5_R_DQ0_PI_DCM_EN) |
505 				P_Fld(0x0, MISC_CG_CTRL5_R_CA_PI_DCM_EN) |
506 				P_Fld(0x0, MISC_CG_CTRL5_R_DQ0_DLY_DCM_EN) |
507 				P_Fld(0x0, MISC_CG_CTRL5_R_CA_DLY_DCM_EN));
508 		vIO32WriteFldMulti_All(DDRPHY_REG_MISC_CG_CTRL0,
509 				P_Fld(0x1, MISC_CG_CTRL0_RG_CG_DRAMC_OFF_DISABLE) |
510 				P_Fld(0x1, MISC_CG_CTRL0_RG_CG_COMB_OFF_DISABLE) |
511 				P_Fld(0x1, MISC_CG_CTRL0_RG_CG_CMD_OFF_DISABLE) |
512 				P_Fld(0x1, MISC_CG_CTRL0_RG_CG_COMB0_OFF_DISABLE) |
513 				P_Fld(0x1, MISC_CG_CTRL0_RG_CG_RX_COMB1_OFF_DISABLE) |
514 				P_Fld(0x1, MISC_CG_CTRL0_RG_CG_RX_COMB0_OFF_DISABLE) |
515 				P_Fld(0x1, MISC_CG_CTRL0_RG_CG_INFRA_OFF_DISABLE) |
516 				P_Fld(0x1, MISC_CG_CTRL0_RG_CG_PHY_OFF_DIABLE) |
517 				P_Fld(0x1, MISC_CG_CTRL0_RG_CG_COMB1_OFF_DISABLE) |
518 				P_Fld(0x1, MISC_CG_CTRL0_RG_CG_RX_CMD_OFF_DISABLE));
519 		vIO32WriteFldMulti_All(DDRPHY_REG_MISC_CG_CTRL2,
520 				P_Fld(0x1, MISC_CG_CTRL2_RG_MEM_DCM_FORCE_ON) |
521 				P_Fld(0x0, MISC_CG_CTRL2_RG_MEM_DCM_DCM_EN));
522 		// RG group needs to be toggled!!
523 		vIO32WriteFldAlign_All(DDRPHY_REG_MISC_CG_CTRL2, 1, MISC_CG_CTRL2_RG_MEM_DCM_APB_TOG);
524 		vIO32WriteFldAlign_All(DDRPHY_REG_MISC_CG_CTRL2, 0, MISC_CG_CTRL2_RG_MEM_DCM_APB_TOG);
525 		vIO32WriteFldAlign_All(DRAMC_REG_MISCTL0, 0x1, MISCTL0_REFP_ARBMASK_PBR2PBR_PA_DIS);
526 		vIO32WriteFldAlign_All(DRAMC_REG_SREF_DPD_CTRL, 0x1, SREF_DPD_CTRL_SREF_CG_OPT);
527 		vIO32WriteFldMulti_All(DRAMC_REG_RX_CG_SET0,
528 				P_Fld(0x1, RX_CG_SET0_RDYCKAR) |
529 				P_Fld(0x1, RX_CG_SET0_RDATCKAR));
530 		vIO32WriteFldMulti_All(DRAMC_REG_ACTIMING_CTRL,
531 				P_Fld(0x1, ACTIMING_CTRL_SEQCLKRUN2) |
532 				P_Fld(0x1, ACTIMING_CTRL_SEQCLKRUN));
533 		vIO32WriteFldMulti_All(DRAMC_REG_SCSMCTRL_CG,
534 				P_Fld(0x1, SCSMCTRL_CG_SCARB_SM_CGAR) |
535 				P_Fld(0x1, SCSMCTRL_CG_SCSM_CGAR));
536 		vIO32WriteFldAlign_All(DRAMC_REG_CMD_DEC_CTRL0, 0x1, CMD_DEC_CTRL0_SELPH_CMD_CG_DIS);
537 		vIO32WriteFldMulti_All(DRAMC_REG_CLKAR,
538 				P_Fld(0x7fff, CLKAR_REQQUE_PACG_DIS) |
539 				P_Fld(0x1, CLKAR_REQQUECLKRUN));
540 		vIO32WriteFldAlign_All(DDRPHY_REG_MISC_DUTYSCAN1, 0x1, MISC_DUTYSCAN1_RX_EYE_SCAN_CG_EN);
541 		vIO32WriteFldAlign_All(DRAMC_REG_DDRCOMMON0, 0x1, DDRCOMMON0_DISSTOP26M);
542 		vIO32WriteFldAlign_All(DRAMC_REG_DVFS_CTRL0, 0x1, DVFS_CTRL0_DVFS_CG_OPT);
543 		vIO32WriteFldAlign_All(DRAMC_REG_DCM_CTRL0, 0x1, DCM_CTRL0_BCLKAR);
544 		vIO32WriteFldMulti_All(DRAMC_REG_DRAMC_PD_CTRL,
545 				P_Fld(0x0, DRAMC_PD_CTRL_PHYCLKDYNGEN) |
546 				P_Fld(0x0, DRAMC_PD_CTRL_DCMEN2) |
547 				P_Fld(0x0, DRAMC_PD_CTRL_DCMEN) |
548 				P_Fld(0x1, DRAMC_PD_CTRL_PHYGLUECLKRUN) |
549 				P_Fld(0x1, DRAMC_PD_CTRL_COMBPHY_CLKENSAME) |
550 				P_Fld(0x1, DRAMC_PD_CTRL_APHYCKCG_FIXOFF) |
551 				P_Fld(0x1, DRAMC_PD_CTRL_MIOCKCTRLOFF) |
552 				P_Fld(0x0, DRAMC_PD_CTRL_DCMENNOTRFC) |
553 				P_Fld(0x0, DRAMC_PD_CTRL_COMBCLKCTRL));
554 		vIO32WriteFldMulti_All(DDRPHY_REG_MISC_CTRL3,
555 				P_Fld(0x1, MISC_CTRL3_R_DDRPHY_RX_PIPE_CG_IG) |
556 				P_Fld(0x1, MISC_CTRL3_R_DDRPHY_COMB_CG_IG));
557 		vIO32WriteFldMulti_All(DDRPHY_REG_MISC_CTRL4,
558 				P_Fld(0x0, MISC_CTRL4_R_OPT2_CG_DQSIEN) |
559 				P_Fld(0x0, MISC_CTRL4_R_OPT2_CG_CLK) |
560 				P_Fld(0x0, MISC_CTRL4_R_OPT2_MPDIV_CG) |
561 				P_Fld(0x0, MISC_CTRL4_R_OPT2_CG_DQM) |
562 				P_Fld(0x0, MISC_CTRL4_R_OPT2_CG_CMD) |
563 				P_Fld(0x0, MISC_CTRL4_R_OPT2_CG_DQS) |
564 				P_Fld(0x0, MISC_CTRL4_R_OPT2_CG_MCK) |
565 				P_Fld(0x0, MISC_CTRL4_R_OPT2_CG_CS) |
566 				P_Fld(0x0, MISC_CTRL4_R_OPT2_CG_DQ));
567 		vIO32WriteFldMulti_All(DRAMC_REG_TX_TRACKING_SET0,
568 				P_Fld(0x1, TX_TRACKING_SET0_TXUIPI_CAL_CGAR) |
569 				P_Fld(0x1, TX_TRACKING_SET0_RDDQSOSC_CGAR) |
570 				P_Fld(0x1, TX_TRACKING_SET0_HMRRSEL_CGAR));
571 		vIO32WriteFldMulti_All(DRAMC_REG_ZQ_SET0,
572 				P_Fld(0x1, ZQ_SET0_ZQCS_MASK_SEL_CGAR) |
573 				P_Fld(0x1, ZQ_SET0_ZQMASK_CGAR));
574 		vIO32WriteFldAlign_All(DDRPHY_REG_MISC_RX_AUTOK_CFG0, 0x1, MISC_RX_AUTOK_CFG0_RX_CAL_CG_EN);
575 	}
576 	return;
577 }
578 
EnableDramcPhyDCMShuffle(DRAMC_CTX_T * p,bool bEn,U32 u4DramcShuOffset,U32 u4DDRPhyShuOffset)579 void EnableDramcPhyDCMShuffle(DRAMC_CTX_T *p, bool bEn, U32 u4DramcShuOffset, U32 u4DDRPhyShuOffset)
580 {
581 	// Special case
582 	// DRAMC_REG_SHU_RX_CG_SET0 + u4DramcShuOffset - SHU_RX_CG_SET0_READ_START_EXTEND3: Special case
583 	// DRAMC_REG_SHU_RX_CG_SET0 + u4DramcShuOffset - SHU_RX_CG_SET0_READ_START_EXTEND2: Special case
584 	// DRAMC_REG_SHU_RX_CG_SET0 + u4DramcShuOffset - SHU_RX_CG_SET0_READ_START_EXTEND1: Special case
585 	// DRAMC_REG_SHU_RX_CG_SET0 + u4DramcShuOffset - SHU_RX_CG_SET0_DLE_LAST_EXTEND1: Special case
586 	// DRAMC_REG_SHU_RX_CG_SET0 + u4DramcShuOffset - SHU_RX_CG_SET0_DLE_LAST_EXTEND2: Special case
587 	// DRAMC_REG_SHU_RX_CG_SET0 + u4DramcShuOffset - SHU_RX_CG_SET0_DLE_LAST_EXTEND3: Special case
588 	EnableCommonDCMShuffle(p, u4DramcShuOffset, u4DDRPhyShuOffset);
589 
590 	if(bEn)
591 	{
592 		vIO32WriteFldMulti_All(DDRPHY_REG_SHU_B0_DQ8 + u4DDRPhyShuOffset,
593 				P_Fld(0x0, SHU_B0_DQ8_R_DMDQSIEN_RDSEL_TOG_PIPE_CG_IG_B0) |
594 				P_Fld(0x0, SHU_B0_DQ8_R_DMDQSIEN_FLAG_PIPE_CG_IG_B0) |
595 				P_Fld(0x0, SHU_B0_DQ8_R_DMDQSIEN_FLAG_SYNC_CG_IG_B0) |
596 				P_Fld(0x0, SHU_B0_DQ8_R_DMRANK_PIPE_CG_IG_B0) |
597 				P_Fld(0x0, SHU_B0_DQ8_R_RMRODTEN_CG_IG_B0) |
598 				P_Fld(0x0, SHU_B0_DQ8_R_DMRANK_RXDLY_PIPE_CG_IG_B0) |
599 				P_Fld(0x0, SHU_B0_DQ8_R_DMRXDVS_RDSEL_PIPE_CG_IG_B0) |
600 				P_Fld(0x0, SHU_B0_DQ8_R_DMRXDVS_RDSEL_TOG_PIPE_CG_IG_B0) |
601 				P_Fld(0x0, SHU_B0_DQ8_R_DMRANK_CHG_PIPE_CG_IG_B0) |
602 				P_Fld(0x0, SHU_B0_DQ8_R_DMDQSIEN_RDSEL_PIPE_CG_IG_B0));
603 		vIO32WriteFldMulti_All(DDRPHY_REG_SHU_CA_CMD8 + u4DDRPhyShuOffset,
604 				P_Fld(0x0, SHU_CA_CMD8_R_DMDQSIEN_RDSEL_PIPE_CG_IG_CA) |
605 				P_Fld(0x0, SHU_CA_CMD8_R_DMRANK_PIPE_CG_IG_CA) |
606 				P_Fld(0x0, SHU_CA_CMD8_R_DMDQSIEN_RDSEL_TOG_PIPE_CG_IG_CA) |
607 				P_Fld(0x0, SHU_CA_CMD8_R_DMDQSIEN_FLAG_PIPE_CG_IG_CA) |
608 				P_Fld(0x0, SHU_CA_CMD8_R_DMDQSIEN_FLAG_SYNC_CG_IG_CA) |
609 				P_Fld(0x0, SHU_CA_CMD8_R_DMRANK_CHG_PIPE_CG_IG_CA) |
610 				P_Fld(0x0, SHU_CA_CMD8_R_RMRX_TOPHY_CG_IG_CA) |
611 				P_Fld(0x0, SHU_CA_CMD8_R_RMRODTEN_CG_IG_CA));
612 #if TX_PICG_NEW_MODE
613 		vIO32WriteFldAlign_All(DRAMC_REG_SHU_APHY_TX_PICG_CTRL + u4DramcShuOffset, 0x1, SHU_APHY_TX_PICG_CTRL_DDRPHY_CLK_EN_COMB_TX_OPT);
614 #endif
615 		vIO32WriteFldMulti_All(DDRPHY_REG_SHU_B1_DQ8 + u4DDRPhyShuOffset,
616 				P_Fld(0x0, SHU_B1_DQ8_R_RMRODTEN_CG_IG_B1) |
617 				P_Fld(0x0, SHU_B1_DQ8_R_DMDQSIEN_RDSEL_PIPE_CG_IG_B1) |
618 				P_Fld(0x0, SHU_B1_DQ8_R_DMDQSIEN_RDSEL_TOG_PIPE_CG_IG_B1) |
619 				P_Fld(0x0, SHU_B1_DQ8_R_DMRANK_PIPE_CG_IG_B1) |
620 				P_Fld(0x0, SHU_B1_DQ8_R_DMDQSIEN_FLAG_PIPE_CG_IG_B1) |
621 				P_Fld(0x0, SHU_B1_DQ8_R_DMRXDVS_RDSEL_PIPE_CG_IG_B1) |
622 				P_Fld(0x0, SHU_B1_DQ8_R_DMRANK_RXDLY_PIPE_CG_IG_B1) |
623 				P_Fld(0x0, SHU_B1_DQ8_R_DMDQSIEN_FLAG_SYNC_CG_IG_B1) |
624 				P_Fld(0x0, SHU_B1_DQ8_R_DMRANK_CHG_PIPE_CG_IG_B1) |
625 				P_Fld(0x0, SHU_B1_DQ8_R_DMRXDVS_RDSEL_TOG_PIPE_CG_IG_B1));
626 		vIO32WriteFldAlign_All(DDRPHY_REG_MISC_SHU_ODTCTRL + u4DDRPhyShuOffset, 0x0, MISC_SHU_ODTCTRL_RODTENSTB_SELPH_CG_IG);
627 	}
628 	else
629 	{
630 		vIO32WriteFldMulti_All(DDRPHY_REG_SHU_B0_DQ8 + u4DDRPhyShuOffset,
631 				P_Fld(0x1, SHU_B0_DQ8_R_DMDQSIEN_RDSEL_TOG_PIPE_CG_IG_B0) |
632 				P_Fld(0x1, SHU_B0_DQ8_R_DMDQSIEN_FLAG_PIPE_CG_IG_B0) |
633 				P_Fld(0x1, SHU_B0_DQ8_R_DMDQSIEN_FLAG_SYNC_CG_IG_B0) |
634 				P_Fld(0x1, SHU_B0_DQ8_R_DMRANK_PIPE_CG_IG_B0) |
635 				P_Fld(0x1, SHU_B0_DQ8_R_RMRODTEN_CG_IG_B0) |
636 				P_Fld(0x1, SHU_B0_DQ8_R_DMRANK_RXDLY_PIPE_CG_IG_B0) |
637 				P_Fld(0x1, SHU_B0_DQ8_R_DMRXDVS_RDSEL_PIPE_CG_IG_B0) |
638 				P_Fld(0x1, SHU_B0_DQ8_R_DMRXDVS_RDSEL_TOG_PIPE_CG_IG_B0) |
639 				P_Fld(0x1, SHU_B0_DQ8_R_DMRANK_CHG_PIPE_CG_IG_B0) |
640 				P_Fld(0x1, SHU_B0_DQ8_R_DMDQSIEN_RDSEL_PIPE_CG_IG_B0));
641 		vIO32WriteFldMulti_All(DDRPHY_REG_SHU_CA_CMD8 + u4DDRPhyShuOffset,
642 				P_Fld(0x1, SHU_CA_CMD8_R_DMDQSIEN_RDSEL_PIPE_CG_IG_CA) |
643 				P_Fld(0x1, SHU_CA_CMD8_R_DMRANK_PIPE_CG_IG_CA) |
644 				P_Fld(0x1, SHU_CA_CMD8_R_DMDQSIEN_RDSEL_TOG_PIPE_CG_IG_CA) |
645 				P_Fld(0x1, SHU_CA_CMD8_R_DMDQSIEN_FLAG_PIPE_CG_IG_CA) |
646 				P_Fld(0x1, SHU_CA_CMD8_R_DMDQSIEN_FLAG_SYNC_CG_IG_CA) |
647 				P_Fld(0x1, SHU_CA_CMD8_R_DMRANK_CHG_PIPE_CG_IG_CA) |
648 				P_Fld(0x1, SHU_CA_CMD8_R_RMRX_TOPHY_CG_IG_CA) |
649 				P_Fld(0x1, SHU_CA_CMD8_R_RMRODTEN_CG_IG_CA));
650 		vIO32WriteFldAlign_All(DRAMC_REG_SHU_APHY_TX_PICG_CTRL + u4DramcShuOffset, 0x0, SHU_APHY_TX_PICG_CTRL_DDRPHY_CLK_EN_COMB_TX_OPT);
651 		vIO32WriteFldMulti_All(DDRPHY_REG_SHU_B1_DQ8 + u4DDRPhyShuOffset,
652 				P_Fld(0x1, SHU_B1_DQ8_R_RMRODTEN_CG_IG_B1) |
653 				P_Fld(0x1, SHU_B1_DQ8_R_DMDQSIEN_RDSEL_PIPE_CG_IG_B1) |
654 				P_Fld(0x1, SHU_B1_DQ8_R_DMDQSIEN_RDSEL_TOG_PIPE_CG_IG_B1) |
655 				P_Fld(0x1, SHU_B1_DQ8_R_DMRANK_PIPE_CG_IG_B1) |
656 				P_Fld(0x1, SHU_B1_DQ8_R_DMDQSIEN_FLAG_PIPE_CG_IG_B1) |
657 				P_Fld(0x1, SHU_B1_DQ8_R_DMRXDVS_RDSEL_PIPE_CG_IG_B1) |
658 				P_Fld(0x1, SHU_B1_DQ8_R_DMRANK_RXDLY_PIPE_CG_IG_B1) |
659 				P_Fld(0x1, SHU_B1_DQ8_R_DMDQSIEN_FLAG_SYNC_CG_IG_B1) |
660 				P_Fld(0x1, SHU_B1_DQ8_R_DMRANK_CHG_PIPE_CG_IG_B1) |
661 				P_Fld(0x1, SHU_B1_DQ8_R_DMRXDVS_RDSEL_TOG_PIPE_CG_IG_B1));
662 		vIO32WriteFldAlign_All(DDRPHY_REG_MISC_SHU_ODTCTRL + u4DDRPhyShuOffset, 0x1, MISC_SHU_ODTCTRL_RODTENSTB_SELPH_CG_IG);
663 	}
664 	return;
665 }
666 
667 //----------------------------------------
668 // Auto Gen Code -- END
669 //----------------------------------------
670 
EnableDramcPhyDCM(DRAMC_CTX_T * p,bool bEn)671 void EnableDramcPhyDCM(DRAMC_CTX_T *p, bool bEn)
672 {
673 	U32 u4WbrBackup = GetDramcBroadcast();
674 	DramcBroadcastOnOff(DRAMC_BROADCAST_OFF);
675 
676 	EnableDramcPhyDCMNonShuffle(p, bEn);
677 	EnableDramcPhyDCMShuffle(p, bEn, 0, 0);//only need to set SHU0 RG while init, SHU0 will copy to others
678 
679 #if ((CHECK_GOLDEN_SETTING == TRUE) && (APPLY_LOWPOWER_GOLDEN_SETTINGS == 0))
680 	DRAM_STATUS_T stResult = CheckGoldenSetting(p);
681 	msg("Golden setting check: %s\n", (stResult == DRAM_OK)? ("OK") : ("NG"));
682 #endif
683 
684 	DramcBroadcastOnOff(u4WbrBackup);
685 	return;
686 }
687 
688 
689 #if RX_PICG_NEW_MODE
690 #if 0
691 DRAM_STATUS_T CheckRxPICGNewModeSetting(DRAMC_CTX_T *p)
692 {
693 	U8 channel_idx;
694 	U8 u1RankIdx;
695 	U32 u4Value;
696 
697 
698 	for(channel_idx = CHANNEL_A; channel_idx < p->support_channel_num; channel_idx++)
699 	{
700 		p->channel = channel_idx;
701 		msg("CH[%d] \n", channel_idx);
702 		u4Value = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_CTRL4), MISC_CTRL4_R_OPT2_CG_MCK);
703 		msg("MISC_CTRL4_R_OPT2_CG_MCK:0x%x \n", u4Value);
704 
705 		u4Value = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_CTRL4), MISC_CTRL4_R_OPT2_MPDIV_CG);
706 		msg("MISC_CTRL4_R_OPT2_MPDIV_CG:0x%x \n", u4Value);
707 
708 		u4Value = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_CTRL4), MISC_CTRL4_R_OPT2_CG_DQSIEN);
709 		msg("MISC_CTRL4_R_OPT2_CG_DQSIEN:0x%x \n", u4Value);
710 
711 
712 		u4Value = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_STBCAL1), MISC_STBCAL1_STBCNT_SHU_RST_EN);
713 		msg("MISC_STBCAL1_STBCNT_SHU_RST_EN:0x%x \n", u4Value);
714 
715 		u4Value = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_STBCAL2), MISC_STBCAL2_DQSIEN_SELPH_BY_RANK_EN);
716 		msg("MISC_STBCAL2_DQSIEN_SELPH_BY_RANK_EN:0x%x \n", u4Value);
717 
718 		u4Value = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_SHU_STBCAL), MISC_SHU_STBCAL_DQSIEN_PICG_MODE);
719 		msg("MISC_SHU_STBCAL_DQSIEN_PICG_MODE:0x%x \n", u4Value);
720 
721 
722 		u4Value = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_RX_IN_GATE_EN_CTRL), MISC_RX_IN_GATE_EN_CTRL_RX_IN_GATE_EN_OPT);
723 		msg("MISC_RX_IN_GATE_EN_CTRL_RX_IN_GATE_EN_OPT:0x%x \n", u4Value);
724 
725 		u4Value = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_RX_IN_BUFF_EN_CTRL), MISC_RX_IN_BUFF_EN_CTRL_RX_IN_BUFF_EN_OPT);
726 		msg("MISC_RX_IN_BUFF_EN_CTRL_RX_IN_BUFF_EN_OPT:0x%x \n", u4Value);
727 
728 		u4Value = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_STBCAL2), MISC_STBCAL2_STB_STBENRST_EARLY_1T_EN);
729 		msg("MISC_STBCAL2_STB_STBENRST_EARLY_1T_EN:0x%x \n", u4Value);
730 
731 		for (u1RankIdx = 0; u1RankIdx < p->support_rank_num; u1RankIdx++)//Should set 2 rank
732 		{
733 
734 			vSetRank(p, u1RankIdx);
735 			u4Value = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_SHU_RK_DQSIEN_PICG_CTRL), MISC_SHU_RK_DQSIEN_PICG_CTRL_DQSIEN_PICG_TAIL_EXT_LAT);
736 			msg("Rank[%d] MISC_SHU_RK_DQSIEN_PICG_CTRL_DQSIEN_PICG_TAIL_EXT_LAT:0x%x \n", u1RankIdx, u4Value);
737 			u4Value = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_SHU_RK_DQSIEN_PICG_CTRL), MISC_SHU_RK_DQSIEN_PICG_CTRL_DQSIEN_PICG_HEAD_EXT_LAT);
738 			msg("Rank[%d] MISC_SHU_RK_DQSIEN_PICG_CTRL_DQSIEN_PICG_HEAD_EXT_LAT:0x%x \n", u1RankIdx, u4Value);
739 		}
740 		vSetRank(p, RANK_0);
741 
742 		u4Value = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_RX_IN_BUFF_EN_CTRL), MISC_RX_IN_BUFF_EN_CTRL_DIS_IN_BUFF_EN);
743 		msg("MISC_RX_IN_BUFF_EN_CTRL_DIS_IN_BUFF_EN:0x%x \n", u4Value);
744 
745 		u4Value = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_RX_IN_BUFF_EN_CTRL), MISC_RX_IN_BUFF_EN_CTRL_FIX_IN_BUFF_EN);
746 		msg("MISC_RX_IN_BUFF_EN_CTRL_FIX_IN_BUFF_EN:0x%x \n", u4Value);
747 
748 		u4Value = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_RX_IN_BUFF_EN_CTRL), MISC_RX_IN_BUFF_EN_CTRL_RX_IN_BUFF_EN_4BYTE_EN);
749 		msg("MISC_RX_IN_BUFF_EN_CTRL_RX_IN_BUFF_EN_4BYTE_EN:0x%x \n", u4Value);
750 
751 
752 		u4Value = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_RX_IN_GATE_EN_CTRL), MISC_RX_IN_GATE_EN_CTRL_DIS_IN_GATE_EN);
753 		msg("MISC_RX_IN_GATE_EN_CTRL_DIS_IN_GATE_EN:0x%x \n", u4Value);
754 
755 		u4Value = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_RX_IN_GATE_EN_CTRL), MISC_RX_IN_GATE_EN_CTRL_FIX_IN_GATE_EN);
756 		msg("MISC_RX_IN_GATE_EN_CTRL_FIX_IN_GATE_EN:0x%x \n", u4Value);
757 
758 		u4Value = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DDRPHY_REG_MISC_RX_IN_GATE_EN_CTRL), MISC_RX_IN_GATE_EN_CTRL_RX_IN_GATE_EN_4BYTE_EN);
759 		msg("MISC_RX_IN_GATE_EN_CTRL_RX_IN_GATE_EN_4BYTE_EN:0x%x \n", u4Value);
760 
761 	}
762 	p->channel = CHANNEL_A;
763 }
764 #endif
765 #endif
766 
767 #if (CHECK_GOLDEN_SETTING == TRUE)
CheckGoldenField(DRAMC_CTX_T * p,GOLDEN_FIELD_T * golden_setting_anwer,U16 array_size)768 DRAM_STATUS_T CheckGoldenField(DRAMC_CTX_T *p, GOLDEN_FIELD_T *golden_setting_anwer, U16 array_size)
769 {
770 	DRAM_STATUS_T eStatus = DRAM_OK;
771 	U8 channel_idx;
772 	U32 u4Value = 0;
773 	U32 u4Answer = 0;
774 	U16 array_cnt = array_size / sizeof(golden_setting_anwer[0]);
775 
776 	U16 u2Idx = 0;
777 	for(u2Idx = 0; u2Idx < array_cnt; u2Idx++)
778 	{
779 		for(channel_idx = CHANNEL_A; channel_idx < p->support_channel_num; channel_idx++)//comapre CHA && CHB
780 		{
781 			vSetPHY2ChannelMapping(p, channel_idx);
782 			u4Value = u4IO32ReadFldAlign(DRAMC_REG_ADDR(golden_setting_anwer[u2Idx].group), golden_setting_anwer[u2Idx].field);
783 			//msg("%s: 0x%x\n", golden_setting_anwer[u2Idx].fieldName, u4Value);
784 
785 			u4Answer = *(&golden_setting_anwer[u2Idx].u4ChaValue);//golden_setting_anwer only has CHA value
786 
787 			if(u4Answer != 0xffffffff)//0xffffffff: no need to compare
788 			{
789 				if(u4Answer == u4Value)
790 				{
791 					//msg("OK [%s] 0x%x\n", golden_setting_anwer[u2Idx].fieldName, u4Answer);
792 				}
793 				else
794 				{
795 					msg("*** fail ***[%s]CH[%d][0x%x][ANS:0x%x]****** fail\n", golden_setting_anwer[u2Idx].fieldName, channel_idx, u4Value, u4Answer);
796 					eStatus |= DRAM_FAIL;
797 				}
798 			}
799 		}
800 	}
801 	return eStatus;
802 }
803 
CheckGoldenSetting(DRAMC_CTX_T * p)804 DRAM_STATUS_T CheckGoldenSetting(DRAMC_CTX_T *p)
805 {
806 	U8 u1BkShuffleIdx = p->pDFSTable->shuffleIdx;
807 	U8 u1SramShuffleIdx = 0;
808 	U8 u1ShuffleIdx = 0;
809 	U8 backup_channel = vGetPHY2ChannelMapping(p);
810 	DRAM_STATUS_T eStatus = DRAM_OK;
811 
812 	msg("Golden setting check[Begin]\n");
813 	eStatus |= CheckGoldenField(p, nonshuf_golden_setting_anwer, sizeof(nonshuf_golden_setting_anwer));
814 
815 
816 	if(gAndroid_DVFS_en)
817 	{
818 		for (u1ShuffleIdx = 0; u1ShuffleIdx <= DRAM_DFS_SRAM_MAX; u1ShuffleIdx++)
819 		{
820 			if (u1ShuffleIdx < DRAM_DFS_SRAM_MAX)
821 			{
822 				msg("SRAM SHU%d\n", u1ShuffleIdx);
823 				u1SramShuffleIdx = u1ShuffleIdx;
824 			}
825 			else
826 			{
827 				msg("CONF SHU0, DDR[%d]\n", p->frequency * 2);
828 				u1SramShuffleIdx = u1BkShuffleIdx; //Restore to original freq && check conf SHU0
829 			}
830 
831 			//msg("shuf_golden_setting_anwer:%d %d\n",	sizeof(shuf_golden_setting_anwer), sizeof(shuf_golden_setting_anwer[0]));
832 			DramcDFSDirectJump(p, u1SramShuffleIdx); //fill conf SHU0 && SHU1 from SRAM SHU(0~9) while DVFS twice
833 			DramcDFSDirectJump(p, u1SramShuffleIdx);
834 
835 			eStatus |= CheckGoldenField(p, shuf_golden_setting_anwer, sizeof(shuf_golden_setting_anwer));
836 		}
837 	}
838 	else
839 	{
840 		msg("CONF SHU0, DDR[%d]\n", p->frequency * 2);
841 		eStatus |= CheckGoldenField(p, shuf_golden_setting_anwer, sizeof(shuf_golden_setting_anwer));
842 	}
843 
844 	msg("Golden setting check[End]\n");
845 
846 	vSetPHY2ChannelMapping(p, backup_channel);
847 	return eStatus;
848 }
849 #endif
850 
851 #ifdef CLK_FREE_FUN_FOR_DRAMC_PSEL
852 //If dramc enter SREF and power down, all configure need to sync 2T again after exit SREF.
853 //If Psel is 1, clock will be free run at the periof of 2T to let conf be applied.
854 //If Psel is 0, Clock will be gated
ClkFreeRunForDramcPsel(DRAMC_CTX_T * p)855 void ClkFreeRunForDramcPsel(DRAMC_CTX_T *p)
856 {
857 	vIO32WriteFldMulti_All(DRAMC_REG_TX_CG_SET0, P_Fld(0, TX_CG_SET0_PSEL_OPT1)
858 			| P_Fld(0, TX_CG_SET0_PSEL_OPT2)
859 			| P_Fld(0, TX_CG_SET0_PSEL_OPT3)
860 			| P_Fld(0, TX_CG_SET0_PSELAR));
861 }
862 #endif
863 
864 #if PA_IMPROVEMENT_FOR_DRAMC_ACTIVE_POWER
DramcPAImprove(DRAMC_CTX_T * p)865 void DramcPAImprove(DRAMC_CTX_T *p)
866 {
867 	//U8 u1ShuIdx = 0, u1ShuCnt = 3; //TODO: change u1ShuCnt to actual shuffle num define
868 	//U32 u4targetAddr = 0; //For SHU_ODTCTRL_RODTENSTB_SELPH_CG_IG, SHU_ODTCTRL_RODTEN_SELPH_CG_IG shuffle regs
869 	vIO32WriteFldAlign_All(DRAMC_REG_CLKAR, 0x0, CLKAR_REQQUE_PACG_DIS);
870 	vIO32WriteFldAlign_All(DRAMC_REG_CMD_DEC_CTRL0, 0x0, CMD_DEC_CTRL0_SELPH_CMD_CG_DIS);
871 
872 	/* Dummy_RD_PA_OPT should be set to 1, or else some functions would fail (YH Tsai)
873 	 * Already set to 1 in in UpdateInitialSettings(), so comment out set to 0 here
874 	 */
875 	//vIO32WriteFldAlign_All(DRAMC_REG_ADDR(DRAMC_REG_DUMMY_RD), 0, DUMMY_RD_DUMMY_RD_PA_OPT);
876 	vIO32WriteFldMulti_All(DRAMC_REG_SCSMCTRL_CG, P_Fld(0, SCSMCTRL_CG_SCSM_CGAR)
877 			| P_Fld(0, SCSMCTRL_CG_SCARB_SM_CGAR));
878 	vIO32WriteFldMulti_All(DRAMC_REG_TX_TRACKING_SET0, P_Fld(0, TX_TRACKING_SET0_RDDQSOSC_CGAR)
879 			| P_Fld(0, TX_TRACKING_SET0_HMRRSEL_CGAR)
880 			| P_Fld(0, TX_TRACKING_SET0_TXUIPI_CAL_CGAR));
881 
882 	//Below loop sets SHU*_ODTCTRL_RODTENSTB_SELPH_CG_IG, SHU*_ODTCTRL_RODTEN_SELPH_CG_IG (wei-jen)
883 	//for (u1ShuIdx = DRAM_DFS_SHUFFLE_1; u1ShuIdx < u1ShuCnt; u1ShuIdx++)
884 	//{
885 	//	  u4targetAddr = DRAMC_REG_SHU_ODTCTRL + SHU_GRP_DRAMC_OFFSET * u1ShuIdx;
886 	//	  vIO32WriteFldMulti_All(u4targetAddr, P_Fld(0x0, SHU_ODTCTRL_RODTENSTB_SELPH_CG_IG)
887 	//										  | P_Fld(0x0, SHU_ODTCTRL_RODTEN_SELPH_CG_IG));
888 	//}
889 }
890 #endif
891 
892 #if ENABLE_DDR800_OPEN_LOOP_MODE_OPTION
893 
DDR800semiPowerSavingOn(DRAMC_CTX_T * p,U8 next_shu_level,U8 u1OnOff)894 void DDR800semiPowerSavingOn(DRAMC_CTX_T *p, U8 next_shu_level, U8 u1OnOff)
895 {
896 
897 }
898 #endif
899 #if 0 //Comment out unused code
900 void DramcDRS(DRAMC_CTX_T *p, U8 bEnable)
901 {
902 	//R_DMDRS_CNTX[6:0](DVT set 0, HQA set 4 or 5)
903 	vIO32WriteFldMulti_All(DRAMC_REG_ADDR(DRAMC_REG_DRSCTRL), P_Fld(0, DRSCTRL_DRSPB2AB_OPT)
904 															| P_Fld(0, DRSCTRL_DRSMON_CLR)
905 															| P_Fld(8, DRSCTRL_DRSDLY)
906 															| P_Fld(0, DRSCTRL_DRSACKWAITREF)
907 															| P_Fld(!bEnable, DRSCTRL_DRSDIS)
908 															| P_Fld(1, DRSCTRL_DRSCLR_EN)
909 															| P_Fld(3, DRSCTRL_DRS_CNTX)
910 															| P_Fld(!gDRSEnableSelfWakeup, DRSCTRL_DRS_SELFWAKE_DMYRD_DIS)
911 															| P_Fld(0, DRSCTRL_DRSOPT2));
912 }
913 #endif
914 
915 #if 0 //Comment out unused code
916 #if (FOR_DV_SIMULATION_USED == 0 && SW_CHANGE_FOR_SIMULATION == 0)
917 void DramcEnterSelfRefresh(DRAMC_CTX_T *p, U8 op)
918 {
919 	U8 ucstatus = 0;
920 	U32 uiTemp;
921 	U32 u4TimeCnt;
922 
923 	u4TimeCnt = TIME_OUT_CNT;
924 
925 	msg("[EnterSelfRefresh] %s\n", (op == 1) ? "enter" : "exit");
926 
927 	if (op == 1) // enter self refresh
928 	{
929 		// ONLY work for LP4, not LP3
930 		// MISCA_SRFPD_DIS =1, self-refresh
931 		// MISCA_SRFPD_DIS =0, self-refresh power down
932 		vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_SREFCTRL), 1, SREFCTRL_SRFPD_DIS);
933 
934 		vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_SREFCTRL), 1, SREFCTRL_SELFREF);
935 		mcDELAY_US(2);
936 		uiTemp = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DRAMC_REG_MISC_STATUSA), MISC_STATUSA_SREF_STATE);
937 		while ((uiTemp == 0) && (u4TimeCnt > 0))
938 		{
939 			msg2("Still not enter self refresh(%d)\n", u4TimeCnt);
940 			mcDELAY_US(1);
941 			uiTemp = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DRAMC_REG_MISC_STATUSA), MISC_STATUSA_SREF_STATE);
942 			u4TimeCnt --;
943 		}
944 	}
945 	else // exit self refresh
946 	{
947 		vIO32WriteFldAlign(DRAMC_REG_ADDR(DRAMC_REG_SREFCTRL), 0, SREFCTRL_SELFREF);
948 
949 		mcDELAY_US(2);
950 		uiTemp = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DRAMC_REG_MISC_STATUSA), MISC_STATUSA_SREF_STATE);
951 		while ((uiTemp != 0) && (u4TimeCnt > 0))
952 		{
953 			msg2("Still not exit self refresh(%d)\n", u4TimeCnt);
954 			mcDELAY_US(1);
955 			uiTemp = u4IO32ReadFldAlign(DRAMC_REG_ADDR(DRAMC_REG_MISC_STATUSA), MISC_STATUSA_SREF_STATE);
956 			u4TimeCnt--;
957 		}
958 	}
959 
960    if (u4TimeCnt == 0)
961    {
962 		msg("Self refresh fail\n");
963    }
964    else
965    {
966 		msg("Self refresh done\n");
967    }
968 }
969 #endif
970 #endif //Comment out unused code
971 
972 #if ENABLE_RX_DCM_DPHY
EnableRxDcmDPhy(DRAMC_CTX_T * p,U32 u4DDRPhyShuOffset,U16 u2Freq)973 void EnableRxDcmDPhy(DRAMC_CTX_T *p, U32 u4DDRPhyShuOffset, U16 u2Freq)
974 {
975 	U8 u1PRECAL_CG_EN = 0;
976 
977 	if (u2Freq <= 400)
978 		u1PRECAL_CG_EN = 1;
979 	else
980 		u1PRECAL_CG_EN = 0;
981 
982 	//power gain
983 	vIO32WriteFldMulti_All(DDRPHY_REG_MISC_SHU_RX_CG_CTRL + u4DDRPhyShuOffset,
984 			P_Fld(0x1, MISC_SHU_RX_CG_CTRL_RX_DCM_OPT) |
985 			P_Fld(0x1, MISC_SHU_RX_CG_CTRL_RX_APHY_CTRL_DCM_OPT) |
986 			P_Fld(0x1, MISC_SHU_RX_CG_CTRL_RX_RODT_DCM_OPT) |
987 			P_Fld(0x0, MISC_SHU_RX_CG_CTRL_RX_DQSIEN_STBCAL_CG_EN) |
988 			P_Fld(0x1, MISC_SHU_RX_CG_CTRL_RX_DQSIEN_AUTOK_CG_EN) | 	// if Rx gating Auto K, set 0, Runtime set 1
989 #if RDSEL_TRACKING_EN
990 			P_Fld(0x0, MISC_SHU_RX_CG_CTRL_RX_RDSEL_TRACKING_CG_EN) |	// if K, set 1, at runtime if enable, set 0, else 1
991 #else
992 			P_Fld(0x1, MISC_SHU_RX_CG_CTRL_RX_RDSEL_TRACKING_CG_EN) |
993 #endif
994 			P_Fld(0x1, MISC_SHU_RX_CG_CTRL_RX_DQSIEN_RETRY_CG_EN) |
995 			P_Fld(u1PRECAL_CG_EN, MISC_SHU_RX_CG_CTRL_RX_PRECAL_CG_EN) |
996 			P_Fld(0x2, MISC_SHU_RX_CG_CTRL_RX_DCM_EXT_DLY) |
997 			P_Fld(0x0, MISC_SHU_RX_CG_CTRL_RX_DCM_WAIT_DLE_EXT_DLY));
998 
999 }
1000 #endif
1001 
1002