blob: 50e2855a24c2c1cedb08365abedd473a5a4a8662 [file] [log] [blame]
xiane88c21372024-09-25 16:42:41 +09001// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
4 */
5
6#include <asm/amlogic/arch/secure_apb.h>
7#include <asm/amlogic/arch/timing.h>
8#include <asm/amlogic/arch/ddr_define.h>
9
ckkim5dcc3172024-12-23 17:33:20 +090010#define DDR_FUNC_CONFIG_DISABLE_DDR_DVFS_FUNCTION (0 + (1 << 19))
xiane88c21372024-09-25 16:42:41 +090011#define DDR_FUNC_CONFIG_ENABLE_PZQ_DET_DRAM_TYPE_RETURN (0 + (1 << 20))
12#define DDR_FUNC_CONFIG_AUTO_DET_DQ_PINMUX_FUNCTION (0 + (1 << 21))
ckkim5dcc3172024-12-23 17:33:20 +090013#define CONFIG_DRAM_MODE_FORCE_DISABLE_X8 0x81
14#define CONFIG_DRAM_MODE_FORCE_ENABLE_X8 0x1
xiane88c21372024-09-25 16:42:41 +090015//bit 6 adc_channel bit 0-5 adc value,chan 3 value 8 is layer 2
16#define DDR_ID_ACS_ADC ((3 << 6) | (8))
17
18#define DDR_RESV_CHECK_ID_ENABLE 0Xfe
19#define SAR_ADC_DDR_ID_BASE 0
20#define SAR_ADC_DDR_ID_STEP 80
21
22#define DDR_TIMMING_OFFSET(X) (unsigned int)(unsigned long)(&(((ddr_set_ps0_only_t *)(0))->X))
23#define DDR_TIMMING_OFFSET_SIZE(X) sizeof(((ddr_set_ps0_only_t *)(0))->X)
24#define DDR_TIMMING_TUNE_TIMMING0(DDR_ID, PARA, VALUE) (DDR_ID, \
25DDR_TIMMING_OFFSET(PARA), VALUE, DDR_TIMMING_OFFSET_SIZE(PARA), 0, \
26DDR_RESV_CHECK_ID_ENABLE)
27#define DDR_TIMMING_TUNE_TIMMING1(DDR_ID, PARA, VALUE) (DDR_ID, \
28(sizeof(ddr_set_t) + (DDR_TIMMING_OFFSET(PARA))), VALUE, DDR_TIMMING_OFFSET_SIZE(PARA), \
290, DDR_RESV_CHECK_ID_ENABLE)
30
31//bit24-31 define ID and size
32#define DDR_ID_FROM_EFUSE (0Xff000000)
33#define DDR_ID_FROM_ADC (0Xfe000000)
34#define DDR_ID_FROM_GPIO_CONFIG1 (0Xfd000000)
35#define DDR_ID_FROM_EFUSE_F (0Xff << 0)
36#define DDR_ID_FROM_ADC_F (0Xfe << 0)
37#define DDR_ID_FROM_GPIO_CONFIG1_F (0Xfd << 0)
38#define DDR_ID_FROM_ADC_MULT (0Xfc000000)
39#define DDR_ID_FROM_ADC_MULT_F (0Xfc << 0)
40#define DDR_ID_START_MASK (0XFFDDCCBB)
41
42#define DDR_ADC_CH0 (0X0 << 5)
43#define DDR_ADC_CH1 (0X1 << 5)
44#define DDR_ADC_CH2 (0X2 << 5)
45#define DDR_ADC_CH3 (0X3 << 5)
46#define DDR_ADC_CH4 (0X4 << 5)
47
48#define DDR_ADC_VALUE0 (0X0 << 0)
49#define DDR_ADC_VALUE1 (0X1 << 0)
50#define DDR_ADC_VALUE2 (0X2 << 0)
51#define DDR_ADC_VALUE3 (0X3 << 0)
52#define DDR_ADC_VALUE4 (0X4 << 0)
53#define DDR_ADC_VALUE5 (0X5 << 0)
54#define DDR_ADC_VALUE6 (0X6 << 0)
55#define DDR_ADC_VALUE7 (0X7 << 0)
56#define DDR_ADC_VALUE8 (0X8 << 0)
57#define DDR_ADC_VALUE9 (0X9 << 0)
58#define DDR_ADC_VALUE10 (0Xa << 0)
59#define DDR_ADC_VALUE11 (0Xb << 0)
60#define DDR_ADC_VALUE12 (0Xc << 0)
61#define DDR_ADC_VALUE13 (0Xd << 0)
62#define DDR_ADC_VALUE14 (0Xe << 0)
63#define DDR_ADC_VALUE15 (0Xf << 0)
64#define V0 (0X0 << 0)
65#define V1 (0X1 << 0)
66#define V2 (0X2 << 0)
67#define V3 (0X3 << 0)
68#define V4 (0X4 << 0)
69#define V5 (0X5 << 0)
70#define V6 (0X6 << 0)
71#define V7 (0X7 << 0)
72#define V8 (0X8 << 0)
73#define V9 (0X9 << 0)
74#define V10 (0Xa << 0)
75#define V11 (0Xb << 0)
76#define V12 (0Xc << 0)
77
78#define VX (0Xf << 0)
79
80typedef struct ddr_para_data {
81 // start from DDR_ID_START_MASK,ddr_id;//bit0-23
82 // ddr_id value,bit 24-31 ddr_id source ,0xfe source
83 // from adc ,0xfd source from gpio_default_config
84 // reg_offset
85 // //bit 0-15 parameter offset value,bit16-23 overrid
86 // size,bit24-31 mux ddr_id source unsigned int
87 // reg_offset; unsigned int value;
88 uint32_t value : 16; // bit0-15 only support data size =1byte
89 // or 2bytes,no support int value
90 uint32_t reg_offset : 12; // bit16-27
91 uint32_t data_size : 4; // bit28-31 if data size =15,then
92 // will mean DDR_ID start
93} ddr_para_data_t;
94
95typedef struct ddr_para_data_start {
96 uint32_t id_value : 24; // bit0-23 efuse id or ddr id
97 // uint32_t id_adc_ch : 2;//bit6-7
98 uint32_t id_src_from : 8; // bit24-31 ddr id from adc or gpio
99} ddr_para_data_start_t;
100
101#define DDR_TIMMING_TUNE_STRUCT_SIZE(a) sizeof(a)
102
103#define DDR_TIMMING_TUNE_TIMMING0_F(PARA, VALUE) ((DDR_TIMMING_OFFSET(PARA)) << 16) |\
104((DDR_TIMMING_OFFSET_SIZE(PARA)) << 28) | VALUE
105#define DDR_TIMMING_TUNE_TIMMING1_F(PARA, VALUE) ((sizeof(ddr_set_ps0_only_t) +\
106DDR_TIMMING_OFFSET(PARA)) << 16) | ((DDR_TIMMING_OFFSET_SIZE(PARA)) << 28) | (VALUE)
107
108#define DDR_TIMMING_TUNE_START(id_src_from, id_adc_ch, id_value) (id_src_from) |\
109(id_adc_ch) | (id_value)
110#define DDR_TIMMING_TUNE_ADC_MULT_START(id_value, ch0, ch1, ch2, ch3, ch4, ch5) (id_value) |\
111(ch0) | ((ch1) << 4) | ((ch2) << 8) | ((ch3) << 12) | ((ch4) << 16) | ((ch5) << 20)
112#define DDR_TIMMING_TUNE_STRUCT_SIZE(a) sizeof(a)
113
114#if 1
115uint32_t __bl2_ddr_reg_data[] __attribute__ ((section(".ddr_2acs_data"))) = {
116 DDR_ID_START_MASK,
117 //DDR_TIMMING_TUNE_ADC_MULT_START(DDR_ID_FROM_ADC_MULT, V4, VX, VX, VX, VX, VX),
118 //data start
119 //DDR_TIMMING_TUNE_TIMMING0_F(cfg_board_common_setting.Is2Ttiming, CONFIG_USE_DDR_2T_MODE),
120 //DDR_TIMMING_TUNE_TIMMING0_F(cfg_board_SI_setting_ps.DRAMFreq, 1320),
121};
122
123////_ddr_para_2nd_setting
124
125uint32_t __ddr_parameter_reg_index[] __attribute__ ((section(".ddr_2acs_index"))) = {
126 0,
127};
128#endif
129
ckkim5dcc3172024-12-23 17:33:20 +0900130#define LPDDR4_SKT 0
131#define DDR4_SKT 0
132#define DDR3_SKT 0
133#define DDR4_ODROID 1
xiane88c21372024-09-25 16:42:41 +0900134
135ddr_set_ps0_only_t __ddr_setting[] __attribute__ ((section(".ddr_param"))) = {
ckkim5dcc3172024-12-23 17:33:20 +0900136
137#if DDR4_ODROID
138//ODROID-C5 DDR4 freq
139#define CACLU_CLK_D4 1968 // 600 //1200 //1792//600 //1200 //(1900)// (1440)//(1008)
140//#define CACLU_CLK_D4 1584// 600 //1200 //1792//600 //1200 //(1900)// (1440)//(1008)
141 {
142 .cfg_board_common_setting.timming_magic = 0,
143 .cfg_board_common_setting.timming_max_valid_configs = 1,
144 .cfg_board_common_setting.timming_struct_version = 9215,
145 .cfg_board_common_setting.timming_struct_org_size =
146 sizeof(ddr_set_ps0_only_t),
147 .cfg_board_common_setting.timming_struct_real_size = 0,
148 .cfg_board_common_setting.fast_boot = {
149 0, 0, 0, 0
150 },
151 .cfg_board_common_setting.ddr_func = DDR_FUNC_CONFIG_DFE_FUNCTION |
152 DDR_FUNC_CONFIG_DISABLE_DDR_DVFS_FUNCTION,
153 //DDR_FUNC_CONFIG_ENABLE_PZQ_DET_DRAM_TYPE_RETURN,
154 .cfg_board_common_setting.board_id = CONFIG_BOARD_ID_MASK,
155 .cfg_board_common_setting.DramType = CONFIG_DDR_TYPE_DDR4,
156 .cfg_board_common_setting.enable_lpddr4x_mode = 0,
157 .cfg_board_common_setting.dram_rank_config =
158 //CONFIG_DDR0_16BIT_CH0,
159 CONFIG_DDR0_32BIT_RANK0_CH0,
160 //.cfg_board_common_setting.dram_ch0_size_MB =
161 // (DRAM_SIZE_ID_256MBX4 << CONFIG_CS0_BYTE_01_SIZE_256_ID_OFFSET) +
162 // (DRAM_SIZE_ID_256MBX4 << CONFIG_CS0_BYTE_23_SIZE_256_ID_OFFSET) +
163 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_01_SIZE_256_ID_OFFSET) +
164 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_23_SIZE_256_ID_OFFSET),
165 //.cfg_board_common_setting.dram_ch1_size_MB =
166 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS0_BYTE_01_SIZE_256_ID_OFFSET) +
167 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS0_BYTE_23_SIZE_256_ID_OFFSET) +
168 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_01_SIZE_256_ID_OFFSET) +
169 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_23_SIZE_256_ID_OFFSET),
170 .cfg_board_common_setting.dram_ch0_size_MB = 0xffff,
171 .cfg_board_common_setting.DisabledDbyte[0] = 0x00,
172 //bit 0 -3 ch0 cs0 ,bit 4-7 ch0 cs1,
173 //.cfg_board_common_setting.DisabledDbyte[1] = 0xfc,
174 //bit 0 -3 ch1 cs0 ,bit 4-7 ch1
175 .cfg_board_common_setting.dram_x4x8x16_mode = CONFIG_DRAM_MODE_FORCE_DISABLE_X8,
176 //.cfg_board_common_setting.dram_x4x8x16_mode = CONFIG_DRAM_MODE_FORCE_ENABLE_X8,
177 .cfg_board_common_setting.Is2Ttiming = CONFIG_USE_DDR_2T_MODE,
178 .cfg_board_common_setting.log_level = 0xff,
179 .cfg_board_common_setting.log_level = 4,
180 //4,//LOG_LEVEL_BASIC,
181 .cfg_board_SI_setting_ps.DRAMFreq = CACLU_CLK_D4,
182 .cfg_board_SI_setting_ps.training_SequenceCtrl = 0,
183 .cfg_board_SI_setting_ps.dfi_odt_config = DDR_DRAM_ODT_W_CS0_ODT0,
184 .cfg_board_SI_setting_ps.dfi_odt_config = DDR_DRAM_ODT_DDR4_PARK_ENABLE,
185 .cfg_board_SI_setting_ps.vref_ac_permil = 0,
186 .cfg_board_SI_setting_ps.vref_soc_data_permil = 0,
187 .cfg_board_SI_setting_ps.vref_dram_data_permil = 0,//800,
188 .cfg_board_SI_setting_ps.max_core_timmming_frequency = 0,
189 .cfg_board_common_setting.dbi_enable = 0x00000000,
190 .cfg_board_common_setting.ddr_rfc_type = 0,
191 .cfg_board_common_setting.pll_ssc_mode = 0x00000000,
192#if ENABLE_8BIT_DDR4_CS0_CS1_SAME_PHASE
193 //.cfg_board_common_setting.dram_x4x8x16_mode = CONFIG_DRAM_MODE_FORCE_DISABLE_X8,
194 .cfg_board_common_setting.dram_x4x8x16_mode = CONFIG_DRAM_MODE_FORCE_ENABLE_X8,
195 .cfg_board_SI_setting_ps.clk_drv_ohm = 34,
196 .cfg_board_SI_setting_ps.cs_drv_ohm = 34,
197 .cfg_board_SI_setting_ps.ac_drv_ohm = 34,
198 .cfg_board_SI_setting_ps.soc_data_drv_ohm_p = 34,
199 .cfg_board_SI_setting_ps.soc_data_drv_ohm_n = 34,
200 .cfg_board_SI_setting_ps.soc_data_odt_ohm_p = 60,
201 .cfg_board_SI_setting_ps.soc_data_odt_ohm_n = 0,
202 .cfg_board_SI_setting_ps.dram_data_drv_ohm = 34,
203 .cfg_board_SI_setting_ps.dram_data_odt_ohm = 60,
204 .cfg_board_SI_setting_ps.dram_data_wr_odt_ohm = 0,
205 .cfg_board_SI_setting_ps.dram_ac_odt_ohm = 120,
206 .cfg_board_SI_setting_ps.dram_drv_pull_up_cal_ohm =
207 DDR_DRAM_LPDDR4_ODT_40_OHM,
208 .cfg_board_SI_setting_ps.lpddr4_dram_vout_range =
209 DDR_DRAM_LPDDR4_OUTPUT_1_3_VDDQ,
210 .cfg_board_common_setting.ac_pinmux = {
211 22, 22, 26, 3, 7, 5, 6, 4, 0, 19,
212 11, 27, 18, 14, 17, 16, 20, 15, 12, 10, 9,
213 8, 21, 2, 13, 1, 24, 25, 28, 29,
214 },
215#else
216 .cfg_board_SI_setting_ps.clk_drv_ohm = 40,
217 .cfg_board_SI_setting_ps.cs_drv_ohm = 40,
218 .cfg_board_SI_setting_ps.ac_drv_ohm = 40,
219 .cfg_board_SI_setting_ps.soc_data_drv_ohm_p = 40,
220 .cfg_board_SI_setting_ps.soc_data_drv_ohm_n = 40,
221 .cfg_board_SI_setting_ps.soc_data_odt_ohm_p = 60,
222 .cfg_board_SI_setting_ps.soc_data_odt_ohm_n = 0,
223 .cfg_board_SI_setting_ps.dram_data_drv_ohm = 34,
224 .cfg_board_SI_setting_ps.dram_data_odt_ohm = 60,
225#ifdef USE_2RANK_16BIT_X2_DDR4
226 .cfg_board_common_setting.dram_x4x8x16_mode = CONFIG_DRAM_MODE_FORCE_DISABLE_X8,
227 //.cfg_board_common_setting.dram_x4x8x16_mode = CONFIG_DRAM_MODE_FORCE_ENABLE_X8,
228 .cfg_board_SI_setting_ps.vref_soc_data_permil = 820,
229 .cfg_board_SI_setting_ps.vref_dram_data_permil = 820,//800,
230 .cfg_board_SI_setting_ps.clk_drv_ohm = 34,
231 .cfg_board_SI_setting_ps.cs_drv_ohm = 40,
232 .cfg_board_SI_setting_ps.ac_drv_ohm = 40,
233 .cfg_board_SI_setting_ps.soc_data_drv_ohm_p = 48,
234 .cfg_board_SI_setting_ps.soc_data_drv_ohm_n = 48,
235 .cfg_board_SI_setting_ps.soc_data_odt_ohm_p = 48,
236 .cfg_board_SI_setting_ps.soc_data_odt_ohm_n = 0,
237 .cfg_board_SI_setting_ps.dram_data_drv_ohm = 48,
238 .cfg_board_SI_setting_ps.dram_data_odt_ohm = 48,
239#endif
240 .cfg_board_SI_setting_ps.dram_data_wr_odt_ohm = 0,
241 .cfg_board_SI_setting_ps.dram_ac_odt_ohm = 120,
242 .cfg_board_SI_setting_ps.dram_drv_pull_up_cal_ohm =
243 DDR_DRAM_LPDDR4_ODT_40_OHM,
244 .cfg_board_SI_setting_ps.lpddr4_dram_vout_range =
245 DDR_DRAM_LPDDR4_OUTPUT_1_3_VDDQ,
246 .cfg_board_common_setting.ac_pinmux = {
247 23, 22, 26, 3, 7, 5, 6, 4, 0, 19,
248 11, 27, 18, 14, 17, 16, 20, 15, 12, 10, 9,
249 8, 21, 2, 13, 1, 24, 25, 28, 29,
250 },
251#endif
252 //.cfg_ddr_training_delay_ps.tx_offset[0] = (0 << 7) | 0x0,
253 //.cfg_ddr_training_delay_ps.rx_offset[0] = (0 << 7) | 0x0,
254 .cfg_ddr_training_delay_ps.reserve_para[0] = (1 << 7) | 0x8, //write dqs
255 .cfg_ddr_training_delay_ps.reserve_para[1] = (1 << 7) | 0x8, //write dqs
256 .cfg_ddr_training_delay_ps.reserve_para[2] = (1 << 7) | 0x8, //write dqs
257 .cfg_ddr_training_delay_ps.reserve_para[3] = (1 << 7) | 0x8, //write dqs
258 .cfg_ddr_training_delay_ps.reserve_para[4] = (1 << 7) | 0x8, //write dqs
259 .cfg_ddr_training_delay_ps.reserve_para[5] = (1 << 7) | 0x8, //write dqs
260 .cfg_ddr_training_delay_ps.reserve_para[6] = (1 << 7) | 0x8, //write dqs
261 .cfg_ddr_training_delay_ps.reserve_para[7] = (1 << 7) | 0x8, //write dqs
262 .cfg_ddr_training_delay_ps.reserve_para[8 + 0] = (1 << 7) | 0x10,//read dqs
263 .cfg_ddr_training_delay_ps.reserve_para[8 + 1] = (1 << 7) | 0x10,//read dqs
264 .cfg_ddr_training_delay_ps.reserve_para[8 + 2] = (1 << 7) | 0x10,//read dqs
265 .cfg_ddr_training_delay_ps.reserve_para[8 + 3] = (1 << 7) | 0x10,//read dqs
266 .cfg_ddr_training_delay_ps.reserve_para[8 + 4] = (1 << 7) | 0x10,//read dqs
267 .cfg_ddr_training_delay_ps.reserve_para[8 + 5] = (1 << 7) | 0x10,//read dqs
268 .cfg_ddr_training_delay_ps.reserve_para[8 + 6] = (1 << 7) | 0x10,//read dqs
269 .cfg_ddr_training_delay_ps.reserve_para[8 + 7] = (1 << 7) | 0x10,//read dqs
270 //.cfg_ddr_training_delay_ps.dac_offset[0] = (1 << 7) | 0x3,
271 //.cfg_ddr_training_delay_ps.dac_offset[1] = (0 << 7) | 0xa,
272
273 #define AC_OFFSET (128)
274 #define WL0 (-128)
275 .cfg_ddr_training_delay_ps.ac_trace_delay[0] = 256 + AC_OFFSET,
276 .cfg_ddr_training_delay_ps.ac_trace_delay[1] = 256 + AC_OFFSET,
277 .cfg_ddr_training_delay_ps.ac_trace_delay[2] = 256 + AC_OFFSET,
278 .cfg_ddr_training_delay_ps.ac_trace_delay[3] = 256 + AC_OFFSET,
279 .cfg_ddr_training_delay_ps.ac_trace_delay[4] = 256 + AC_OFFSET,
280 .cfg_ddr_training_delay_ps.ac_trace_delay[5] = 256 + AC_OFFSET,
281 .cfg_ddr_training_delay_ps.ac_trace_delay[6] = 256 + AC_OFFSET,
282 .cfg_ddr_training_delay_ps.ac_trace_delay[7] = 256 + AC_OFFSET,
283 .cfg_ddr_training_delay_ps.ac_trace_delay[8] = 256 + AC_OFFSET,
284 .cfg_ddr_training_delay_ps.ac_trace_delay[9] = 256 + AC_OFFSET,
285 .cfg_ddr_training_delay_ps.ac_trace_delay[10] = 256 + AC_OFFSET,
286 .cfg_ddr_training_delay_ps.ac_trace_delay[11] = 256 + AC_OFFSET,
287 .cfg_ddr_training_delay_ps.ac_trace_delay[12] = 256 + AC_OFFSET,
288 .cfg_ddr_training_delay_ps.ac_trace_delay[13] = 256 + AC_OFFSET,
289 .cfg_ddr_training_delay_ps.ac_trace_delay[14] = 256 + AC_OFFSET,
290 .cfg_ddr_training_delay_ps.ac_trace_delay[15] = 256 + AC_OFFSET,
291 .cfg_ddr_training_delay_ps.ac_trace_delay[16] = 256 + AC_OFFSET,
292 .cfg_ddr_training_delay_ps.ac_trace_delay[17] = 256 + AC_OFFSET,
293 .cfg_ddr_training_delay_ps.ac_trace_delay[18] = 256 + AC_OFFSET,
294 .cfg_ddr_training_delay_ps.ac_trace_delay[19] = 256 + AC_OFFSET,
295 .cfg_ddr_training_delay_ps.ac_trace_delay[20] = 256 + AC_OFFSET,
296 .cfg_ddr_training_delay_ps.ac_trace_delay[21] = 256 + AC_OFFSET,
297 //cke 128 only 1UI margin
298 .cfg_ddr_training_delay_ps.ac_trace_delay[22] = 256 + AC_OFFSET,
299 .cfg_ddr_training_delay_ps.ac_trace_delay[23] = 256 + AC_OFFSET,
300 .cfg_ddr_training_delay_ps.ac_trace_delay[24] = 256 + AC_OFFSET,
301 .cfg_ddr_training_delay_ps.ac_trace_delay[25] = 256 + AC_OFFSET,
302 .cfg_ddr_training_delay_ps.ac_trace_delay[26] = 256 + AC_OFFSET,
303 .cfg_ddr_training_delay_ps.ac_trace_delay[27] = 256 + AC_OFFSET,
304 .cfg_ddr_training_delay_ps.ac_trace_delay[28] = 256 + AC_OFFSET,
305 .cfg_ddr_training_delay_ps.ac_trace_delay[29] = 256 + AC_OFFSET,
306
307 .cfg_ddr_training_delay_ps.ac_trace_delay[0] = 128 + AC_OFFSET, //pxp cs
308 .cfg_ddr_training_delay_ps.ac_trace_delay[1] = 128 - 30 + AC_OFFSET, //pxp cs
309 .cfg_ddr_training_delay_ps.ac_trace_delay[29] = 128 + AC_OFFSET, //ck
310 .cfg_ddr_training_delay_ps.ac_trace_delay[28] = 128 + AC_OFFSET,//ck
311 .cfg_ddr_training_delay_ps.ac_trace_delay[26] = 128 + AC_OFFSET, //cke
312 .cfg_ddr_training_delay_ps.ac_trace_delay[27] = 128 + AC_OFFSET, //cke
313 .cfg_ddr_training_delay_ps.ac_trace_delay[2] = 128 + AC_OFFSET,//odt0
314 .cfg_ddr_training_delay_ps.ac_trace_delay[11] = 128 + AC_OFFSET,//odt1
315#if ENABLE_8BIT_DDR4_CS0_CS1_SAME_PHASE
316 .cfg_ddr_training_delay_ps.ac_trace_delay[4] = 256 - 100 + AC_OFFSET,
317 .cfg_ddr_training_delay_ps.ac_trace_delay[5] = 256 - 100 + AC_OFFSET,
318 .cfg_ddr_training_delay_ps.ac_trace_delay[6] = 256 - 100 + AC_OFFSET,
319 .cfg_ddr_training_delay_ps.ac_trace_delay[8] = 256 - 50 + AC_OFFSET,
320 .cfg_ddr_training_delay_ps.ac_trace_delay[10] = 256 - 50 + AC_OFFSET,
321 .cfg_ddr_training_delay_ps.ac_trace_delay[13] = 256 - 50 + AC_OFFSET,
322 .cfg_ddr_training_delay_ps.ac_trace_delay[14] = 256 - 50 + AC_OFFSET,
323 .cfg_ddr_training_delay_ps.ac_trace_delay[16] = 256 - 50 + AC_OFFSET,
324 .cfg_ddr_training_delay_ps.ac_trace_delay[17] = 256 - 50 + AC_OFFSET,
325 .cfg_ddr_training_delay_ps.ac_trace_delay[19] = 256 - 50 + AC_OFFSET,
326 .cfg_ddr_training_delay_ps.ac_trace_delay[20] = 256 - 50 + AC_OFFSET,
327 .cfg_ddr_training_delay_ps.ac_trace_delay[21] = 256 - 100 + AC_OFFSET,
328 .cfg_ddr_training_delay_ps.ac_trace_delay[22] = 256 - 100 + AC_OFFSET,
329 .cfg_ddr_training_delay_ps.ac_trace_delay[23] = 256 - 50 + AC_OFFSET,
330 .cfg_ddr_training_delay_ps.ac_trace_delay[24] = 256 - 50 + AC_OFFSET,
331
332 .cfg_ddr_training_delay_ps.write_dqs_delay[0] = 128 + AC_OFFSET + WL0 + 40,
333 .cfg_ddr_training_delay_ps.write_dqs_delay[1] = 128 + AC_OFFSET + WL0 + 40,
334 .cfg_ddr_training_delay_ps.write_dqs_delay[2] = 128 + AC_OFFSET + WL0 + 90,
335 .cfg_ddr_training_delay_ps.write_dqs_delay[3] = 128 + AC_OFFSET + WL0 + 90,
336 .cfg_ddr_training_delay_ps.write_dqs_delay[4] = 128 + AC_OFFSET + WL0,
337 .cfg_ddr_training_delay_ps.write_dqs_delay[5] = 128 + AC_OFFSET + WL0,
338 .cfg_ddr_training_delay_ps.write_dqs_delay[6] = 128 + AC_OFFSET + WL0,
339 .cfg_ddr_training_delay_ps.write_dqs_delay[7] = 128 + AC_OFFSET + WL0,
340#else
341#ifdef USE_2RANK_16BIT_X2_DDR4
342 .cfg_ddr_training_delay_ps.ac_trace_delay[0] = 128 + AC_OFFSET - 50,
343 .cfg_ddr_training_delay_ps.ac_trace_delay[4] = 256 + AC_OFFSET - 100,
344 .cfg_ddr_training_delay_ps.ac_trace_delay[5] = 256 + AC_OFFSET - 100,
345 .cfg_ddr_training_delay_ps.ac_trace_delay[6] = 256 + AC_OFFSET - 50,
346 .cfg_ddr_training_delay_ps.ac_trace_delay[7] = 256 + AC_OFFSET - 50,
347 .cfg_ddr_training_delay_ps.ac_trace_delay[8] = 256 + AC_OFFSET - 50,
348 .cfg_ddr_training_delay_ps.ac_trace_delay[9] = 256 + AC_OFFSET - 50,
349 .cfg_ddr_training_delay_ps.ac_trace_delay[10] = 256 + AC_OFFSET - 50,
350 .cfg_ddr_training_delay_ps.ac_trace_delay[13] = 256 + AC_OFFSET - 50,
351 .cfg_ddr_training_delay_ps.ac_trace_delay[14] = 256 + AC_OFFSET - 50,
352 .cfg_ddr_training_delay_ps.ac_trace_delay[17] = 256 + AC_OFFSET - 50,
353 .cfg_ddr_training_delay_ps.ac_trace_delay[20] = 256 + AC_OFFSET - 50,
354 .cfg_ddr_training_delay_ps.ac_trace_delay[21] = 256 + AC_OFFSET - 50,
355 .cfg_ddr_training_delay_ps.ac_trace_delay[22] = 256 + AC_OFFSET - 50,
356 .cfg_ddr_training_delay_ps.ac_trace_delay[23] = 256 + AC_OFFSET - 50,
357 .cfg_ddr_training_delay_ps.ac_trace_delay[24] = 256 + AC_OFFSET - 50,
358#endif
359 .cfg_ddr_training_delay_ps.write_dqs_delay[0] = 128 + AC_OFFSET + WL0,
360 .cfg_ddr_training_delay_ps.write_dqs_delay[1] = 128 + AC_OFFSET + WL0,
361 .cfg_ddr_training_delay_ps.write_dqs_delay[2] = 128 + AC_OFFSET + WL0,
362 .cfg_ddr_training_delay_ps.write_dqs_delay[3] = 128 + AC_OFFSET + WL0,
363 .cfg_ddr_training_delay_ps.write_dqs_delay[4] = 128 + AC_OFFSET + WL0,
364 .cfg_ddr_training_delay_ps.write_dqs_delay[5] = 128 + AC_OFFSET + WL0,
365 .cfg_ddr_training_delay_ps.write_dqs_delay[6] = 128 + AC_OFFSET + WL0,
366 .cfg_ddr_training_delay_ps.write_dqs_delay[7] = 128 + AC_OFFSET + WL0,
367#endif
368
369 .cfg_ddr_training_delay_ps.read_dqs_delay[0] = 128,
370 .cfg_ddr_training_delay_ps.read_dqs_delay[1] = 128,
371 .cfg_ddr_training_delay_ps.read_dqs_delay[2] = 128,
372 .cfg_ddr_training_delay_ps.read_dqs_delay[3] = 128,
373 .cfg_ddr_training_delay_ps.read_dqs_delay[4] = 128,
374 .cfg_ddr_training_delay_ps.read_dqs_delay[5] = 128,
375 .cfg_ddr_training_delay_ps.read_dqs_delay[6] = 128,
376 .cfg_ddr_training_delay_ps.read_dqs_delay[7] = 128,
377
378 .cfg_ddr_training_delay_ps.soc_bit_vref0[0] = 0x000000,
379 //0 for auto training
380 .cfg_ddr_training_delay_ps.dram_vref[0] = 0x00000000,
381
382 },
383//};
384#endif
385
xiane88c21372024-09-25 16:42:41 +0900386#if LPDDR4_SKT
387#define CACLU_CLK_LP4 1584 //1792//600 //1200 //(1900)// (1440)//(1008)
388//ddr_set_ps0_only_t __attribute__ ((aligned(8))) ddr_set_t_default_lp4 = {
389 {
390 .cfg_board_common_setting.timming_magic = 0,
391 .cfg_board_common_setting.timming_max_valid_configs = 1,
ckkim5dcc3172024-12-23 17:33:20 +0900392 .cfg_board_common_setting.timming_struct_version = 9215,
xiane88c21372024-09-25 16:42:41 +0900393 .cfg_board_common_setting.timming_struct_org_size =
394 sizeof(ddr_set_ps0_only_t),
395 .cfg_board_common_setting.timming_struct_real_size = 0,
396 .cfg_board_common_setting.fast_boot = {
397 0x0, 0, 0, 0
398 },
399 .cfg_board_common_setting.ddr_func = DDR_FUNC_CONFIG_DFE_FUNCTION |
ckkim5dcc3172024-12-23 17:33:20 +0900400 DDR_FUNC_CONFIG_DISABLE_DDR_DVFS_FUNCTION,
401 //DDR_FUNC_CONFIG_ENABLE_PZQ_DET_DRAM_TYPE_RETURN,
xiane88c21372024-09-25 16:42:41 +0900402 .cfg_board_common_setting.board_id = CONFIG_BOARD_ID_MASK,
403 .cfg_board_common_setting.DramType = CONFIG_DDR_TYPE_LPDDR4,
404 .cfg_board_common_setting.enable_lpddr4x_mode = 0,
405 //0 force lp4x 1 force lp4
406 //2 auto 4x use nn 4 use pn drivere
407 //3 auto + force 4 4x both use nn driver
408 .cfg_board_common_setting.dram_rank_config = CONFIG_DDR0_32BIT_RANK0_CH0,
409 //.cfg_board_common_setting.dram_ch0_size_MB =
410 // (DRAM_SIZE_ID_256MBX2 << CONFIG_CS0_BYTE_01_SIZE_256_ID_OFFSET) +
411 // (DRAM_SIZE_ID_256MBX2 << CONFIG_CS0_BYTE_23_SIZE_256_ID_OFFSET) +
412 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_01_SIZE_256_ID_OFFSET) +
413 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_23_SIZE_256_ID_OFFSET),
414 //.cfg_board_common_setting.dram_ch1_size_MB =
415 // (DRAM_SIZE_ID_256MBX2 << CONFIG_CS0_BYTE_01_SIZE_256_ID_OFFSET) +
416 // (DRAM_SIZE_ID_256MBX2 << CONFIG_CS0_BYTE_23_SIZE_256_ID_OFFSET) +
417 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_01_SIZE_256_ID_OFFSET) +
418 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_23_SIZE_256_ID_OFFSET),
419 .cfg_board_common_setting.dram_ch0_size_MB = 0xffff,
420 .cfg_board_common_setting.DisabledDbyte[0] = 0x00,
421 //bit 0 -3 ch0 cs0 ,bit 4-7 ch0 cs1,
422 .cfg_board_common_setting.DisabledDbyte[1] = 0xf0,
423 //bit 0 -3 ch1 cs0 ,bit 4-7 ch1
424 .cfg_board_common_setting.dram_x4x8x16_mode = CONFIG_DRAM_MODE_X16,
425 .cfg_board_common_setting.Is2Ttiming = CONFIG_USE_DDR_2T_MODE,
426 .cfg_board_common_setting.log_level = 0xff,
ckkim5dcc3172024-12-23 17:33:20 +0900427 .cfg_board_common_setting.log_level = 4,
xiane88c21372024-09-25 16:42:41 +0900428 //4,//LOG_LEVEL_BASIC,
429 .cfg_board_common_setting.dbi_enable = 0,
430 .cfg_board_common_setting.org_tdqs2dq = 0,
431 .cfg_board_common_setting.reserve1_test = {
432 0
433 },
434 .cfg_board_common_setting.ddr_vddee_setting = {
435 0
436 },
437 .cfg_board_SI_setting_ps.DRAMFreq = CACLU_CLK_LP4,
438 .cfg_board_SI_setting_ps.training_SequenceCtrl = 0,
439 .cfg_board_SI_setting_ps.dfi_odt_config = DDR_DRAM_ODT_W_CS0_ODT0,
440 .cfg_board_SI_setting_ps.clk_drv_ohm = 40,
441 .cfg_board_SI_setting_ps.cs_drv_ohm = 40,
442 .cfg_board_SI_setting_ps.ac_drv_ohm = 40,
ckkim5dcc3172024-12-23 17:33:20 +0900443 .cfg_board_SI_setting_ps.soc_data_drv_ohm_p = 34,
444 .cfg_board_SI_setting_ps.soc_data_drv_ohm_n = 34,
xiane88c21372024-09-25 16:42:41 +0900445 .cfg_board_SI_setting_ps.soc_data_odt_ohm_p = 0,
ckkim5dcc3172024-12-23 17:33:20 +0900446 .cfg_board_SI_setting_ps.soc_data_odt_ohm_n = 80, //60,
xiane88c21372024-09-25 16:42:41 +0900447 .cfg_board_SI_setting_ps.dram_data_drv_ohm = 40,
ckkim5dcc3172024-12-23 17:33:20 +0900448 .cfg_board_SI_setting_ps.dram_data_odt_ohm = 48,
xiane88c21372024-09-25 16:42:41 +0900449 .cfg_board_SI_setting_ps.dram_data_wr_odt_ohm = 0,
450 .cfg_board_SI_setting_ps.dram_ac_odt_ohm = 120,//240,//120,
ckkim5dcc3172024-12-23 17:33:20 +0900451#ifdef LPDDR4_USE_2LAYER_BOARD
452 .cfg_board_SI_setting_ps.soc_data_odt_ohm_n = 120,
453#endif
xiane88c21372024-09-25 16:42:41 +0900454 .cfg_board_SI_setting_ps.dram_drv_pull_up_cal_ohm =
455 DDR_DRAM_LPDDR4_ODT_40_OHM,
456 .cfg_board_SI_setting_ps.lpddr4_dram_vout_range =
457 1,//DDR_DRAM_LPDDR4_OUTPUT_1_3_VDDQ,
458 .cfg_board_SI_setting_ps.vref_ac_permil = 375,//420,
459 .cfg_board_SI_setting_ps.vref_soc_data_permil = 0,
460 .cfg_board_SI_setting_ps.vref_dram_data_permil = 0,
461 .cfg_board_SI_setting_ps.max_core_timmming_frequency = 0,
462
463 .cfg_board_common_setting.ddr_rfc_type = 0, // 13,
464 .cfg_board_common_setting.pll_ssc_mode = 0x00000000, // 0,0x00000044
465 .cfg_board_common_setting.ac_pinmux = {
466 7, 1, 0, 3, 5, 4, 2, 0, 0,
467 0, 6, 8, 9, 28, 29,
468 0, 12, 14, 10, 0, 0, 17, 16, 11,
469 15, 13, 18, 19, 26, 27,
470 },
471
472 //.cfg_ddr_training_delay_ps.rx_offset[0] = (1 << 7) | 0x10,
473 //.cfg_ddr_training_delay_ps.tx_offset[0] = (1 << 7) | 0x8,
474 .cfg_ddr_training_delay_ps.dac_offset[0] = (1 << 7) | 0x3,
475 .cfg_ddr_training_delay_ps.dac_offset[1] = (0 << 7) | 0x3,
476 .cfg_ddr_training_delay_ps.reserve_para[0] = (1 << 7) | 0x8, //write dqs
477 .cfg_ddr_training_delay_ps.reserve_para[1] = (1 << 7) | 0x8, //write dqs
478 .cfg_ddr_training_delay_ps.reserve_para[2] = (1 << 7) | 0x8, //write dqs
479 .cfg_ddr_training_delay_ps.reserve_para[3] = (1 << 7) | 0x8, //write dqs
480 .cfg_ddr_training_delay_ps.reserve_para[4] = (1 << 7) | 0x8, //write dqs
481 .cfg_ddr_training_delay_ps.reserve_para[5] = (1 << 7) | 0x8, //write dqs
482 .cfg_ddr_training_delay_ps.reserve_para[6] = (1 << 7) | 0x8, //write dqs
483 .cfg_ddr_training_delay_ps.reserve_para[7] = (1 << 7) | 0x8, //write dqs
484 .cfg_ddr_training_delay_ps.reserve_para[8 + 0] = (1 << 7) | 0x10,//read dqs
485 .cfg_ddr_training_delay_ps.reserve_para[8 + 1] = (1 << 7) | 0x10,//read dqs
486 .cfg_ddr_training_delay_ps.reserve_para[8 + 2] = (1 << 7) | 0x10,//read dqs
487 .cfg_ddr_training_delay_ps.reserve_para[8 + 3] = (1 << 7) | 0x10,//read dqs
488 .cfg_ddr_training_delay_ps.reserve_para[8 + 4] = (1 << 7) | 0x10,//read dqs
489 .cfg_ddr_training_delay_ps.reserve_para[8 + 5] = (1 << 7) | 0x10,//read dqs
490 .cfg_ddr_training_delay_ps.reserve_para[8 + 6] = (1 << 7) | 0x10,//read dqs
491 .cfg_ddr_training_delay_ps.reserve_para[8 + 7] = (1 << 7) | 0x10,//read dqs
492 .cfg_ddr_training_delay_ps.ac_trace_delay[0] = 256,
493 .cfg_ddr_training_delay_ps.ac_trace_delay[1] = 256,
494 .cfg_ddr_training_delay_ps.ac_trace_delay[2] = 256,
495 .cfg_ddr_training_delay_ps.ac_trace_delay[3] = 256,
496 .cfg_ddr_training_delay_ps.ac_trace_delay[4] = 256,
497 .cfg_ddr_training_delay_ps.ac_trace_delay[5] = 256,
498 .cfg_ddr_training_delay_ps.ac_trace_delay[6] = 256,
499 .cfg_ddr_training_delay_ps.ac_trace_delay[7] = 256,
500 .cfg_ddr_training_delay_ps.ac_trace_delay[8] = 256,
501 .cfg_ddr_training_delay_ps.ac_trace_delay[9] = 256,
502 .cfg_ddr_training_delay_ps.ac_trace_delay[10] = 256,
503 .cfg_ddr_training_delay_ps.ac_trace_delay[11] = 256,
504 .cfg_ddr_training_delay_ps.ac_trace_delay[12] = 256,
505 .cfg_ddr_training_delay_ps.ac_trace_delay[13] = 256,
506 .cfg_ddr_training_delay_ps.ac_trace_delay[14] = 256,
507 .cfg_ddr_training_delay_ps.ac_trace_delay[15] = 256,
508 .cfg_ddr_training_delay_ps.ac_trace_delay[16] = 256,
509 .cfg_ddr_training_delay_ps.ac_trace_delay[17] = 256,
510 .cfg_ddr_training_delay_ps.ac_trace_delay[18] = 256,
511 .cfg_ddr_training_delay_ps.ac_trace_delay[19] = 256,
512 .cfg_ddr_training_delay_ps.ac_trace_delay[20] = 256,
513 .cfg_ddr_training_delay_ps.ac_trace_delay[21] = 256,
514 .cfg_ddr_training_delay_ps.ac_trace_delay[22] = 256,
515 .cfg_ddr_training_delay_ps.ac_trace_delay[23] = 256,
516 .cfg_ddr_training_delay_ps.ac_trace_delay[24] = 256,
517 .cfg_ddr_training_delay_ps.ac_trace_delay[25] = 256,
518 .cfg_ddr_training_delay_ps.ac_trace_delay[26] = 256,
519 .cfg_ddr_training_delay_ps.ac_trace_delay[27] = 256,
520 .cfg_ddr_training_delay_ps.ac_trace_delay[28] = 256,
521 .cfg_ddr_training_delay_ps.ac_trace_delay[29] = 256,
522
523 .cfg_ddr_training_delay_ps.ac_trace_delay[10] = 256 + 0, //a_cs0
524 .cfg_ddr_training_delay_ps.ac_trace_delay[0] = 256 + 0, //a_cs1
525 .cfg_ddr_training_delay_ps.ac_trace_delay[21] = 128 + 128, //b_cs1
526 .cfg_ddr_training_delay_ps.ac_trace_delay[22] = 128 + 128, //b_cs0
527
528 .cfg_ddr_training_delay_ps.write_dqs_delay[0] = 128,
529 .cfg_ddr_training_delay_ps.write_dqs_delay[1] = 128,
530 .cfg_ddr_training_delay_ps.write_dqs_delay[2] = 128,
531 .cfg_ddr_training_delay_ps.write_dqs_delay[3] = 128,
532 .cfg_ddr_training_delay_ps.write_dqs_delay[4] = 128,
533 .cfg_ddr_training_delay_ps.write_dqs_delay[5] = 128,
534 .cfg_ddr_training_delay_ps.write_dqs_delay[6] = 128,
535 .cfg_ddr_training_delay_ps.write_dqs_delay[7] = 128,
536
537 .cfg_ddr_training_delay_ps.read_dqs_delay[0] = 128 - 32,
538 .cfg_ddr_training_delay_ps.read_dqs_delay[1] = 128 - 32,
539 .cfg_ddr_training_delay_ps.read_dqs_delay[2] = 128 - 32,
540 .cfg_ddr_training_delay_ps.read_dqs_delay[3] = 128 - 32,
541 .cfg_ddr_training_delay_ps.read_dqs_delay[4] = 128 - 32,
542 .cfg_ddr_training_delay_ps.read_dqs_delay[5] = 128 - 32,
543 .cfg_ddr_training_delay_ps.read_dqs_delay[6] = 128 - 32,
544 .cfg_ddr_training_delay_ps.read_dqs_delay[7] = 128 - 32,
545
546 .cfg_ddr_training_delay_ps.soc_bit_vref0[0] = 0x0000000,
547 .cfg_ddr_training_delay_ps.dram_vref[0] = 0x00000000,
548
549 },
550//};
551#endif
552
553#if DDR4_SKT
554//s7 signoff with 3200MBPS
ckkim5dcc3172024-12-23 17:33:20 +0900555#if defined USE_2RANK_16BIT_X2_DDR4 || defined ENABLE_8BIT_DDR4_CS0_CS1_SAME_PHASE
556//USE_2RANK_16BIT_DDR4 use ap222 board
557//#define ENABLE_8BIT_DDR4_CS0_CS1_SAME_PHASE 1 //t233
558#define CACLU_CLK_D4 1320// 600
559#else
560#define CACLU_CLK_D4 1584
561#endif
xiane88c21372024-09-25 16:42:41 +0900562//ddr_set_ps0_only_t __attribute__ ((aligned(8))) ddr_set_t_default_ddr4 = {
563 {
564 .cfg_board_common_setting.timming_magic = 0,
565 .cfg_board_common_setting.timming_max_valid_configs = 1,
ckkim5dcc3172024-12-23 17:33:20 +0900566 .cfg_board_common_setting.timming_struct_version = 9215,
xiane88c21372024-09-25 16:42:41 +0900567 .cfg_board_common_setting.timming_struct_org_size =
568 sizeof(ddr_set_ps0_only_t),
569 .cfg_board_common_setting.timming_struct_real_size = 0,
570 .cfg_board_common_setting.fast_boot = {
571 0, 0, 0, 0
572 },
573 .cfg_board_common_setting.ddr_func = DDR_FUNC_CONFIG_DFE_FUNCTION |
ckkim5dcc3172024-12-23 17:33:20 +0900574 DDR_FUNC_CONFIG_DISABLE_DDR_DVFS_FUNCTION,
575 //DDR_FUNC_CONFIG_ENABLE_PZQ_DET_DRAM_TYPE_RETURN,
xiane88c21372024-09-25 16:42:41 +0900576 .cfg_board_common_setting.board_id = CONFIG_BOARD_ID_MASK,
577 .cfg_board_common_setting.DramType = CONFIG_DDR_TYPE_DDR4,
578 .cfg_board_common_setting.enable_lpddr4x_mode = 0,
579 .cfg_board_common_setting.dram_rank_config =
580 //CONFIG_DDR0_16BIT_CH0,
581 CONFIG_DDR0_32BIT_RANK0_CH0,
582 //.cfg_board_common_setting.dram_ch0_size_MB =
583 // (DRAM_SIZE_ID_256MBX4 << CONFIG_CS0_BYTE_01_SIZE_256_ID_OFFSET) +
584 // (DRAM_SIZE_ID_256MBX4 << CONFIG_CS0_BYTE_23_SIZE_256_ID_OFFSET) +
585 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_01_SIZE_256_ID_OFFSET) +
586 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_23_SIZE_256_ID_OFFSET),
587 //.cfg_board_common_setting.dram_ch1_size_MB =
588 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS0_BYTE_01_SIZE_256_ID_OFFSET) +
589 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS0_BYTE_23_SIZE_256_ID_OFFSET) +
590 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_01_SIZE_256_ID_OFFSET) +
591 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_23_SIZE_256_ID_OFFSET),
592 .cfg_board_common_setting.dram_ch0_size_MB = 0xffff,
593 .cfg_board_common_setting.DisabledDbyte[0] = 0x00,
594 //bit 0 -3 ch0 cs0 ,bit 4-7 ch0 cs1,
595 //.cfg_board_common_setting.DisabledDbyte[1] = 0xfc,
596 //bit 0 -3 ch1 cs0 ,bit 4-7 ch1
ckkim5dcc3172024-12-23 17:33:20 +0900597 .cfg_board_common_setting.dram_x4x8x16_mode = CONFIG_DRAM_MODE_FORCE_DISABLE_X8,
598 //.cfg_board_common_setting.dram_x4x8x16_mode = CONFIG_DRAM_MODE_FORCE_ENABLE_X8,
xiane88c21372024-09-25 16:42:41 +0900599 .cfg_board_common_setting.Is2Ttiming = CONFIG_USE_DDR_2T_MODE,
600 .cfg_board_common_setting.log_level = 0xff,
ckkim5dcc3172024-12-23 17:33:20 +0900601 .cfg_board_common_setting.log_level = 4,
xiane88c21372024-09-25 16:42:41 +0900602 //4,//LOG_LEVEL_BASIC,
603 .cfg_board_SI_setting_ps.DRAMFreq = CACLU_CLK_D4,
604 .cfg_board_SI_setting_ps.training_SequenceCtrl = 0,
605 .cfg_board_SI_setting_ps.dfi_odt_config = DDR_DRAM_ODT_W_CS0_ODT0,
606 .cfg_board_SI_setting_ps.dfi_odt_config = DDR_DRAM_ODT_DDR4_PARK_ENABLE,
607 .cfg_board_SI_setting_ps.vref_ac_permil = 0,
608 .cfg_board_SI_setting_ps.vref_soc_data_permil = 0,
ckkim5dcc3172024-12-23 17:33:20 +0900609 .cfg_board_SI_setting_ps.vref_dram_data_permil = 0,//800,
xiane88c21372024-09-25 16:42:41 +0900610 .cfg_board_SI_setting_ps.max_core_timmming_frequency = 0,
611 .cfg_board_common_setting.dbi_enable = 0x00000000,
612 .cfg_board_common_setting.ddr_rfc_type = 0,
613 .cfg_board_common_setting.pll_ssc_mode = 0x00000000,
ckkim5dcc3172024-12-23 17:33:20 +0900614#if ENABLE_8BIT_DDR4_CS0_CS1_SAME_PHASE
615 //.cfg_board_common_setting.dram_x4x8x16_mode = CONFIG_DRAM_MODE_FORCE_DISABLE_X8,
616 .cfg_board_common_setting.dram_x4x8x16_mode = CONFIG_DRAM_MODE_FORCE_ENABLE_X8,
617 .cfg_board_SI_setting_ps.clk_drv_ohm = 34,
618 .cfg_board_SI_setting_ps.cs_drv_ohm = 34,
619 .cfg_board_SI_setting_ps.ac_drv_ohm = 34,
620 .cfg_board_SI_setting_ps.soc_data_drv_ohm_p = 34,
621 .cfg_board_SI_setting_ps.soc_data_drv_ohm_n = 34,
xiane88c21372024-09-25 16:42:41 +0900622 .cfg_board_SI_setting_ps.soc_data_odt_ohm_p = 60,
623 .cfg_board_SI_setting_ps.soc_data_odt_ohm_n = 0,
624 .cfg_board_SI_setting_ps.dram_data_drv_ohm = 34,
625 .cfg_board_SI_setting_ps.dram_data_odt_ohm = 60,
626 .cfg_board_SI_setting_ps.dram_data_wr_odt_ohm = 0,
627 .cfg_board_SI_setting_ps.dram_ac_odt_ohm = 120,
628 .cfg_board_SI_setting_ps.dram_drv_pull_up_cal_ohm =
629 DDR_DRAM_LPDDR4_ODT_40_OHM,
630 .cfg_board_SI_setting_ps.lpddr4_dram_vout_range =
631 DDR_DRAM_LPDDR4_OUTPUT_1_3_VDDQ,
632 .cfg_board_common_setting.ac_pinmux = {
ckkim5dcc3172024-12-23 17:33:20 +0900633 22, 22, 26, 3, 7, 5, 6, 4, 0, 19,
634 11, 27, 18, 14, 17, 16, 20, 15, 12, 10, 9,
635 8, 21, 2, 13, 1, 24, 25, 28, 29,
636 },
637#else
638 .cfg_board_SI_setting_ps.clk_drv_ohm = 40,
639 .cfg_board_SI_setting_ps.cs_drv_ohm = 40,
640 .cfg_board_SI_setting_ps.ac_drv_ohm = 40,
641 .cfg_board_SI_setting_ps.soc_data_drv_ohm_p = 40,
642 .cfg_board_SI_setting_ps.soc_data_drv_ohm_n = 40,
643 .cfg_board_SI_setting_ps.soc_data_odt_ohm_p = 60,
644 .cfg_board_SI_setting_ps.soc_data_odt_ohm_n = 0,
645 .cfg_board_SI_setting_ps.dram_data_drv_ohm = 34,
646 .cfg_board_SI_setting_ps.dram_data_odt_ohm = 60,
647#ifdef USE_2RANK_16BIT_X2_DDR4
648 .cfg_board_common_setting.dram_x4x8x16_mode = CONFIG_DRAM_MODE_FORCE_DISABLE_X8,
649 //.cfg_board_common_setting.dram_x4x8x16_mode = CONFIG_DRAM_MODE_FORCE_ENABLE_X8,
650 .cfg_board_SI_setting_ps.vref_soc_data_permil = 820,
651 .cfg_board_SI_setting_ps.vref_dram_data_permil = 820,//800,
652 .cfg_board_SI_setting_ps.clk_drv_ohm = 34,
653 .cfg_board_SI_setting_ps.cs_drv_ohm = 40,
654 .cfg_board_SI_setting_ps.ac_drv_ohm = 40,
655 .cfg_board_SI_setting_ps.soc_data_drv_ohm_p = 48,
656 .cfg_board_SI_setting_ps.soc_data_drv_ohm_n = 48,
657 .cfg_board_SI_setting_ps.soc_data_odt_ohm_p = 48,
658 .cfg_board_SI_setting_ps.soc_data_odt_ohm_n = 0,
659 .cfg_board_SI_setting_ps.dram_data_drv_ohm = 48,
660 .cfg_board_SI_setting_ps.dram_data_odt_ohm = 48,
661#endif
662 .cfg_board_SI_setting_ps.dram_data_wr_odt_ohm = 0,
663 .cfg_board_SI_setting_ps.dram_ac_odt_ohm = 120,
664 .cfg_board_SI_setting_ps.dram_drv_pull_up_cal_ohm =
665 DDR_DRAM_LPDDR4_ODT_40_OHM,
666 .cfg_board_SI_setting_ps.lpddr4_dram_vout_range =
667 DDR_DRAM_LPDDR4_OUTPUT_1_3_VDDQ,
668 .cfg_board_common_setting.ac_pinmux = {
xiane88c21372024-09-25 16:42:41 +0900669 23, 22, 26, 3, 7, 5, 6, 4, 0, 19,
670 11, 27, 18, 14, 17, 16, 20, 15, 12, 10, 9,
671 8, 21, 2, 13, 1, 24, 25, 28, 29,
672 },
ckkim5dcc3172024-12-23 17:33:20 +0900673#endif
xiane88c21372024-09-25 16:42:41 +0900674 //.cfg_ddr_training_delay_ps.tx_offset[0] = (0 << 7) | 0x0,
675 //.cfg_ddr_training_delay_ps.rx_offset[0] = (0 << 7) | 0x0,
676 .cfg_ddr_training_delay_ps.reserve_para[0] = (1 << 7) | 0x8, //write dqs
677 .cfg_ddr_training_delay_ps.reserve_para[1] = (1 << 7) | 0x8, //write dqs
678 .cfg_ddr_training_delay_ps.reserve_para[2] = (1 << 7) | 0x8, //write dqs
679 .cfg_ddr_training_delay_ps.reserve_para[3] = (1 << 7) | 0x8, //write dqs
680 .cfg_ddr_training_delay_ps.reserve_para[4] = (1 << 7) | 0x8, //write dqs
681 .cfg_ddr_training_delay_ps.reserve_para[5] = (1 << 7) | 0x8, //write dqs
682 .cfg_ddr_training_delay_ps.reserve_para[6] = (1 << 7) | 0x8, //write dqs
683 .cfg_ddr_training_delay_ps.reserve_para[7] = (1 << 7) | 0x8, //write dqs
684 .cfg_ddr_training_delay_ps.reserve_para[8 + 0] = (1 << 7) | 0x10,//read dqs
685 .cfg_ddr_training_delay_ps.reserve_para[8 + 1] = (1 << 7) | 0x10,//read dqs
686 .cfg_ddr_training_delay_ps.reserve_para[8 + 2] = (1 << 7) | 0x10,//read dqs
687 .cfg_ddr_training_delay_ps.reserve_para[8 + 3] = (1 << 7) | 0x10,//read dqs
688 .cfg_ddr_training_delay_ps.reserve_para[8 + 4] = (1 << 7) | 0x10,//read dqs
689 .cfg_ddr_training_delay_ps.reserve_para[8 + 5] = (1 << 7) | 0x10,//read dqs
690 .cfg_ddr_training_delay_ps.reserve_para[8 + 6] = (1 << 7) | 0x10,//read dqs
691 .cfg_ddr_training_delay_ps.reserve_para[8 + 7] = (1 << 7) | 0x10,//read dqs
ckkim5dcc3172024-12-23 17:33:20 +0900692 //.cfg_ddr_training_delay_ps.dac_offset[0] = (1 << 7) | 0x3,
693 //.cfg_ddr_training_delay_ps.dac_offset[1] = (0 << 7) | 0xa,
xiane88c21372024-09-25 16:42:41 +0900694
695 #define AC_OFFSET (128)
ckkim5dcc3172024-12-23 17:33:20 +0900696 #define WL0 (-128)
xiane88c21372024-09-25 16:42:41 +0900697 .cfg_ddr_training_delay_ps.ac_trace_delay[0] = 256 + AC_OFFSET,
698 .cfg_ddr_training_delay_ps.ac_trace_delay[1] = 256 + AC_OFFSET,
699 .cfg_ddr_training_delay_ps.ac_trace_delay[2] = 256 + AC_OFFSET,
700 .cfg_ddr_training_delay_ps.ac_trace_delay[3] = 256 + AC_OFFSET,
701 .cfg_ddr_training_delay_ps.ac_trace_delay[4] = 256 + AC_OFFSET,
702 .cfg_ddr_training_delay_ps.ac_trace_delay[5] = 256 + AC_OFFSET,
703 .cfg_ddr_training_delay_ps.ac_trace_delay[6] = 256 + AC_OFFSET,
704 .cfg_ddr_training_delay_ps.ac_trace_delay[7] = 256 + AC_OFFSET,
705 .cfg_ddr_training_delay_ps.ac_trace_delay[8] = 256 + AC_OFFSET,
706 .cfg_ddr_training_delay_ps.ac_trace_delay[9] = 256 + AC_OFFSET,
707 .cfg_ddr_training_delay_ps.ac_trace_delay[10] = 256 + AC_OFFSET,
708 .cfg_ddr_training_delay_ps.ac_trace_delay[11] = 256 + AC_OFFSET,
709 .cfg_ddr_training_delay_ps.ac_trace_delay[12] = 256 + AC_OFFSET,
710 .cfg_ddr_training_delay_ps.ac_trace_delay[13] = 256 + AC_OFFSET,
711 .cfg_ddr_training_delay_ps.ac_trace_delay[14] = 256 + AC_OFFSET,
712 .cfg_ddr_training_delay_ps.ac_trace_delay[15] = 256 + AC_OFFSET,
713 .cfg_ddr_training_delay_ps.ac_trace_delay[16] = 256 + AC_OFFSET,
714 .cfg_ddr_training_delay_ps.ac_trace_delay[17] = 256 + AC_OFFSET,
715 .cfg_ddr_training_delay_ps.ac_trace_delay[18] = 256 + AC_OFFSET,
716 .cfg_ddr_training_delay_ps.ac_trace_delay[19] = 256 + AC_OFFSET,
717 .cfg_ddr_training_delay_ps.ac_trace_delay[20] = 256 + AC_OFFSET,
718 .cfg_ddr_training_delay_ps.ac_trace_delay[21] = 256 + AC_OFFSET,
719 //cke 128 only 1UI margin
720 .cfg_ddr_training_delay_ps.ac_trace_delay[22] = 256 + AC_OFFSET,
721 .cfg_ddr_training_delay_ps.ac_trace_delay[23] = 256 + AC_OFFSET,
722 .cfg_ddr_training_delay_ps.ac_trace_delay[24] = 256 + AC_OFFSET,
723 .cfg_ddr_training_delay_ps.ac_trace_delay[25] = 256 + AC_OFFSET,
724 .cfg_ddr_training_delay_ps.ac_trace_delay[26] = 256 + AC_OFFSET,
725 .cfg_ddr_training_delay_ps.ac_trace_delay[27] = 256 + AC_OFFSET,
726 .cfg_ddr_training_delay_ps.ac_trace_delay[28] = 256 + AC_OFFSET,
727 .cfg_ddr_training_delay_ps.ac_trace_delay[29] = 256 + AC_OFFSET,
728
729 .cfg_ddr_training_delay_ps.ac_trace_delay[0] = 128 + AC_OFFSET, //pxp cs
730 .cfg_ddr_training_delay_ps.ac_trace_delay[1] = 128 - 30 + AC_OFFSET, //pxp cs
731 .cfg_ddr_training_delay_ps.ac_trace_delay[29] = 128 + AC_OFFSET, //ck
732 .cfg_ddr_training_delay_ps.ac_trace_delay[28] = 128 + AC_OFFSET,//ck
733 .cfg_ddr_training_delay_ps.ac_trace_delay[26] = 128 + AC_OFFSET, //cke
734 .cfg_ddr_training_delay_ps.ac_trace_delay[27] = 128 + AC_OFFSET, //cke
735 .cfg_ddr_training_delay_ps.ac_trace_delay[2] = 128 + AC_OFFSET,//odt0
736 .cfg_ddr_training_delay_ps.ac_trace_delay[11] = 128 + AC_OFFSET,//odt1
ckkim5dcc3172024-12-23 17:33:20 +0900737#if ENABLE_8BIT_DDR4_CS0_CS1_SAME_PHASE
738 .cfg_ddr_training_delay_ps.ac_trace_delay[4] = 256 - 100 + AC_OFFSET,
739 .cfg_ddr_training_delay_ps.ac_trace_delay[5] = 256 - 100 + AC_OFFSET,
740 .cfg_ddr_training_delay_ps.ac_trace_delay[6] = 256 - 100 + AC_OFFSET,
741 .cfg_ddr_training_delay_ps.ac_trace_delay[8] = 256 - 50 + AC_OFFSET,
742 .cfg_ddr_training_delay_ps.ac_trace_delay[10] = 256 - 50 + AC_OFFSET,
743 .cfg_ddr_training_delay_ps.ac_trace_delay[13] = 256 - 50 + AC_OFFSET,
744 .cfg_ddr_training_delay_ps.ac_trace_delay[14] = 256 - 50 + AC_OFFSET,
745 .cfg_ddr_training_delay_ps.ac_trace_delay[16] = 256 - 50 + AC_OFFSET,
746 .cfg_ddr_training_delay_ps.ac_trace_delay[17] = 256 - 50 + AC_OFFSET,
747 .cfg_ddr_training_delay_ps.ac_trace_delay[19] = 256 - 50 + AC_OFFSET,
748 .cfg_ddr_training_delay_ps.ac_trace_delay[20] = 256 - 50 + AC_OFFSET,
749 .cfg_ddr_training_delay_ps.ac_trace_delay[21] = 256 - 100 + AC_OFFSET,
750 .cfg_ddr_training_delay_ps.ac_trace_delay[22] = 256 - 100 + AC_OFFSET,
751 .cfg_ddr_training_delay_ps.ac_trace_delay[23] = 256 - 50 + AC_OFFSET,
752 .cfg_ddr_training_delay_ps.ac_trace_delay[24] = 256 - 50 + AC_OFFSET,
xiane88c21372024-09-25 16:42:41 +0900753
ckkim5dcc3172024-12-23 17:33:20 +0900754 .cfg_ddr_training_delay_ps.write_dqs_delay[0] = 128 + AC_OFFSET + WL0 + 40,
755 .cfg_ddr_training_delay_ps.write_dqs_delay[1] = 128 + AC_OFFSET + WL0 + 40,
756 .cfg_ddr_training_delay_ps.write_dqs_delay[2] = 128 + AC_OFFSET + WL0 + 90,
757 .cfg_ddr_training_delay_ps.write_dqs_delay[3] = 128 + AC_OFFSET + WL0 + 90,
758 .cfg_ddr_training_delay_ps.write_dqs_delay[4] = 128 + AC_OFFSET + WL0,
759 .cfg_ddr_training_delay_ps.write_dqs_delay[5] = 128 + AC_OFFSET + WL0,
760 .cfg_ddr_training_delay_ps.write_dqs_delay[6] = 128 + AC_OFFSET + WL0,
761 .cfg_ddr_training_delay_ps.write_dqs_delay[7] = 128 + AC_OFFSET + WL0,
762#else
763#ifdef USE_2RANK_16BIT_X2_DDR4
764 .cfg_ddr_training_delay_ps.ac_trace_delay[0] = 128 + AC_OFFSET - 50,
765 .cfg_ddr_training_delay_ps.ac_trace_delay[4] = 256 + AC_OFFSET - 100,
766 .cfg_ddr_training_delay_ps.ac_trace_delay[5] = 256 + AC_OFFSET - 100,
767 .cfg_ddr_training_delay_ps.ac_trace_delay[6] = 256 + AC_OFFSET - 50,
768 .cfg_ddr_training_delay_ps.ac_trace_delay[7] = 256 + AC_OFFSET - 50,
769 .cfg_ddr_training_delay_ps.ac_trace_delay[8] = 256 + AC_OFFSET - 50,
770 .cfg_ddr_training_delay_ps.ac_trace_delay[9] = 256 + AC_OFFSET - 50,
771 .cfg_ddr_training_delay_ps.ac_trace_delay[10] = 256 + AC_OFFSET - 50,
772 .cfg_ddr_training_delay_ps.ac_trace_delay[13] = 256 + AC_OFFSET - 50,
773 .cfg_ddr_training_delay_ps.ac_trace_delay[14] = 256 + AC_OFFSET - 50,
774 .cfg_ddr_training_delay_ps.ac_trace_delay[17] = 256 + AC_OFFSET - 50,
775 .cfg_ddr_training_delay_ps.ac_trace_delay[20] = 256 + AC_OFFSET - 50,
776 .cfg_ddr_training_delay_ps.ac_trace_delay[21] = 256 + AC_OFFSET - 50,
777 .cfg_ddr_training_delay_ps.ac_trace_delay[22] = 256 + AC_OFFSET - 50,
778 .cfg_ddr_training_delay_ps.ac_trace_delay[23] = 256 + AC_OFFSET - 50,
779 .cfg_ddr_training_delay_ps.ac_trace_delay[24] = 256 + AC_OFFSET - 50,
780#endif
781 .cfg_ddr_training_delay_ps.write_dqs_delay[0] = 128 + AC_OFFSET + WL0,
782 .cfg_ddr_training_delay_ps.write_dqs_delay[1] = 128 + AC_OFFSET + WL0,
783 .cfg_ddr_training_delay_ps.write_dqs_delay[2] = 128 + AC_OFFSET + WL0,
784 .cfg_ddr_training_delay_ps.write_dqs_delay[3] = 128 + AC_OFFSET + WL0,
785 .cfg_ddr_training_delay_ps.write_dqs_delay[4] = 128 + AC_OFFSET + WL0,
786 .cfg_ddr_training_delay_ps.write_dqs_delay[5] = 128 + AC_OFFSET + WL0,
787 .cfg_ddr_training_delay_ps.write_dqs_delay[6] = 128 + AC_OFFSET + WL0,
788 .cfg_ddr_training_delay_ps.write_dqs_delay[7] = 128 + AC_OFFSET + WL0,
789#endif
xiane88c21372024-09-25 16:42:41 +0900790
791 .cfg_ddr_training_delay_ps.read_dqs_delay[0] = 128,
792 .cfg_ddr_training_delay_ps.read_dqs_delay[1] = 128,
793 .cfg_ddr_training_delay_ps.read_dqs_delay[2] = 128,
794 .cfg_ddr_training_delay_ps.read_dqs_delay[3] = 128,
795 .cfg_ddr_training_delay_ps.read_dqs_delay[4] = 128,
796 .cfg_ddr_training_delay_ps.read_dqs_delay[5] = 128,
797 .cfg_ddr_training_delay_ps.read_dqs_delay[6] = 128,
798 .cfg_ddr_training_delay_ps.read_dqs_delay[7] = 128,
799
800 .cfg_ddr_training_delay_ps.soc_bit_vref0[0] = 0x000000,
801 //0 for auto training
802 .cfg_ddr_training_delay_ps.dram_vref[0] = 0x00000000,
803
804 },
805//};
806#endif
807
808#if DDR3_SKT
809#define CACLU_CLK_D3 1056 //636 //1792//600 //1200 //(1900)// (1440)//(1008)
810//ddr_set_ps0_only_t __attribute__ ((aligned(8))) ddr_set_t_default_ddr3 = {
811 {
812 .cfg_board_common_setting.timming_magic = 0,
813 .cfg_board_common_setting.timming_max_valid_configs = 1,
ckkim5dcc3172024-12-23 17:33:20 +0900814 .cfg_board_common_setting.timming_struct_version = 9215,
xiane88c21372024-09-25 16:42:41 +0900815 .cfg_board_common_setting.timming_struct_org_size =
816 sizeof(ddr_set_ps0_only_t),
817 .cfg_board_common_setting.timming_struct_real_size = 0,
818 .cfg_board_common_setting.fast_boot = {
819 0, 0, 0, 0
820 },
821 .cfg_board_common_setting.ddr_func =
ckkim5dcc3172024-12-23 17:33:20 +0900822 DDR_FUNC_CONFIG_DISABLE_DDR_DVFS_FUNCTION,
823 //DDR_FUNC_CONFIG_ENABLE_PZQ_DET_DRAM_TYPE_RETURN,
xiane88c21372024-09-25 16:42:41 +0900824 .cfg_board_common_setting.board_id = CONFIG_BOARD_ID_MASK,
825 .cfg_board_common_setting.DramType = CONFIG_DDR_TYPE_DDR3,
826 .cfg_board_common_setting.enable_lpddr4x_mode = 0,
827 .cfg_board_common_setting.dram_rank_config = CONFIG_DDR0_32BIT_RANK0_CH0,
828 //.cfg_board_common_setting.dram_ch0_size_MB =
829 // (DRAM_SIZE_ID_256MBX1 << CONFIG_CS0_BYTE_01_SIZE_256_ID_OFFSET) +
830 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS0_BYTE_23_SIZE_256_ID_OFFSET) +
831 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_01_SIZE_256_ID_OFFSET) +
832 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_23_SIZE_256_ID_OFFSET),
833 //.cfg_board_common_setting.dram_ch1_size_MB =
834 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS0_BYTE_01_SIZE_256_ID_OFFSET) +
835 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS0_BYTE_23_SIZE_256_ID_OFFSET) +
836 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_01_SIZE_256_ID_OFFSET) +
837 // (DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_23_SIZE_256_ID_OFFSET),
838 .cfg_board_common_setting.dram_ch0_size_MB = 0xffff,
839 .cfg_board_common_setting.DisabledDbyte[0] = 0x00,
840 //bit 0 -3 ch0 cs0 ,bit 4-7 ch0 cs1,
841 //.cfg_board_common_setting.DisabledDbyte[1] = 0xf0,
842 //bit 0 -3 ch1 cs0 ,bit 4-7 ch1
843 .cfg_board_common_setting.dram_x4x8x16_mode = CONFIG_DRAM_MODE_X16,
844 .cfg_board_common_setting.Is2Ttiming = CONFIG_USE_DDR_2T_MODE,
845 .cfg_board_common_setting.log_level = 0xff,
ckkim5dcc3172024-12-23 17:33:20 +0900846 .cfg_board_common_setting.log_level = 4,
xiane88c21372024-09-25 16:42:41 +0900847 //4,//LOG_LEVEL_BASIC,
848 .cfg_board_SI_setting_ps.DRAMFreq = CACLU_CLK_D3,
849 .cfg_board_SI_setting_ps.training_SequenceCtrl = 0,
850 .cfg_board_SI_setting_ps.dfi_odt_config = DDR_DRAM_ODT_W_CS0_ODT0,
851 //.cfg_ddr_training_delay_ps.dfe_offset = 0,
852 .cfg_board_SI_setting_ps.vref_ac_permil = 0,
853 .cfg_board_SI_setting_ps.vref_soc_data_permil = 0,
854 .cfg_board_SI_setting_ps.vref_dram_data_permil = 0,
855 .cfg_board_SI_setting_ps.max_core_timmming_frequency = 0,//1320,//0,
856 .cfg_board_common_setting.dbi_enable = 0x00000000,
857 .cfg_board_common_setting.ddr_rfc_type = 0,
858 .cfg_board_common_setting.pll_ssc_mode = 0x00000000,
859
860 .cfg_board_SI_setting_ps.clk_drv_ohm = 40,
861 .cfg_board_SI_setting_ps.cs_drv_ohm = 40,
862 .cfg_board_SI_setting_ps.ac_drv_ohm = 40,
863 .cfg_board_SI_setting_ps.soc_data_drv_ohm_p = 40,
864 .cfg_board_SI_setting_ps.soc_data_drv_ohm_n = 40,
865 .cfg_board_SI_setting_ps.soc_data_odt_ohm_p = 120,
866 .cfg_board_SI_setting_ps.soc_data_odt_ohm_n = 120,
867 .cfg_board_SI_setting_ps.dram_data_drv_ohm = 40,
868 .cfg_board_SI_setting_ps.dram_data_odt_ohm = 120,
869 .cfg_board_SI_setting_ps.dram_data_wr_odt_ohm = 0,
870 .cfg_board_SI_setting_ps.dram_ac_odt_ohm = 120,
871 .cfg_board_SI_setting_ps.dram_drv_pull_up_cal_ohm =
872 DDR_DRAM_LPDDR4_ODT_40_OHM,
873 .cfg_board_SI_setting_ps.lpddr4_dram_vout_range =
874 DDR_DRAM_LPDDR4_OUTPUT_1_3_VDDQ,
875 //.cfg_ddr_training_delay_ps.dfe_offset = 0,
876
877 .cfg_board_common_setting.ac_pinmux = {
878 6, 10, 19, 3, 5, 7, 0, 22, 15, 26,
879 23, 27, 21, 16, 18, 17, 20, 12, 14, 8, 11,
880 4, 1, 2, 13, 9, 24, 25, 28, 29,
881 },
882
883 //.cfg_ddr_training_delay_ps.tx_offset[0] = (0 << 7) | 0x0,
884 //.cfg_ddr_training_delay_ps.rx_offset[0] = (0 << 7) | 0x0,
885 .cfg_ddr_training_delay_ps.reserve_para[0] = (1 << 7) | 0x8, //write dqs
886 .cfg_ddr_training_delay_ps.reserve_para[1] = (1 << 7) | 0x8, //write dqs
887 .cfg_ddr_training_delay_ps.reserve_para[2] = (1 << 7) | 0x8, //write dqs
888 .cfg_ddr_training_delay_ps.reserve_para[3] = (1 << 7) | 0x8, //write dqs
889 .cfg_ddr_training_delay_ps.reserve_para[8 + 0] = (1 << 7) | 0x6,//read dqs
890 .cfg_ddr_training_delay_ps.reserve_para[8 + 1] = (1 << 7) | 0x6,//read dqs
891 .cfg_ddr_training_delay_ps.reserve_para[8 + 2] = (1 << 7) | 0x6,//read dqs
892 .cfg_ddr_training_delay_ps.reserve_para[8 + 3] = (1 << 7) | 0x6,//read dqs
893
894
895 #define AC_OFF_D3 (128) //for sip should use AC_OFFSET 128,
896 #define TDQS2DQ_D3 (0)
897 #define WL0_D3 (0)
898
899 //if use ac_offset 0, some chip use coarse 0 bad ,some use coars 1 bad
900 .cfg_ddr_training_delay_ps.ac_trace_delay[0] = 256 + AC_OFF_D3,
901 .cfg_ddr_training_delay_ps.ac_trace_delay[1] = 256 + AC_OFF_D3,
902 .cfg_ddr_training_delay_ps.ac_trace_delay[2] = 256 + AC_OFF_D3,
903 .cfg_ddr_training_delay_ps.ac_trace_delay[3] = 256 + AC_OFF_D3,
904 .cfg_ddr_training_delay_ps.ac_trace_delay[4] = 256 + AC_OFF_D3,
905 .cfg_ddr_training_delay_ps.ac_trace_delay[5] = 256 + AC_OFF_D3,
906 .cfg_ddr_training_delay_ps.ac_trace_delay[6] = 256 + AC_OFF_D3,
907 .cfg_ddr_training_delay_ps.ac_trace_delay[7] = 256 + AC_OFF_D3,
908 .cfg_ddr_training_delay_ps.ac_trace_delay[8] = 256 + AC_OFF_D3,
909 .cfg_ddr_training_delay_ps.ac_trace_delay[9] = 256 + AC_OFF_D3,
910 .cfg_ddr_training_delay_ps.ac_trace_delay[10] = 256 + AC_OFF_D3,
911 .cfg_ddr_training_delay_ps.ac_trace_delay[11] = 256 + AC_OFF_D3,
912 .cfg_ddr_training_delay_ps.ac_trace_delay[12] = 256 + AC_OFF_D3,
913 .cfg_ddr_training_delay_ps.ac_trace_delay[13] = 256 + AC_OFF_D3,
914 .cfg_ddr_training_delay_ps.ac_trace_delay[14] = 256 + AC_OFF_D3,
915 .cfg_ddr_training_delay_ps.ac_trace_delay[15] = 256 + AC_OFF_D3,
916 .cfg_ddr_training_delay_ps.ac_trace_delay[16] = 256 + AC_OFF_D3,
917 .cfg_ddr_training_delay_ps.ac_trace_delay[17] = 256 + AC_OFF_D3,
918 .cfg_ddr_training_delay_ps.ac_trace_delay[18] = 256 + AC_OFF_D3,
919 .cfg_ddr_training_delay_ps.ac_trace_delay[19] = 256 + AC_OFF_D3,
920 .cfg_ddr_training_delay_ps.ac_trace_delay[20] = 256 + AC_OFF_D3,
921 .cfg_ddr_training_delay_ps.ac_trace_delay[21] = 256 + AC_OFF_D3,
922 //cke 128 only 1UI margin
923 .cfg_ddr_training_delay_ps.ac_trace_delay[22] = 256 + AC_OFF_D3,
924 .cfg_ddr_training_delay_ps.ac_trace_delay[23] = 256 + AC_OFF_D3,
925 .cfg_ddr_training_delay_ps.ac_trace_delay[24] = 256 + AC_OFF_D3,
926 .cfg_ddr_training_delay_ps.ac_trace_delay[25] = 256 + AC_OFF_D3,
927 .cfg_ddr_training_delay_ps.ac_trace_delay[26] = 256 + AC_OFF_D3,
928 .cfg_ddr_training_delay_ps.ac_trace_delay[27] = 256 + AC_OFF_D3,
929 .cfg_ddr_training_delay_ps.ac_trace_delay[28] = 256 + AC_OFF_D3,
930 .cfg_ddr_training_delay_ps.ac_trace_delay[29] = 256 + AC_OFF_D3,
931
932 .cfg_ddr_training_delay_ps.ac_trace_delay[7] = 128 - 20 + AC_OFF_D3,
933 //.cfg_ddr_training_delay_ps.ac_trace_delay[11] = 90 + AC_OFF_D3,
934 .cfg_ddr_training_delay_ps.ac_trace_delay[9] = 128 + AC_OFF_D3,
935 .cfg_ddr_training_delay_ps.ac_trace_delay[10] = 128 + AC_OFF_D3,
936 .cfg_ddr_training_delay_ps.ac_trace_delay[11] = 128 + AC_OFF_D3,
937 .cfg_ddr_training_delay_ps.ac_trace_delay[26] = 128 + 32 + AC_OFF_D3,
938 .cfg_ddr_training_delay_ps.ac_trace_delay[27] = 128 + AC_OFF_D3,
939 .cfg_ddr_training_delay_ps.ac_trace_delay[28] = 128 + AC_OFF_D3,
940 .cfg_ddr_training_delay_ps.ac_trace_delay[29] = 128 + AC_OFF_D3,
941
942 .cfg_ddr_training_delay_ps.read_dq_delay_t[0] = 64,
943 .cfg_ddr_training_delay_ps.read_dq_delay_t[1] = 64,
944 .cfg_ddr_training_delay_ps.read_dq_delay_t[2] = 64,
945 .cfg_ddr_training_delay_ps.read_dq_delay_t[3] = 64,
946 .cfg_ddr_training_delay_ps.read_dq_delay_t[4] = 64,
947 .cfg_ddr_training_delay_ps.read_dq_delay_t[5] = 64,
948 .cfg_ddr_training_delay_ps.read_dq_delay_t[6] = 64,
949 .cfg_ddr_training_delay_ps.read_dq_delay_t[7] = 64,
950 .cfg_ddr_training_delay_ps.read_dq_delay_t[8] = 64,
951 .cfg_ddr_training_delay_ps.read_dq_delay_t[9] = 64,
952 .cfg_ddr_training_delay_ps.read_dq_delay_t[10] = 64,
953 .cfg_ddr_training_delay_ps.read_dq_delay_t[11] = 64,
954 .cfg_ddr_training_delay_ps.read_dq_delay_t[12] = 64,
955 .cfg_ddr_training_delay_ps.read_dq_delay_t[13] = 64,
956 .cfg_ddr_training_delay_ps.read_dq_delay_t[14] = 64,
957 .cfg_ddr_training_delay_ps.read_dq_delay_t[15] = 64,
958 .cfg_ddr_training_delay_ps.read_dq_delay_t[16] = 64,
959 .cfg_ddr_training_delay_ps.read_dq_delay_t[17] = 64,
960 .cfg_ddr_training_delay_ps.read_dq_delay_t[18] = 64,
961 .cfg_ddr_training_delay_ps.read_dq_delay_t[19] = 64,
962 .cfg_ddr_training_delay_ps.read_dq_delay_t[20] = 64,
963 .cfg_ddr_training_delay_ps.read_dq_delay_t[21] = 64,
964 .cfg_ddr_training_delay_ps.read_dq_delay_t[22] = 64,
965 .cfg_ddr_training_delay_ps.read_dq_delay_t[23] = 64,
966 .cfg_ddr_training_delay_ps.read_dq_delay_t[24] = 64,
967 .cfg_ddr_training_delay_ps.read_dq_delay_t[25] = 64,
968 .cfg_ddr_training_delay_ps.read_dq_delay_t[26] = 64,
969 .cfg_ddr_training_delay_ps.read_dq_delay_t[27] = 64,
970 .cfg_ddr_training_delay_ps.read_dq_delay_t[28] = 64,
971 .cfg_ddr_training_delay_ps.read_dq_delay_t[29] = 64,
972 .cfg_ddr_training_delay_ps.read_dq_delay_t[30] = 64,
973 .cfg_ddr_training_delay_ps.read_dq_delay_t[31] = 64,
974 .cfg_ddr_training_delay_ps.read_dq_delay_t[32] = 64,
975 .cfg_ddr_training_delay_ps.read_dq_delay_t[33] = 64,
976 .cfg_ddr_training_delay_ps.read_dq_delay_t[34] = 64,
977 .cfg_ddr_training_delay_ps.read_dq_delay_t[35] = 64,
978 .cfg_ddr_training_delay_ps.read_dq_delay_t[36] = 64,
979 .cfg_ddr_training_delay_ps.read_dq_delay_t[37] = 64,
980 .cfg_ddr_training_delay_ps.read_dq_delay_t[38] = 64,
981 .cfg_ddr_training_delay_ps.read_dq_delay_t[39] = 64,
982 .cfg_ddr_training_delay_ps.read_dq_delay_t[40] = 64,
983 .cfg_ddr_training_delay_ps.read_dq_delay_t[41] = 64,
984 .cfg_ddr_training_delay_ps.read_dq_delay_t[42] = 64,
985 .cfg_ddr_training_delay_ps.read_dq_delay_t[43] = 64,
986 .cfg_ddr_training_delay_ps.read_dq_delay_t[44] = 64,
987 .cfg_ddr_training_delay_ps.read_dq_delay_t[45] = 64,
988 .cfg_ddr_training_delay_ps.read_dq_delay_t[46] = 64,
989 .cfg_ddr_training_delay_ps.read_dq_delay_t[47] = 64,
990 .cfg_ddr_training_delay_ps.read_dq_delay_t[48] = 64,
991 .cfg_ddr_training_delay_ps.read_dq_delay_t[49] = 64,
992 .cfg_ddr_training_delay_ps.read_dq_delay_t[50] = 64,
993 .cfg_ddr_training_delay_ps.read_dq_delay_t[51] = 64,
994 .cfg_ddr_training_delay_ps.read_dq_delay_t[52] = 64,
995 .cfg_ddr_training_delay_ps.read_dq_delay_t[53] = 64,
996 .cfg_ddr_training_delay_ps.read_dq_delay_t[54] = 64,
997 .cfg_ddr_training_delay_ps.read_dq_delay_t[55] = 64,
998 .cfg_ddr_training_delay_ps.read_dq_delay_t[56] = 64,
999 .cfg_ddr_training_delay_ps.read_dq_delay_t[57] = 64,
1000 .cfg_ddr_training_delay_ps.read_dq_delay_t[58] = 64,
1001 .cfg_ddr_training_delay_ps.read_dq_delay_t[59] = 64,
1002 .cfg_ddr_training_delay_ps.read_dq_delay_t[60] = 64,
1003 .cfg_ddr_training_delay_ps.read_dq_delay_t[61] = 64,
1004 .cfg_ddr_training_delay_ps.read_dq_delay_t[62] = 64,
1005 .cfg_ddr_training_delay_ps.read_dq_delay_t[63] = 64,
1006 .cfg_ddr_training_delay_ps.read_dq_delay_t[64] = 64,
1007 .cfg_ddr_training_delay_ps.read_dq_delay_t[65] = 64,
1008 .cfg_ddr_training_delay_ps.read_dq_delay_t[66] = 64,
1009 .cfg_ddr_training_delay_ps.read_dq_delay_t[67] = 64,
1010 .cfg_ddr_training_delay_ps.read_dq_delay_t[68] = 64,
1011 .cfg_ddr_training_delay_ps.read_dq_delay_t[69] = 64,
1012 .cfg_ddr_training_delay_ps.read_dq_delay_t[70] = 64,
1013 .cfg_ddr_training_delay_ps.read_dq_delay_t[71] = 64,
1014
1015 .cfg_ddr_training_delay_ps.write_dqs_delay[0] = 128 + AC_OFF_D3 + WL0_D3,
1016 .cfg_ddr_training_delay_ps.write_dqs_delay[1] = 128 + AC_OFF_D3 + WL0_D3,
1017 .cfg_ddr_training_delay_ps.write_dqs_delay[2] = 128 + AC_OFF_D3 + WL0_D3,
1018 .cfg_ddr_training_delay_ps.write_dqs_delay[3] = 128 + AC_OFF_D3 + WL0_D3,
1019 .cfg_ddr_training_delay_ps.write_dqs_delay[4] = 128 + AC_OFF_D3 + WL0_D3,
1020 .cfg_ddr_training_delay_ps.write_dqs_delay[5] = 128 + AC_OFF_D3 + WL0_D3,
1021 .cfg_ddr_training_delay_ps.write_dqs_delay[6] = 128 + AC_OFF_D3 + WL0_D3,
1022 .cfg_ddr_training_delay_ps.write_dqs_delay[7] = 128 + AC_OFF_D3 + WL0_D3,
1023
1024 .cfg_ddr_training_delay_ps.wdq_delay[0] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1025 .cfg_ddr_training_delay_ps.wdq_delay[1] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1026 .cfg_ddr_training_delay_ps.wdq_delay[2] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1027 .cfg_ddr_training_delay_ps.wdq_delay[3] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1028 .cfg_ddr_training_delay_ps.wdq_delay[4] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1029 .cfg_ddr_training_delay_ps.wdq_delay[5] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1030 .cfg_ddr_training_delay_ps.wdq_delay[6] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1031 .cfg_ddr_training_delay_ps.wdq_delay[7] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1032 .cfg_ddr_training_delay_ps.wdq_delay[8] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1033 .cfg_ddr_training_delay_ps.wdq_delay[9] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1034 .cfg_ddr_training_delay_ps.wdq_delay[10] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1035 .cfg_ddr_training_delay_ps.wdq_delay[11] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1036 .cfg_ddr_training_delay_ps.wdq_delay[12] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1037 .cfg_ddr_training_delay_ps.wdq_delay[13] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1038 .cfg_ddr_training_delay_ps.wdq_delay[14] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1039 .cfg_ddr_training_delay_ps.wdq_delay[15] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1040 .cfg_ddr_training_delay_ps.wdq_delay[16] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1041 .cfg_ddr_training_delay_ps.wdq_delay[17] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1042 .cfg_ddr_training_delay_ps.wdq_delay[18] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1043 .cfg_ddr_training_delay_ps.wdq_delay[19] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1044 .cfg_ddr_training_delay_ps.wdq_delay[20] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1045 .cfg_ddr_training_delay_ps.wdq_delay[21] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1046 .cfg_ddr_training_delay_ps.wdq_delay[22] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1047 .cfg_ddr_training_delay_ps.wdq_delay[23] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1048 .cfg_ddr_training_delay_ps.wdq_delay[24] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1049 .cfg_ddr_training_delay_ps.wdq_delay[25] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1050 .cfg_ddr_training_delay_ps.wdq_delay[26] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1051 .cfg_ddr_training_delay_ps.wdq_delay[27] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1052 .cfg_ddr_training_delay_ps.wdq_delay[28] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1053 .cfg_ddr_training_delay_ps.wdq_delay[29] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1054 .cfg_ddr_training_delay_ps.wdq_delay[30] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1055 .cfg_ddr_training_delay_ps.wdq_delay[31] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1056 .cfg_ddr_training_delay_ps.wdq_delay[32] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1057 .cfg_ddr_training_delay_ps.wdq_delay[33] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1058 .cfg_ddr_training_delay_ps.wdq_delay[34] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1059 .cfg_ddr_training_delay_ps.wdq_delay[35] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1060 .cfg_ddr_training_delay_ps.wdq_delay[36] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1061 .cfg_ddr_training_delay_ps.wdq_delay[37] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1062 .cfg_ddr_training_delay_ps.wdq_delay[38] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1063 .cfg_ddr_training_delay_ps.wdq_delay[39] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1064 .cfg_ddr_training_delay_ps.wdq_delay[40] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1065 .cfg_ddr_training_delay_ps.wdq_delay[41] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1066 .cfg_ddr_training_delay_ps.wdq_delay[42] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1067 .cfg_ddr_training_delay_ps.wdq_delay[43] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1068 .cfg_ddr_training_delay_ps.wdq_delay[44] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1069 .cfg_ddr_training_delay_ps.wdq_delay[45] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1070 .cfg_ddr_training_delay_ps.wdq_delay[46] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1071 .cfg_ddr_training_delay_ps.wdq_delay[47] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1072 .cfg_ddr_training_delay_ps.wdq_delay[48] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1073 .cfg_ddr_training_delay_ps.wdq_delay[49] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1074 .cfg_ddr_training_delay_ps.wdq_delay[50] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1075 .cfg_ddr_training_delay_ps.wdq_delay[51] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1076 .cfg_ddr_training_delay_ps.wdq_delay[52] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1077 .cfg_ddr_training_delay_ps.wdq_delay[53] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1078 .cfg_ddr_training_delay_ps.wdq_delay[54] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1079 .cfg_ddr_training_delay_ps.wdq_delay[55] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1080 .cfg_ddr_training_delay_ps.wdq_delay[56] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1081 .cfg_ddr_training_delay_ps.wdq_delay[57] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1082 .cfg_ddr_training_delay_ps.wdq_delay[58] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1083 .cfg_ddr_training_delay_ps.wdq_delay[59] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1084 .cfg_ddr_training_delay_ps.wdq_delay[60] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1085 .cfg_ddr_training_delay_ps.wdq_delay[61] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1086 .cfg_ddr_training_delay_ps.wdq_delay[62] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1087 .cfg_ddr_training_delay_ps.wdq_delay[63] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1088 .cfg_ddr_training_delay_ps.wdq_delay[64] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1089 .cfg_ddr_training_delay_ps.wdq_delay[65] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1090 .cfg_ddr_training_delay_ps.wdq_delay[66] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1091 .cfg_ddr_training_delay_ps.wdq_delay[67] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1092 .cfg_ddr_training_delay_ps.wdq_delay[68] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1093 .cfg_ddr_training_delay_ps.wdq_delay[69] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1094 .cfg_ddr_training_delay_ps.wdq_delay[70] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1095 .cfg_ddr_training_delay_ps.wdq_delay[71] = 192 + AC_OFF_D3 + TDQS2DQ_D3 + WL0_D3,
1096
1097 .cfg_ddr_training_delay_ps.read_dqs_delay[0] = 128,
1098 .cfg_ddr_training_delay_ps.read_dqs_delay[1] = 128,
1099 .cfg_ddr_training_delay_ps.read_dqs_delay[2] = 128,
1100 .cfg_ddr_training_delay_ps.read_dqs_delay[3] = 128,
1101 .cfg_ddr_training_delay_ps.read_dqs_delay[4] = 128,
1102 .cfg_ddr_training_delay_ps.read_dqs_delay[5] = 128,
1103 .cfg_ddr_training_delay_ps.read_dqs_delay[6] = 128,
1104 .cfg_ddr_training_delay_ps.read_dqs_delay[7] = 128,
1105
1106 .cfg_ddr_training_delay_ps.soc_bit_vref0[0] = 0x000000,
1107 //0 for auto training
1108 .cfg_ddr_training_delay_ps.dram_vref[0] = 0x00000000,
1109
1110 },
1111//};
1112#endif
1113};