blob: 24aeed858518728b6239aa153c3af27699505611 [file] [log] [blame] [edit]
/*
* board/amlogic/p1_skt_v1/firmware/timing.c
*
* Copyright (C) 2015 Amlogic, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <asm/arch/secure_apb.h>
#include <asm/arch/timing.h>
#include <asm/arch/ddr_define.h>
/* board clk defines */
#define CPU_CLK 1512
#define BOARD_USE_DDR3 0
#define BOARD_USE_DDR4 0
#define BOARD_USE_LPDDR3 0
#define BOARD_USE_LPDDR4 1
//#define S5_LPDDR4_REF 1
#define S5_LPDDR4_SKT 1
#define S5_DDR4_SKT 1
#define MAX_VALID_CONFIGS 4 //timming_max_valid_configs
#define CONFIG_BOARD_TIMMING
unsigned char lpddr4_ac_pinmux[] = {
1, 0, 2, 3, 4, 5, 8, 9, 29,
28, 0, 7, 0, 6, 0,
14, 15, 13, 12, 11, 10, 18, 19, 27,
26, 16, 17, 0, 0, 0,
};
unsigned char ddr4_ac_pinmux[] = {
9, 3, 16, 14, 0, 13,
12, 1, 15, 5,
2, 27, 21, 26, 10, 11,
8, 19, 7, 18, 20,
24, 25, 29, 28, 22, 23,
4, 6, 17,
};
unsigned char lpddr4_dq_pinmux[DWC_DQ_PINMUX_TOTAL] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31
};
unsigned char lpddr4_dfi_pinmux[DWC_DFI_PINMUX_TOTAL] = { 0 };
unsigned char lpddr5_ac_pinmux[DWC_AC_PINMUX_TOTAL] = {
2, 3, 1, 0, 5, 4, 0, 0, 0, 0, 1, 3, 5, 2, 4, 0
};
char init_mrs_seq_ddr3[] = { 0, 1, 2 };
char init_mrs_seq_ddr4[] = { 3, 6, 5, 4, 2, 1, 0 };
char init_mrs_seq_lpddr3[] = { 3, 11 };
char init_mrs_seq_lpddr4[] = { 13, 3, 4, 11, 12, 16, 17, 14, 22, 23, 1, 2, 32, 40, 15, 20 };
char init_mrs_seq_lpddr5[] = { 16, 1, 28, 41, 18, 3, 2, 17, 12,
14, 15, 11, 13, 20, 22, 25, 10, 46 };
/* Timing parameters */
ddr_timing_t ddr_global_timing = {
.identifier = 0,
.ddr_mrd = 4,
.cfg_ddr_rfcab = 421,
.cfg_ddr_rfcpb = 421,
.cfg_ddr_rpab = (17 << 16) | 17,
.cfg_ddr_rppb = (17 << 16) | 17,
.cfg_ddr_rtw = 4,
.cfg_ddr_rl = 16,
.cfg_ddr_wl = 12,
.cfg_ddr_ras = 39,
.cfg_ddr_rc = 45,
.cfg_ddr_rcd = 17,
.cfg_ddr_rrds = (8 << 16) | 7,
.cfg_ddr_rrdl = (8 << 16) | 7,
.cfg_ddr_faw = 36,
.cfg_ddr_rtp = 10,
.cfg_ddr_wr = 19,
.cfg_ddr_wtrs = ((10 << 16) | 6),
.cfg_ddr_wtrl = ((10 << 16) | 6),
.cfg_ddr_ccds = ((6 << 16) | 4),
.cfg_ddr_ccdl = ((6 << 16) | 4),
.cfg_ddr_exsr = 512,
.cfg_ddr_xs = 156,
.cfg_ddr_xp = 8,
.cfg_ddr_xpdll = 23,
.cfg_ddr_zqcs = 128,
.cfg_ddr_cksre = 10,
.cfg_ddr_cksrx = 10,
.cfg_ddr_cke = 4,
.cfg_ddr_mod = 24,
.cfg_ddr_dqs = 4,
.cfg_ddr_rstl = 0,
.cfg_ddr_zqlat = 0,
.ddr_mrr = 0,
.cfg_ddr_ckesr = 4,
.cfg_ddr_dpd = 0,
.cfg_ddr_ckeck = 4,
.cfg_ddr_refi = 0X20014D3b,
.cfg_ddr_sr = 0,
.cfg_ddr_ccdmw = 0,
.cfg_ddr_escke = 0,
.cfg_ddr_refi_ddr3 = 0,
.cfg_ddr_dfictrldelay = 2,
.cfg_ddr_dfiphywrdata = 2,
.cfg_ddr_dfiphywrlat = 7,
.cfg_ddr_dfiphyrddataen = 11,
.cfg_ddr_dfiphyrdlat = 32,
.cfg_ddr_dfictrlupdmin = 24,
.cfg_ddr_dfictrlupdmax = 48,
.cfg_ddr_dfimstrresp = 0,
.cfg_ddr_dfirefmski = 0,
.cfg_ddr_dfictrlupdi = 0,
.cfg_ddr_dfidramclk = (4 | (4 << 8) | (3 << 16)),
.cfg_ddr_dfilpresp = 0,
.cfg_ddr_dfiphymstr = 0,
.cfg_ddr_rtodt = 0,
.cfg_ddr_wlmrd = 0,
.cfg_ddr_wlo = 0,
.cfg_ddr_al = 0,
.cfg_ddr_zqcl = 0,
.cfg_ddr_zqcsi = 0,
.cfg_ddr_zqreset = 0,
.cfg_ddr_tdqsck_min = 0,
.cfg_ddr_tdqsck_max = 0,
};
//use schematic
//#ifdef S5_LPDDR4_SKT
uint8_t dq_test_pinmux_w_lp4_skt[2][36] = {
{
27,
31,
29,
35,
24,
28,
26,
30,
25,
22,
23,
21,
34,
20,
17,
16,
18,
19,
13,
9,
11,
33,
10,
8,
14,
12,
15,
5,
4,
1,
32,
0,
3,
7,
2,
6,
},
{
23,
20,
21,
34,
16,
18,
17,
19,
22,
24,
28,
26,
35,
25,
29,
31,
30,
27,
7,
6,
0,
32,
1,
5,
3,
4,
2,
12,
14,
15,
33,
9,
11,
13,
8,
10,
}
};
//#endif
//#ifdef S5_LPDDR4_REF
uint8_t dq_test_pinmux_w_lp4_ref[2][36] = {
{
26,
31,
29,
35,
24,
28,
25,
30,
27,
22,
23,
21,
34,
20,
17,
16,
18,
19,
8,
14,
11,
33,
10,
13,
9,
12,
15,
5,
4,
0,
32,
6,
2,
7,
1,
3,
},
{
16,
20,
21,
34,
22,
18,
17,
19,
23,
24,
28,
26,
35,
25,
29,
30,
31,
27,
0,
1,
2,
32,
3,
7,
4,
6,
5,
11,
14,
15,
33,
8,
10,
13,
12,
9,
}
};
uint8_t dq_test_pinmux_w_ddr4_skt[2][36] = {
{
3,
0,
5,
32,
2,
4,
1,
7,
6,
12,
8,
14,
33,
10,
11,
9,
13,
15,
16,
19,
23,
34,
21,
17,
20,
22,
18,
24,
25,
31,
35,
29,
26,
28,
30,
27,
},
{
14,
12,
8,
33,
9,
13,
11,
15,
10,
0,
7,
2,
32,
4,
1,
5,
3,
6,
21,
22,
16,
34,
20,
18,
19,
17,
23,
24,
30,
28,
35,
25,
31,
26,
27,
29,
}
};
//#endif
//bit 6 adc_channel bit 0-5 adc value,chan 3 value 8 is layer 2
#define DDR_ID_ACS_ADC ((3 << 6) | (8))
#define DDR_RESV_CHECK_ID_ENABLE 0Xfe
#define SAR_ADC_DDR_ID_BASE 0
#define SAR_ADC_DDR_ID_STEP 80
#define DDR_TIMMING_OFFSET(X) (unsigned int)(unsigned long)(&(((ddr_set_ps0_only_t *)(0))->X))
#define DDR_TIMMING_OFFSET_SIZE(X) sizeof(((ddr_set_ps0_only_t *)(0))->X)
#define DDR_TIMMING_TUNE_TIMMING0(DDR_ID, PARA, VALUE) (DDR_ID, \
DDR_TIMMING_OFFSET(PARA), VALUE, DDR_TIMMING_OFFSET_SIZE(PARA), 0, \
DDR_RESV_CHECK_ID_ENABLE)
#define DDR_TIMMING_TUNE_TIMMING1(DDR_ID, PARA, VALUE) (DDR_ID, \
(sizeof(ddr_set_t) + (DDR_TIMMING_OFFSET(PARA))), VALUE, DDR_TIMMING_OFFSET_SIZE(PARA), \
0, DDR_RESV_CHECK_ID_ENABLE)
//bit24-31 define ID and size
#define DDR_ID_FROM_EFUSE (0Xff << 24)
#define DDR_ID_FROM_ADC (0Xfe << 24)
#define DDR_ID_FROM_GPIO_CONFIG1 (0Xfd << 24)
#define DDR_ID_FROM_EFUSE_F (0Xff << 0)
#define DDR_ID_FROM_ADC_F (0Xfe << 0)
#define DDR_ID_FROM_GPIO_CONFIG1_F (0Xfd << 0)
#define DDR_ID_FROM_ADC_MULT (0Xfc000000)
#define DDR_ID_FROM_ADC_MULT_F (0Xfc << 0)
#define DDR_ID_START_MASK (0XFFDDCCBB)
#define DDR_ADC_CH0 (0X0 << 5)
#define DDR_ADC_CH1 (0X1 << 5)
#define DDR_ADC_CH2 (0X2 << 5)
#define DDR_ADC_CH3 (0X3 << 5)
#define DDR_ADC_CH4 (0X4 << 5)
#define DDR_ADC_VALUE0 (0X0 << 0)
#define DDR_ADC_VALUE1 (0X1 << 0)
#define DDR_ADC_VALUE2 (0X2 << 0)
#define DDR_ADC_VALUE3 (0X3 << 0)
#define DDR_ADC_VALUE4 (0X4 << 0)
#define DDR_ADC_VALUE5 (0X5 << 0)
#define DDR_ADC_VALUE6 (0X6 << 0)
#define DDR_ADC_VALUE7 (0X7 << 0)
#define DDR_ADC_VALUE8 (0X8 << 0)
#define DDR_ADC_VALUE9 (0X9 << 0)
#define DDR_ADC_VALUE10 (0Xa << 0)
#define DDR_ADC_VALUE11 (0Xb << 0)
#define DDR_ADC_VALUE12 (0Xc << 0)
#define DDR_ADC_VALUE13 (0Xd << 0)
#define DDR_ADC_VALUE14 (0Xe << 0)
#define DDR_ADC_VALUE15 (0Xf << 0)
#define V0 (0X0 << 0)
#define V1 (0X1 << 0)
#define V2 (0X2 << 0)
#define V3 (0X3 << 0)
#define V4 (0X4 << 0)
#define V5 (0X5 << 0)
#define V6 (0X6 << 0)
#define V7 (0X7 << 0)
#define V8 (0X8 << 0)
#define V9 (0X9 << 0)
#define V10 (0Xa << 0)
#define V11 (0Xb << 0)
#define V12 (0Xc << 0)
#define VX (0Xf << 0)
typedef struct ddr_para_data {
// start from DDR_ID_START_MASK,ddr_id;//bit0-23
// ddr_id value,bit 24-31 ddr_id source ,0xfe source
// from adc ,0xfd source from gpio_default_config
// reg_offset
// //bit 0-15 parameter offset value,bit16-23 overrid
// size,bit24-31 mux ddr_id source unsigned int
// reg_offset; unsigned int value;
uint32_t value : 16; // bit0-15 only support data size =1byte
// or 2bytes,no support int value
uint32_t reg_offset : 12; // bit16-27
uint32_t data_size : 4; // bit28-31 if data size =15,then
// will mean DDR_ID start
} ddr_para_data_t;
typedef struct ddr_para_data_start {
uint32_t id_value : 24; // bit0-23 efuse id or ddr id
// uint32_t id_adc_ch : 2;//bit6-7
uint32_t id_src_from : 8; // bit24-31 ddr id from adc or gpio
} ddr_para_data_start_t;
#define DDR_TIMMING_TUNE_STRUCT_SIZE(a) sizeof(a)
#define DDR_TIMMING_TUNE_TIMMING0_F(PARA, VALUE) ((DDR_TIMMING_OFFSET(PARA)) << 16) |\
((DDR_TIMMING_OFFSET_SIZE(PARA)) << 28) | VALUE
#define DDR_TIMMING_TUNE_TIMMING1_F(PARA, VALUE) ((sizeof(ddr_set_ps0_only_t) +\
DDR_TIMMING_OFFSET(PARA)) << 16) | ((DDR_TIMMING_OFFSET_SIZE(PARA)) << 28) | (VALUE)
#define DDR_TIMMING_TUNE_START(id_src_from, id_adc_ch, id_value) (id_src_from) |\
(id_adc_ch) | (id_value) }
#define DDR_TIMMING_TUNE_ADC_MULT_START(id_value, ch0, ch1, ch2, ch3, ch4, ch5) (id_value) |\
(ch0) | ((ch1) << 4) | ((ch2) << 8) | ((ch3) << 12) | ((ch4) << 16) | ((ch5) << 20)
//#if 1
uint32_t __bl2_ddr_reg_data[] __attribute__ ((section(".ddr_2acs_data"))) = {
DDR_ID_START_MASK,
//DDR_TIMMING_TUNE_ADC_MULT_START(DDR_ID_FROM_ADC_MULT, V12, V1, VX, VX, VX, VX),
//data start
//DDR_TIMMING_TUNE_TIMMING0_F(cfg_board_common_setting.dram_ch0_size_MB,
// (DRAM_SIZE_ID_256MBX4 << CONFIG_CS0_BYTE_01_SIZE_256_ID_OFFSET) +
// (DRAM_SIZE_ID_256MBX4 << CONFIG_CS0_BYTE_23_SIZE_256_ID_OFFSET) +
// (DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_01_SIZE_256_ID_OFFSET) +
// (DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_23_SIZE_256_ID_OFFSET)),
//DDR_TIMMING_TUNE_TIMMING0_F(cfg_board_SI_setting_ps.DRAMFreq, 1176),
//DDR_TIMMING_TUNE_TIMMING1_F(cfg_board_SI_setting_ps.DRAMFreq, 1200),
};
//#endif
#define CACLU_CLK_LP4 1848 //1792//600 //1200 //(1900)// (1440)//(1008)
//ddr_set_ps0_only_t ddr_set_t_default[2] = {
//__attribute__ ((section(".ddr_param")))
ddr_set_ps0_only_t __ddr_setting[]
__attribute__ ((section(".ddr_param"))) = {
#if S5_LPDDR4_SKT
{
.cfg_board_common_setting.timming_magic = 0,
.cfg_board_common_setting.timming_max_valid_configs = MAX_VALID_CONFIGS,
//sizeof(__ddr_setting) / sizeof(ddr_set_ps0_only_t),
.cfg_board_common_setting.timming_struct_version = 0,
.cfg_board_common_setting.timming_struct_org_size = sizeof(ddr_set_ps0_only_t),
.cfg_board_common_setting.timming_struct_real_size = 0,
.cfg_board_common_setting.fast_boot = {
0, 0, 0, 0
},
.cfg_board_common_setting.ddr_func = 0,
.cfg_board_common_setting.board_id = CONFIG_BOARD_ID_MASK,
.cfg_board_common_setting.DramType = CONFIG_DDR_TYPE_LPDDR4,
.cfg_board_common_setting.enable_lpddr4x_mode = 3,
//0 force lp4x 1 force lp4
//2 auto 4x use nn 4 use pn drivere
//3 auto + force 4 4x both use nn driver
.cfg_board_common_setting.dram_rank_config = CONFIG_DDR0_32BIT_RANK0_CH0,
//.cfg_board_common_setting.dram_cs0_base_add = 0,
//.cfg_board_common_setting.dram_cs1_base_add = 0,
.cfg_board_common_setting.dram_ch0_size_MB =
(DRAM_SIZE_ID_256MBX4 << CONFIG_CS0_BYTE_01_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX4 << CONFIG_CS0_BYTE_23_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_01_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_23_SIZE_256_ID_OFFSET),
.cfg_board_common_setting.dram_ch1_size_MB =
(DRAM_SIZE_ID_256MBX4 << CONFIG_CS0_BYTE_01_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX4 << CONFIG_CS0_BYTE_23_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_01_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_23_SIZE_256_ID_OFFSET),
.cfg_board_common_setting.DisabledDbyte[0] = 0xf0,
//bit 0 -3 ch0 cs0 ,bit 4-7 ch0 cs1,
.cfg_board_common_setting.DisabledDbyte[1] = 0xf0,
//bit 0 -3 ch1 cs0 ,bit 4-7 ch1
.cfg_board_common_setting.dram_x4x8x16_mode = CONFIG_DRAM_MODE_X16,
.cfg_board_common_setting.Is2Ttiming = CONFIG_USE_DDR_2T_MODE,
.cfg_board_common_setting.log_level = 4,
//4,//LOG_LEVEL_BASIC,
.cfg_board_common_setting.dbi_enable = 0,
.cfg_board_common_setting.pll_ssc_mode =
(1 << 20) | (1 << 8) | (2 << 4) | 0,
//center_ssc_1000ppm,//SSC_DISABLE,(1 << 20) | (0 << 8) | (2 << 4) | 0,
.cfg_board_common_setting.org_tdqs2dq = 0,
.cfg_board_common_setting.reserve1_test = {
0
},
.cfg_board_common_setting.ddr_dmc_remap = DDR_DMC_REMAP_LPDDR4_16BIT,
//DDR_DMC_REMAP_DDR4_32BIT,
// .cfg_board_common_setting.ac_pinmux = {
//2, 3, 1, 0, 5, 4, 0, 0, 0, 0, 1, 3, 5, 2, 4, 0 },
.cfg_board_common_setting.ddr_dqs_swap = 0,
//.cfg_board_common_setting.ddr_dq_remap = { 27,
//31,
//29,
//35,
//24,
//28,
//26,
//30,
//25,
//22,
//23,
//21,
//34,
//20,
//17,
//16,
//18,
//19,
//13,
//9,
//11,
//33,
//10,
//8,
//14,
//12,
//15,
//5,
//4,
//1,
//32,
//0,
//3,
//7,
//2,
//6, },
.cfg_board_common_setting.ddr_vddee_setting = {
0
},
.cfg_board_SI_setting_ps.DRAMFreq = CACLU_CLK_LP4,
// .cfg_ddr_training_delay_ps.DRAMFreq = 600,// 2112,//,cfg_ddr_training_delay_ps
//.cfg_ddr_training_delay_ps.PllBypassEn = 0,
.cfg_board_SI_setting_ps.training_SequenceCtrl = 0,
.cfg_board_SI_setting_ps.dfi_odt_config = DDR_DRAM_ODT_W_CS0_ODT0,
.cfg_board_SI_setting_ps.clk_drv_ohm = DDR_SOC_AC_DRV_40_OHM,
.cfg_board_SI_setting_ps.cs_drv_ohm = DDR_SOC_AC_DRV_40_OHM,
.cfg_board_SI_setting_ps.ac_drv_ohm = DDR_SOC_AC_DRV_40_OHM,
.cfg_board_SI_setting_ps.soc_data_drv_ohm_p = DDR_SOC_DATA_DRV_ODT_40_OHM,
.cfg_board_SI_setting_ps.soc_data_drv_ohm_n = DDR_SOC_DATA_DRV_ODT_40_OHM,
.cfg_board_SI_setting_ps.soc_data_odt_ohm_p = DDR_SOC_DATA_DRV_ODT_0_OHM,
.cfg_board_SI_setting_ps.soc_data_odt_ohm_n = DDR_SOC_DATA_DRV_ODT_40_OHM,
.cfg_board_SI_setting_ps.dram_data_drv_ohm = DDR_DRAM_LPDDR4_DRV_40_OHM,
.cfg_board_SI_setting_ps.dram_data_odt_ohm = DDR_DRAM_LPDDR4_ODT_40_OHM,
.cfg_board_SI_setting_ps.dram_data_wr_odt_ohm = DDR_DRAM_DDR_WR_ODT_0_OHM,
.cfg_board_SI_setting_ps.dram_ac_odt_ohm = 120, //240,
.cfg_board_SI_setting_ps.dram_drv_pull_up_cal_ohm =
DDR_DRAM_LPDDR4_ODT_40_OHM,
.cfg_board_SI_setting_ps.lpddr4_dram_vout_range =
DDR_DRAM_LPDDR4_OUTPUT_1_3_VDDQ,
//.cfg_ddr_training_delay_ps.dfe_offset = 0,
.cfg_board_SI_setting_ps.vref_ac_permil = 260,//420,
.cfg_board_SI_setting_ps.vref_soc_data_permil = 0,
.cfg_board_SI_setting_ps.vref_dram_data_permil = 0,
.cfg_board_SI_setting_ps.max_core_timmming_frequency = 0,
//.cfg_ddr_training_delay_ps.training_phase_parameter = {0},
//.cfg_ddr_training_delay_ps.ac_trace_delay_org = {
// 128, 128, 128 + 40, 128, 128, 128, 128, 128,
// 384, 384, 384, 384, 384, 384, 384, 384,
// 384, 384, 384, 384, 384, 384, 384, 384,
// 384, 384, 384, 384, 384, 384, 384, 384,
// 384, 384, 384, 384,
//},
//total 36
.cfg_ddr_training_delay_ps.ac_trace_delay = {
32 + 0, 32 + 0, 32 + 0, 32 + 0,
32, 32 + 0, 32 + 0, 32 + 0,
32 + 0, 32 + 0, 32 + 0, 32 + 0,
32 + 0, 32 + 0, 32, 32 + 0,
32 + 0, 32 + 0, 32 + 0, 32 + 0,
32 + 0, 32 + 0, 32, 32 + 0
},
// 1 //real chip stk lp4
.cfg_board_common_setting.dbi_enable = 0x00000000, // 0,0x00000041
.cfg_board_common_setting.ddr_rfc_type = 0x0000000d, // 13,0x00000042
.cfg_board_common_setting.pll_ssc_mode = 0x00000000, // 0,0x00000044
//.cfg_board_common_setting.max_core_timmming_frequency=0x00000e10,// 3600,0x0000006a
//.cfg_board_common_setting.lpddr4_x8_mode=0x00000000,// 0,0x00000087
//.cfg_board_common_setting.tdqs2dq=0x00000000,// 0,0x0000008a
//.cfg_board_common_setting.dfe_offset_value=0x00000000,// 0,0x0000008e
//.cfg_board_common_setting.training_offset=0x00000000,// 0,0x0000008f
#ifdef CONFIG_PXP_TIMMING
//pxp
#define TDQS2DQ_LP4 ((410 * 128 * CACLU_CLK_LP4 * 2) / 1000000) //
//#define TDQSCK 64
#define CLK_DELAY_LP4 0 // (64)
//#define BOARD_DQS_DELAY 64
#define TDQSCK_ADD_DQS_LP4 64 //128 //clk should use 64 steps
#define PHY_TDQS2DQ_LP4 0
#endif
#ifdef CONFIG_RTL_TIMMING
//rtl
#define TDQS2DQ_LP4 ((450 * 128 * CACLU_CLK_LP4) / 1000000) //
//#define TDQSCK 128 //
//#define BOARD_DQS_DELAY 64+32
#define TDQSCK_ADD_DQS_LP4 ((3000 * 128 * CACLU_CLK_LP4) / 1000000)
#define CLK_DELAY_LP4 (0)
#define PHY_TDQS2DQ_LP4 ((200 * 128 * CACLU_CLK_LP4) / 1000000)
#endif
#ifdef CONFIG_BOARD_TIMMING //skt lp4 board
#define TDQS2DQ_LP4 ((410 * 128 * CACLU_CLK_LP4 * 2) / 1000000) //
//#define TDQSCK 64
//#define TDQSCK_ADD_DQS_LP4 ((3080 * 128 * CACLU_CLK_LP4) / 1000000)
#define CLK_DELAY_LP4 0 // (64)
//#define BOARD_DQS_DELAY 64
#define TDQSCK_ADD_DQS_LP4 64 //128
#define PHY_TDQS2DQ_LP4 0
#endif
.cfg_board_SI_setting_ps.clk_drv_ohm = 40,
.cfg_board_SI_setting_ps.cs_drv_ohm = 40,
.cfg_board_SI_setting_ps.ac_drv_ohm = 40,
.cfg_board_SI_setting_ps.soc_data_drv_ohm_p = 40,
.cfg_board_SI_setting_ps.soc_data_drv_ohm_n = 40,
.cfg_board_SI_setting_ps.soc_data_odt_ohm_p = 0,
.cfg_board_SI_setting_ps.soc_data_odt_ohm_n = 40, //60,
.cfg_board_SI_setting_ps.dram_data_drv_ohm = 40,
.cfg_board_SI_setting_ps.dram_data_odt_ohm = 60,
.cfg_board_SI_setting_ps.dram_data_wr_odt_ohm = 0,
.cfg_board_SI_setting_ps.dram_ac_odt_ohm = 120,//240,//120,
.cfg_board_SI_setting_ps.dram_drv_pull_up_cal_ohm =
DDR_DRAM_LPDDR4_ODT_40_OHM,
.cfg_board_SI_setting_ps.lpddr4_dram_vout_range =
1,//DDR_DRAM_LPDDR4_OUTPUT_1_3_VDDQ,
.cfg_board_common_setting.ac_pinmux = {
1, 0, 2, 3, 4, 5, 8, 9, 29,
28, 0, 6, 0, 7, 0,
14, 15, 13, 12, 11, 10, 18, 19, 26,
27, 17, 16, 0, 0, 0,
},
.cfg_ddr_training_delay_ps.rx_offset[0] = (1 << 7) | 0x10,
.cfg_ddr_training_delay_ps.reserve_para = { //have higher prior over rx_offset
(0 << 7) | 0, (0 << 7) | 0, (0 << 7) | 0, (0 << 7) | 0,
//cs0 write dqs,lane0-lane3
(0 << 7) | 0, (0 << 7) | 0, (0 << 7) | 0, (0 << 7) | 0,
//cs1 write dqs,lane0-lane3
(1 << 7) | 0x10, (1 << 7) | 0x10, (1 << 7) | 0x10, (1 << 7) | 0x10,
//cs0 read dqs,lane0-lane3
(1 << 7) | 0x10, (1 << 7) | 0x10, (1 << 7) | 0x10, (1 << 7) | 0x10,
//cs1 read dqs,lane0-lane3
},
.cfg_ddr_training_delay_ps.tx_offset[0] = (1 << 7) | 0x8,
//.cfg_ddr_training_delay_ps.dac_offset[0] = 0,//(1 << 7) | 0x10,
//.cfg_ddr_training_delay_ps.dac_offset[1] = 0,//(0 << 7) | 0x10,
.cfg_ddr_training_delay_ps.dac_offset[0] = (1 << 7) | 0x0,
.cfg_ddr_training_delay_ps.dac_offset[1] = (0 << 7) | 0x0,
.cfg_ddr_training_delay_ps.ac_trace_delay[0] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[1] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[2] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[3] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[4] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[5] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[6] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[7] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[8] = 256, //clk
.cfg_ddr_training_delay_ps.ac_trace_delay[9] = 256, //clk
.cfg_ddr_training_delay_ps.ac_trace_delay[10] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[11] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[12] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[13] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[14] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[15] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[16] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[17] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[18] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[19] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[20] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[21] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[22] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[23] = 256, //clk
.cfg_ddr_training_delay_ps.ac_trace_delay[24] = 256, //clk
.cfg_ddr_training_delay_ps.ac_trace_delay[25] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[26] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[27] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[28] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[29] = 256,
.cfg_ddr_training_delay_ps.read_dq_delay_t[0] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[1] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[2] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[3] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[4] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[5] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[6] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[7] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[8] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[9] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[10] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[11] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[12] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[13] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[14] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[15] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[16] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[17] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[18] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[19] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[20] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[21] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[22] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[23] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[24] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[25] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[26] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[27] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[28] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[29] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[30] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[31] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[32] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[33] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[34] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[35] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[36] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[37] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[38] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[39] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[40] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[41] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[42] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[43] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[44] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[45] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[46] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[47] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[48] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[49] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[50] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[51] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[52] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[53] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[54] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[55] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[56] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[57] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[58] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[59] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[60] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[61] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[62] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[63] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[64] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[65] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[66] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[67] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[68] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[69] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[70] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[71] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[0] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[1] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[2] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[3] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[4] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[5] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[6] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[7] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[8] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[9] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[10] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[11] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[12] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[13] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[14] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[15] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[16] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[17] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[18] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[19] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[20] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[21] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[22] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[23] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[24] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[25] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[26] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[27] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[28] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[29] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[30] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[31] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[32] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[33] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[34] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[35] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[36] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[37] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[38] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[39] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[40] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[41] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[42] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[43] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[44] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[45] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[46] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[47] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[48] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[49] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[50] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[51] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[52] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[53] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[54] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[55] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[56] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[57] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[58] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[59] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[60] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[61] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[62] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[63] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[64] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[65] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[66] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[67] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[68] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[69] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[70] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[71] = 64,
//pcb write dqs length > clk length 0.5UI, ideal write dqs =
//clk_delay(==0)+128+wl_offset*128
.cfg_ddr_training_delay_ps.write_dqs_delay[0] = 128,//384 - 64,
//clk_delay+128+wl_offset*128
.cfg_ddr_training_delay_ps.write_dqs_delay[1] = 128,//384 - 64,
.cfg_ddr_training_delay_ps.write_dqs_delay[2] = 128,//384 - 64,
.cfg_ddr_training_delay_ps.write_dqs_delay[3] = 128,//384 - 64,
.cfg_ddr_training_delay_ps.write_dqs_delay[4] = 128,//384 - 64,
.cfg_ddr_training_delay_ps.write_dqs_delay[5] = 128,//384 - 64,
.cfg_ddr_training_delay_ps.write_dqs_delay[6] = 128,//384 - 64,
.cfg_ddr_training_delay_ps.write_dqs_delay[7] = 128,//384 - 64,
.cfg_ddr_training_delay_ps.write_wck_delay[0] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[1] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[2] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[3] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[4] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[5] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[6] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[7] = 0x00000200,
.cfg_ddr_training_delay_ps.wdq_delay[0] = 384 - 64 + 64 + TDQS2DQ_LP4,
//write dqs+64+tdqs2dq
.cfg_ddr_training_delay_ps.wdq_delay[1] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[2] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[3] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[4] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[5] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[6] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[7] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[8] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[9] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[10] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[11] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[12] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[13] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[14] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[15] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[16] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[17] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[18] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[19] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[20] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[21] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[22] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[23] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[24] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[25] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[26] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[27] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[28] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[29] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[30] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[31] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[32] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[33] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[34] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[35] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[36] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[37] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[38] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[39] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[40] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[41] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[42] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[43] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[44] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[45] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[46] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[47] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[48] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[49] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[50] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[51] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[52] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[53] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[54] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[55] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[56] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[57] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[58] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[59] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[60] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[61] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[62] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[63] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[64] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[65] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[66] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[67] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[68] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[69] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[70] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[71] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[0] = 512,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[1] = 512,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[2] = 512,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[3] = 512,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[4] = 512,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[5] = 512,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[6] = 512,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[7] = 512,
.cfg_ddr_training_delay_ps.read_dqs_delay[0] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[1] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[2] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[3] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[4] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[5] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[6] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[7] = 128,
.cfg_ddr_training_delay_ps.soc_bit_vref0[0] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[1] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[2] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[3] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[4] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[5] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[6] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[7] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[8] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[9] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[10] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[11] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[12] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[13] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[14] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[15] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[16] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[17] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[18] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[19] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[20] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[21] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[22] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[23] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[24] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[25] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[26] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[27] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[28] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[29] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[30] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[31] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[32] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[33] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[34] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[35] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[0] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[1] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[2] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[3] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[4] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[5] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[6] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[7] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[8] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[9] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[10] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[11] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[12] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[13] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[14] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[15] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[16] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[17] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[18] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[19] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[20] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[21] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[22] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[23] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[24] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[25] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[26] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[27] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[28] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[29] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[30] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[31] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[32] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[33] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[34] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[35] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref2[0] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[1] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[2] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[3] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[4] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[5] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[6] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[7] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[8] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[9] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[10] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[11] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[12] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[13] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[14] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[15] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[16] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[17] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[18] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[19] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[20] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[21] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[22] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[23] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[24] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[25] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[26] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[27] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[28] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[29] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[30] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[31] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[32] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[33] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[34] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[35] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[0] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[1] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[2] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[3] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[4] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[5] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[6] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[7] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[8] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[9] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[10] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[11] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[12] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[13] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[14] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[15] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[16] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[17] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[18] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[19] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[20] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[21] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[22] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[23] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[24] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[25] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[26] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[27] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[28] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[29] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[30] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[31] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[32] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[33] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[34] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[35] = 0x00000030,
.cfg_ddr_training_delay_ps.dram_vref[0] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[1] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[2] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[3] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[4] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[5] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[6] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[7] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[8] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[9] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[10] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[11] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[12] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[13] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[14] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[15] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[16] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[17] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[18] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[19] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[20] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[21] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[22] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[23] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[24] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[25] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[26] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[27] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[28] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[29] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[30] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[31] = 0x00000000,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dq_tx[0] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[1] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[2] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[3] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[4] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[5] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[6] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[7] = 0x00000002,
.cfg_ddr_training_delay_ps.dfi_mrl[0] = 0x00000004,
.cfg_ddr_training_delay_ps.dfi_mrl[1] = 0x00000004,
.cfg_ddr_training_delay_ps.dfi_mrl[2] = 0x00000004,
.cfg_ddr_training_delay_ps.dfi_mrl[3] = 0x00000004,
.cfg_ddr_training_delay_ps.dfi_hwtmrl = 0x00000004,
.cfg_ddr_training_delay_ps.csr_hwtctrl = 0x00000004,
.cfg_ddr_training_delay_ps.pptdqscnttg0[0] = 0x00000026,
.cfg_ddr_training_delay_ps.pptdqscnttg0[1] = 0x00000026,
.cfg_ddr_training_delay_ps.pptdqscnttg0[2] = 0x00000026,
.cfg_ddr_training_delay_ps.pptdqscnttg0[3] = 0x00000026,
.cfg_ddr_training_delay_ps.pptdqscnttg1[0] = 0x00000000,
.cfg_ddr_training_delay_ps.pptdqscnttg1[1] = 0x00000000,
.cfg_ddr_training_delay_ps.pptdqscnttg1[2] = 0x00000000,
.cfg_ddr_training_delay_ps.pptdqscnttg1[3] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg0[0] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg0[1] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg0[2] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg0[3] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg1[0] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg1[1] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg1[2] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg1[3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][0] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][0] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][0] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][0] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][1] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][1] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][1] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][1] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][2] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][2] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][2] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][2] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][4] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][4] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][4] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][4] = 0x00000000,
.cfg_ddr_training_delay_ps.read_dq_delay_t[0] = 0x34,
.cfg_ddr_training_delay_ps.read_dq_delay_t[1] = 0x4a,
.cfg_ddr_training_delay_ps.read_dq_delay_t[2] = 0x42,
.cfg_ddr_training_delay_ps.read_dq_delay_t[3] = 0x3f,
.cfg_ddr_training_delay_ps.read_dq_delay_t[4] = 0x4b,
.cfg_ddr_training_delay_ps.read_dq_delay_t[5] = 0x33,
.cfg_ddr_training_delay_ps.read_dq_delay_t[6] = 0x31,
.cfg_ddr_training_delay_ps.read_dq_delay_t[7] = 0x44,
.cfg_ddr_training_delay_ps.read_dq_delay_t[8] = 0x49,
.cfg_ddr_training_delay_ps.read_dq_delay_t[9] = 0x3f,
.cfg_ddr_training_delay_ps.read_dq_delay_t[10] = 0x45,
.cfg_ddr_training_delay_ps.read_dq_delay_t[11] = 0x5b,
.cfg_ddr_training_delay_ps.read_dq_delay_t[12] = 0x4d,
.cfg_ddr_training_delay_ps.read_dq_delay_t[13] = 0x5a,
.cfg_ddr_training_delay_ps.read_dq_delay_t[14] = 0x51,
.cfg_ddr_training_delay_ps.read_dq_delay_t[15] = 0x4c,
.cfg_ddr_training_delay_ps.read_dq_delay_t[16] = 0x4c,
.cfg_ddr_training_delay_ps.read_dq_delay_t[17] = 0x4b,
.cfg_ddr_training_delay_ps.read_dq_delay_t[18] = 0x39,
.cfg_ddr_training_delay_ps.read_dq_delay_t[19] = 0x51,
.cfg_ddr_training_delay_ps.read_dq_delay_t[20] = 0x53,
.cfg_ddr_training_delay_ps.read_dq_delay_t[21] = 0x47,
.cfg_ddr_training_delay_ps.read_dq_delay_t[22] = 0x57,
.cfg_ddr_training_delay_ps.read_dq_delay_t[23] = 0x45,
.cfg_ddr_training_delay_ps.read_dq_delay_t[24] = 0x43,
.cfg_ddr_training_delay_ps.read_dq_delay_t[25] = 0x44,
.cfg_ddr_training_delay_ps.read_dq_delay_t[26] = 0x3a,
.cfg_ddr_training_delay_ps.read_dq_delay_t[27] = 0x3e,
.cfg_ddr_training_delay_ps.read_dq_delay_t[28] = 0x4b,
.cfg_ddr_training_delay_ps.read_dq_delay_t[29] = 0x4b,
.cfg_ddr_training_delay_ps.read_dq_delay_t[30] = 0x44,
.cfg_ddr_training_delay_ps.read_dq_delay_t[31] = 0x51,
.cfg_ddr_training_delay_ps.read_dq_delay_t[32] = 0x46,
.cfg_ddr_training_delay_ps.read_dq_delay_t[33] = 0x3b,
.cfg_ddr_training_delay_ps.read_dq_delay_t[34] = 0x4e,
.cfg_ddr_training_delay_ps.read_dq_delay_t[35] = 0x32,
.cfg_ddr_training_delay_ps.read_dq_delay_t[0 + 36] = 0x34,
.cfg_ddr_training_delay_ps.read_dq_delay_t[1 + 36] = 0x4a,
.cfg_ddr_training_delay_ps.read_dq_delay_t[2 + 36] = 0x42,
.cfg_ddr_training_delay_ps.read_dq_delay_t[3 + 36] = 0x3f,
.cfg_ddr_training_delay_ps.read_dq_delay_t[4 + 36] = 0x4b,
.cfg_ddr_training_delay_ps.read_dq_delay_t[5 + 36] = 0x33,
.cfg_ddr_training_delay_ps.read_dq_delay_t[6 + 36] = 0x31,
.cfg_ddr_training_delay_ps.read_dq_delay_t[7 + 36] = 0x44,
.cfg_ddr_training_delay_ps.read_dq_delay_t[8 + 36] = 0x49,
.cfg_ddr_training_delay_ps.read_dq_delay_t[9 + 36] = 0x3f,
.cfg_ddr_training_delay_ps.read_dq_delay_t[10 + 36] = 0x45,
.cfg_ddr_training_delay_ps.read_dq_delay_t[11 + 36] = 0x5b,
.cfg_ddr_training_delay_ps.read_dq_delay_t[12 + 36] = 0x4d,
.cfg_ddr_training_delay_ps.read_dq_delay_t[13 + 36] = 0x5a,
.cfg_ddr_training_delay_ps.read_dq_delay_t[14 + 36] = 0x51,
.cfg_ddr_training_delay_ps.read_dq_delay_t[15 + 36] = 0x4c,
.cfg_ddr_training_delay_ps.read_dq_delay_t[16 + 36] = 0x4c,
.cfg_ddr_training_delay_ps.read_dq_delay_t[17 + 36] = 0x4b,
.cfg_ddr_training_delay_ps.read_dq_delay_t[18 + 36] = 0x39,
.cfg_ddr_training_delay_ps.read_dq_delay_t[19 + 36] = 0x51,
.cfg_ddr_training_delay_ps.read_dq_delay_t[20 + 36] = 0x53,
.cfg_ddr_training_delay_ps.read_dq_delay_t[21 + 36] = 0x47,
.cfg_ddr_training_delay_ps.read_dq_delay_t[22 + 36] = 0x57,
.cfg_ddr_training_delay_ps.read_dq_delay_t[23 + 36] = 0x45,
.cfg_ddr_training_delay_ps.read_dq_delay_t[24 + 36] = 0x43,
.cfg_ddr_training_delay_ps.read_dq_delay_t[25 + 36] = 0x44,
.cfg_ddr_training_delay_ps.read_dq_delay_t[26 + 36] = 0x3a,
.cfg_ddr_training_delay_ps.read_dq_delay_t[27 + 36] = 0x3e,
.cfg_ddr_training_delay_ps.read_dq_delay_t[28 + 36] = 0x4b,
.cfg_ddr_training_delay_ps.read_dq_delay_t[29 + 36] = 0x4b,
.cfg_ddr_training_delay_ps.read_dq_delay_t[30 + 36] = 0x44,
.cfg_ddr_training_delay_ps.read_dq_delay_t[31 + 36] = 0x51,
.cfg_ddr_training_delay_ps.read_dq_delay_t[32 + 36] = 0x46,
.cfg_ddr_training_delay_ps.read_dq_delay_t[33 + 36] = 0x3b,
.cfg_ddr_training_delay_ps.read_dq_delay_t[34 + 36] = 0x4e,
.cfg_ddr_training_delay_ps.read_dq_delay_t[35 + 36] = 0x32,
.cfg_ddr_training_delay_ps.read_dqs_delay[0] = 0x80,
.cfg_ddr_training_delay_ps.read_dqs_delay[1] = 0x80,
.cfg_ddr_training_delay_ps.read_dqs_delay[2] = 0x80,
.cfg_ddr_training_delay_ps.read_dqs_delay[3] = 0x80,
.cfg_ddr_training_delay_ps.read_dqs_delay[4] = 0x80,
.cfg_ddr_training_delay_ps.read_dqs_delay[5] = 0x80,
.cfg_ddr_training_delay_ps.read_dqs_delay[6] = 0x80,
.cfg_ddr_training_delay_ps.read_dqs_delay[7] = 0x80,
},
{
.cfg_board_common_setting.timming_magic = 0,
.cfg_board_common_setting.timming_max_valid_configs = MAX_VALID_CONFIGS,
//sizeof(__ddr_setting) / sizeof(ddr_set_ps0_only_t),
.cfg_board_common_setting.timming_struct_version = 0,
.cfg_board_common_setting.timming_struct_org_size = sizeof(ddr_set_ps0_only_t),
.cfg_board_common_setting.timming_struct_real_size = 0,
.cfg_board_common_setting.fast_boot = {
0, 0, 0, 0
},
.cfg_board_common_setting.ddr_func = 0,
.cfg_board_common_setting.board_id = CONFIG_BOARD_ID_MASK,
.cfg_board_common_setting.DramType = CONFIG_DDR_TYPE_LPDDR4,
.cfg_board_common_setting.enable_lpddr4x_mode = 3,
//0 force lp4x 1 force lp4
//2 auto 4x use nn 4 use pn drivere
//3 auto + force 4 4x both use nn driver
.cfg_board_common_setting.dram_rank_config = CONFIG_DDR0_32BIT_RANK0_CH0,
//.cfg_board_common_setting.dram_cs0_base_add = 0,
//.cfg_board_common_setting.dram_cs1_base_add = 0,
.cfg_board_common_setting.dram_ch0_size_MB =
(DRAM_SIZE_ID_256MBX4 << CONFIG_CS0_BYTE_01_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX4 << CONFIG_CS0_BYTE_23_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_01_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_23_SIZE_256_ID_OFFSET),
.cfg_board_common_setting.dram_ch1_size_MB =
(DRAM_SIZE_ID_256MBX4 << CONFIG_CS0_BYTE_01_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX4 << CONFIG_CS0_BYTE_23_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_01_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_23_SIZE_256_ID_OFFSET),
.cfg_board_common_setting.DisabledDbyte[0] = 0xf0,
//bit 0 -3 ch0 cs0 ,bit 4-7 ch0 cs1,
.cfg_board_common_setting.DisabledDbyte[1] = 0xf0,
//bit 0 -3 ch1 cs0 ,bit 4-7 ch1
.cfg_board_common_setting.dram_x4x8x16_mode = CONFIG_DRAM_MODE_X16,
.cfg_board_common_setting.Is2Ttiming = CONFIG_USE_DDR_2T_MODE,
.cfg_board_common_setting.log_level = 4,
//4,//LOG_LEVEL_BASIC,
.cfg_board_common_setting.dbi_enable = 0,
.cfg_board_common_setting.pll_ssc_mode =
(1 << 20) | (1 << 8) | (2 << 4) | 0,
//center_ssc_1000ppm,//SSC_DISABLE,(1 << 20) | (0 << 8) | (2 << 4) | 0,
.cfg_board_common_setting.org_tdqs2dq = 0,
.cfg_board_common_setting.reserve1_test = {
0
},
.cfg_board_common_setting.ddr_dmc_remap = DDR_DMC_REMAP_LPDDR4_16BIT,
//DDR_DMC_REMAP_DDR4_32BIT,
// .cfg_board_common_setting.ac_pinmux = {
//2, 3, 1, 0, 5, 4, 0, 0, 0, 0, 1, 3, 5, 2, 4, 0 },
.cfg_board_common_setting.ddr_dqs_swap = 0,
//.cfg_board_common_setting.ddr_dq_remap= { 23,
//20,
//21,
//34,
//16,
//18,
//17,
//19,
//22,
//24,
//28,
//26,
//35,
//25,
//29,
//31,
//30,
//27,
//7,
//6,
//0,
//32,
//1,
//5,
//3,
//4,
//2,
//12,
//14,
//15,
//33,
//9,
//11,
//13,
//8,
//10, },
.cfg_board_common_setting.ddr_vddee_setting = {
0
},
.cfg_board_SI_setting_ps.DRAMFreq = CACLU_CLK_LP4,
// .cfg_ddr_training_delay_ps.DRAMFreq = 600,// 2112,//,cfg_ddr_training_delay_ps
//.cfg_ddr_training_delay_ps.PllBypassEn = 0,
.cfg_board_SI_setting_ps.training_SequenceCtrl = 0,
.cfg_board_SI_setting_ps.dfi_odt_config = DDR_DRAM_ODT_W_CS0_ODT0,
.cfg_board_SI_setting_ps.clk_drv_ohm = DDR_SOC_AC_DRV_40_OHM,
.cfg_board_SI_setting_ps.cs_drv_ohm = DDR_SOC_AC_DRV_40_OHM,
.cfg_board_SI_setting_ps.ac_drv_ohm = DDR_SOC_AC_DRV_40_OHM,
.cfg_board_SI_setting_ps.soc_data_drv_ohm_p = DDR_SOC_DATA_DRV_ODT_40_OHM,
.cfg_board_SI_setting_ps.soc_data_drv_ohm_n = DDR_SOC_DATA_DRV_ODT_40_OHM,
.cfg_board_SI_setting_ps.soc_data_odt_ohm_p = DDR_SOC_DATA_DRV_ODT_0_OHM,
.cfg_board_SI_setting_ps.soc_data_odt_ohm_n = DDR_SOC_DATA_DRV_ODT_40_OHM,
.cfg_board_SI_setting_ps.dram_data_drv_ohm = DDR_DRAM_LPDDR4_DRV_40_OHM,
.cfg_board_SI_setting_ps.dram_data_odt_ohm = DDR_DRAM_LPDDR4_ODT_40_OHM,
.cfg_board_SI_setting_ps.dram_data_wr_odt_ohm = DDR_DRAM_DDR_WR_ODT_0_OHM,
.cfg_board_SI_setting_ps.dram_ac_odt_ohm = 120, //240,
.cfg_board_SI_setting_ps.dram_drv_pull_up_cal_ohm =
DDR_DRAM_LPDDR4_ODT_40_OHM,
.cfg_board_SI_setting_ps.lpddr4_dram_vout_range =
DDR_DRAM_LPDDR4_OUTPUT_1_3_VDDQ,
//.cfg_ddr_training_delay_ps.dfe_offset = 0,
.cfg_board_SI_setting_ps.vref_ac_permil = 260,//420,
.cfg_board_SI_setting_ps.vref_soc_data_permil = 0,
.cfg_board_SI_setting_ps.vref_dram_data_permil = 0,
.cfg_board_SI_setting_ps.max_core_timmming_frequency = 0,
//.cfg_ddr_training_delay_ps.training_phase_parameter = {0},
//.cfg_ddr_training_delay_ps.ac_trace_delay_org = {
// 128, 128, 128 + 40, 128, 128, 128, 128, 128,
// 384, 384, 384, 384, 384, 384, 384, 384,
// 384, 384, 384, 384, 384, 384, 384, 384,
// 384, 384, 384, 384, 384, 384, 384, 384,
// 384, 384, 384, 384,
//},
//total 36
.cfg_ddr_training_delay_ps.ac_trace_delay = {
32 + 0, 32 + 0, 32 + 0, 32 + 0,
32, 32 + 0, 32 + 0, 32 + 0,
32 + 0, 32 + 0, 32 + 0, 32 + 0,
32 + 0, 32 + 0, 32, 32 + 0,
32 + 0, 32 + 0, 32 + 0, 32 + 0,
32 + 0, 32 + 0, 32, 32 + 0
},
// 1 //real chip stk lp4
.cfg_board_common_setting.dbi_enable = 0x0000000, // 0,0x00000041
.cfg_board_common_setting.ddr_rfc_type = 0x0000000d, // 13,0x00000042
.cfg_board_common_setting.pll_ssc_mode = 0x00000000, // 0,0x00000044
//.cfg_board_common_setting.max_core_timmming_frequency=0x00000e10,// 3600,0x0000006a
//.cfg_board_common_setting.lpddr4_x8_mode=0x00000000,// 0,0x00000087
//.cfg_board_common_setting.tdqs2dq=0x00000000,// 0,0x0000008a
//.cfg_board_common_setting.dfe_offset_value=0x00000000,// 0,0x0000008e
//.cfg_board_common_setting.training_offset=0x00000000,// 0,0x0000008f
.cfg_board_SI_setting_ps.clk_drv_ohm = 40,
.cfg_board_SI_setting_ps.cs_drv_ohm = 40,
.cfg_board_SI_setting_ps.ac_drv_ohm = 40,
.cfg_board_SI_setting_ps.soc_data_drv_ohm_p = 40,
.cfg_board_SI_setting_ps.soc_data_drv_ohm_n = 40,
.cfg_board_SI_setting_ps.soc_data_odt_ohm_p = 0,
.cfg_board_SI_setting_ps.soc_data_odt_ohm_n = 40, //60,
.cfg_board_SI_setting_ps.dram_data_drv_ohm = 40,
.cfg_board_SI_setting_ps.dram_data_odt_ohm = 60,
.cfg_board_SI_setting_ps.dram_data_wr_odt_ohm = 0,
.cfg_board_SI_setting_ps.dram_ac_odt_ohm = 120,//240,//120,
.cfg_board_SI_setting_ps.dram_drv_pull_up_cal_ohm =
DDR_DRAM_LPDDR4_ODT_40_OHM,
.cfg_board_SI_setting_ps.lpddr4_dram_vout_range =
1,//0,//DDR_DRAM_LPDDR4_OUTPUT_1_3_VDDQ,
//.cfg_ddr_training_delay_ps.dfe_offset = 0,
.cfg_board_common_setting.ac_pinmux = {
1, 0, 2, 3, 4, 5, 8, 9, 29,
28, 0, 7, 0, 6, 0,
14, 15, 13, 12, 11, 10, 18, 19, 27,
26, 16, 17, 0, 0, 0,
},
.cfg_ddr_training_delay_ps.rx_offset[0] = (1 << 7) | 0x10,
.cfg_ddr_training_delay_ps.reserve_para = {//have higher prior over rx_offset
(0 << 7) | 0, (0 << 7) | 0, (0 << 7) | 0, (0 << 7) | 0,
//cs0 write dqs,lane0-lane3
(0 << 7) | 0, (0 << 7) | 0, (0 << 7) | 0, (0 << 7) | 0,
//cs1 write dqs,lane0-lane3
(1 << 7) | 0x10, (1 << 7) | 0x10, (1 << 7) | 0x10, (1 << 7) | 0x10,
//cs0 read dqs,lane0-lane3
(1 << 7) | 0x10, (1 << 7) | 0x10, (1 << 7) | 0x10, (1 << 7) | 0x10,
//cs1 read dqs,lane0-lane3
},
.cfg_ddr_training_delay_ps.tx_offset[0] = (1 << 7) | 0x8,
//.cfg_ddr_training_delay_ps.dac_offset[0] = 0,//(1 << 7) | 0x10,
//.cfg_ddr_training_delay_ps.dac_offset[1] = 0,//(0 << 7) | 0x10,
.cfg_ddr_training_delay_ps.dac_offset[0] = (1 << 7) | 0x0,
.cfg_ddr_training_delay_ps.dac_offset[1] = (0 << 7) | 0x0,
.cfg_ddr_training_delay_ps.ac_trace_delay[0] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[1] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[2] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[3] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[4] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[5] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[6] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[7] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[8] = 256, //clk
.cfg_ddr_training_delay_ps.ac_trace_delay[9] = 256, //clk
.cfg_ddr_training_delay_ps.ac_trace_delay[10] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[11] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[12] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[13] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[14] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[15] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[16] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[17] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[18] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[19] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[20] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[21] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[22] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[23] = 256, //clk
.cfg_ddr_training_delay_ps.ac_trace_delay[24] = 256, //clk
.cfg_ddr_training_delay_ps.ac_trace_delay[25] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[26] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[27] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[28] = 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[29] = 256,
.cfg_ddr_training_delay_ps.read_dq_delay_t[0] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[1] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[2] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[3] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[4] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[5] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[6] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[7] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[8] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[9] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[10] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[11] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[12] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[13] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[14] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[15] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[16] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[17] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[18] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[19] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[20] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[21] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[22] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[23] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[24] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[25] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[26] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[27] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[28] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[29] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[30] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[31] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[32] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[33] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[34] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[35] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[36] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[37] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[38] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[39] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[40] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[41] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[42] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[43] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[44] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[45] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[46] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[47] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[48] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[49] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[50] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[51] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[52] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[53] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[54] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[55] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[56] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[57] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[58] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[59] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[60] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[61] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[62] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[63] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[64] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[65] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[66] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[67] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[68] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[69] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[70] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[71] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[0] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[1] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[2] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[3] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[4] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[5] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[6] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[7] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[8] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[9] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[10] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[11] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[12] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[13] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[14] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[15] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[16] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[17] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[18] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[19] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[20] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[21] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[22] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[23] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[24] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[25] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[26] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[27] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[28] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[29] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[30] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[31] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[32] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[33] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[34] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[35] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[36] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[37] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[38] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[39] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[40] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[41] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[42] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[43] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[44] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[45] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[46] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[47] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[48] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[49] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[50] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[51] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[52] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[53] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[54] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[55] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[56] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[57] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[58] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[59] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[60] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[61] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[62] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[63] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[64] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[65] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[66] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[67] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[68] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[69] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[70] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[71] = 64,
//clk_delay+128+wl_offset*128
.cfg_ddr_training_delay_ps.write_dqs_delay[0] = 128,//384 - 64,
.cfg_ddr_training_delay_ps.write_dqs_delay[1] = 128,//384 - 64,
.cfg_ddr_training_delay_ps.write_dqs_delay[2] = 128,//384 - 64,
.cfg_ddr_training_delay_ps.write_dqs_delay[3] = 128,//384 - 64,
.cfg_ddr_training_delay_ps.write_dqs_delay[4] = 128,//384 - 64,
.cfg_ddr_training_delay_ps.write_dqs_delay[5] = 128,//384 - 64,
.cfg_ddr_training_delay_ps.write_dqs_delay[6] = 128,//384 - 64,
.cfg_ddr_training_delay_ps.write_dqs_delay[7] = 128,//384 - 64,
.cfg_ddr_training_delay_ps.write_wck_delay[0] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[1] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[2] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[3] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[4] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[5] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[6] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[7] = 0x00000200,
.cfg_ddr_training_delay_ps.wdq_delay[0] = 384 - 64 + 64 + TDQS2DQ_LP4,
//write dqs+64+tdqs2dq
.cfg_ddr_training_delay_ps.wdq_delay[1] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[2] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[3] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[4] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[5] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[6] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[7] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[8] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[9] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[10] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[11] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[12] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[13] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[14] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[15] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[16] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[17] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[18] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[19] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[20] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[21] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[22] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[23] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[24] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[25] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[26] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[27] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[28] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[29] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[30] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[31] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[32] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[33] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[34] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[35] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[36] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[37] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[38] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[39] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[40] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[41] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[42] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[43] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[44] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[45] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[46] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[47] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[48] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[49] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[50] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[51] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[52] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[53] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[54] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[55] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[56] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[57] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[58] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[59] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[60] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[61] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[62] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[63] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[64] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[65] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[66] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[67] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[68] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[69] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[70] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.wdq_delay[71] = 384 - 64 + 64 + TDQS2DQ_LP4,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[0] = 512,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[1] = 512,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[2] = 512,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[3] = 512,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[4] = 512,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[5] = 512,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[6] = 512,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[7] = 512,
.cfg_ddr_training_delay_ps.read_dqs_delay[0] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[1] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[2] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[3] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[4] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[5] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[6] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[7] = 128,
.cfg_ddr_training_delay_ps.soc_bit_vref0[0] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[1] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[2] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[3] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[4] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[5] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[6] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[7] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[8] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[9] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[10] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[11] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[12] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[13] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[14] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[15] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[16] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[17] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[18] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[19] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[20] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[21] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[22] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[23] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[24] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[25] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[26] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[27] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[28] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[29] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[30] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[31] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[32] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[33] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[34] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[35] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[0] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[1] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[2] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[3] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[4] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[5] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[6] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[7] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[8] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[9] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[10] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[11] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[12] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[13] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[14] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[15] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[16] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[17] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[18] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[19] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[20] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[21] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[22] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[23] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[24] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[25] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[26] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[27] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[28] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[29] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[30] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[31] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[32] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[33] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[34] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[35] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref2[0] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[1] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[2] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[3] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[4] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[5] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[6] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[7] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[8] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[9] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[10] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[11] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[12] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[13] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[14] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[15] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[16] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[17] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[18] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[19] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[20] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[21] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[22] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[23] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[24] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[25] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[26] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[27] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[28] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[29] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[30] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[31] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[32] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[33] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[34] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[35] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[0] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[1] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[2] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[3] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[4] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[5] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[6] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[7] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[8] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[9] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[10] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[11] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[12] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[13] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[14] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[15] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[16] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[17] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[18] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[19] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[20] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[21] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[22] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[23] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[24] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[25] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[26] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[27] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[28] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[29] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[30] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[31] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[32] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[33] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[34] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[35] = 0x00000030,
.cfg_ddr_training_delay_ps.dram_vref[0] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[1] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[2] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[3] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[4] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[5] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[6] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[7] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[8] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[9] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[10] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[11] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[12] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[13] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[14] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[15] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[16] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[17] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[18] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[19] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[20] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[21] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[22] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[23] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[24] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[25] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[26] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[27] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[28] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[29] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[30] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[31] = 0x00000000,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dq_tx[0] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[1] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[2] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[3] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[4] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[5] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[6] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[7] = 0x00000002,
.cfg_ddr_training_delay_ps.dfi_mrl[0] = 0x00000004,
.cfg_ddr_training_delay_ps.dfi_mrl[1] = 0x00000004,
.cfg_ddr_training_delay_ps.dfi_mrl[2] = 0x00000004,
.cfg_ddr_training_delay_ps.dfi_mrl[3] = 0x00000004,
.cfg_ddr_training_delay_ps.dfi_hwtmrl = 0x00000004,
.cfg_ddr_training_delay_ps.csr_hwtctrl = 0x00000004,
.cfg_ddr_training_delay_ps.pptdqscnttg0[0] = 0x00000026,
.cfg_ddr_training_delay_ps.pptdqscnttg0[1] = 0x00000026,
.cfg_ddr_training_delay_ps.pptdqscnttg0[2] = 0x00000026,
.cfg_ddr_training_delay_ps.pptdqscnttg0[3] = 0x00000026,
.cfg_ddr_training_delay_ps.pptdqscnttg1[0] = 0x00000000,
.cfg_ddr_training_delay_ps.pptdqscnttg1[1] = 0x00000000,
.cfg_ddr_training_delay_ps.pptdqscnttg1[2] = 0x00000000,
.cfg_ddr_training_delay_ps.pptdqscnttg1[3] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg0[0] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg0[1] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg0[2] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg0[3] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg1[0] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg1[1] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg1[2] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg1[3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][0] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][0] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][0] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][0] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][1] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][1] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][1] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][1] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][2] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][2] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][2] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][2] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][4] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][4] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][4] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][4] = 0x00000000,
.cfg_ddr_training_delay_ps.read_dq_delay_t[0] = 0x38,
.cfg_ddr_training_delay_ps.read_dq_delay_t[1] = 0x48,
.cfg_ddr_training_delay_ps.read_dq_delay_t[2] = 0x37,
.cfg_ddr_training_delay_ps.read_dq_delay_t[3] = 0x42,
.cfg_ddr_training_delay_ps.read_dq_delay_t[4] = 0x4a,
.cfg_ddr_training_delay_ps.read_dq_delay_t[5] = 0x49,
.cfg_ddr_training_delay_ps.read_dq_delay_t[6] = 0x4c,
.cfg_ddr_training_delay_ps.read_dq_delay_t[7] = 0x49,
.cfg_ddr_training_delay_ps.read_dq_delay_t[8] = 0x34,
.cfg_ddr_training_delay_ps.read_dq_delay_t[9] = 0x48,
.cfg_ddr_training_delay_ps.read_dq_delay_t[10] = 0x4f,
.cfg_ddr_training_delay_ps.read_dq_delay_t[11] = 0x44,
.cfg_ddr_training_delay_ps.read_dq_delay_t[12] = 0x41,
.cfg_ddr_training_delay_ps.read_dq_delay_t[13] = 0x4e,
.cfg_ddr_training_delay_ps.read_dq_delay_t[14] = 0x33,
.cfg_ddr_training_delay_ps.read_dq_delay_t[15] = 0x33,
.cfg_ddr_training_delay_ps.read_dq_delay_t[16] = 0x3d,
.cfg_ddr_training_delay_ps.read_dq_delay_t[17] = 0x3d,
.cfg_ddr_training_delay_ps.read_dq_delay_t[18] = 0x33,
.cfg_ddr_training_delay_ps.read_dq_delay_t[19] = 0x4b,
.cfg_ddr_training_delay_ps.read_dq_delay_t[20] = 0x4c,
.cfg_ddr_training_delay_ps.read_dq_delay_t[21] = 0x43,
.cfg_ddr_training_delay_ps.read_dq_delay_t[22] = 0x4d,
.cfg_ddr_training_delay_ps.read_dq_delay_t[23] = 0x49,
.cfg_ddr_training_delay_ps.read_dq_delay_t[24] = 0x42,
.cfg_ddr_training_delay_ps.read_dq_delay_t[25] = 0x40,
.cfg_ddr_training_delay_ps.read_dq_delay_t[26] = 0x36,
.cfg_ddr_training_delay_ps.read_dq_delay_t[27] = 0x54,
.cfg_ddr_training_delay_ps.read_dq_delay_t[28] = 0x50,
.cfg_ddr_training_delay_ps.read_dq_delay_t[29] = 0x56,
.cfg_ddr_training_delay_ps.read_dq_delay_t[30] = 0x5a,
.cfg_ddr_training_delay_ps.read_dq_delay_t[31] = 0x5d,
.cfg_ddr_training_delay_ps.read_dq_delay_t[32] = 0x57,
.cfg_ddr_training_delay_ps.read_dq_delay_t[33] = 0x56,
.cfg_ddr_training_delay_ps.read_dq_delay_t[34] = 0x70,
.cfg_ddr_training_delay_ps.read_dq_delay_t[35] = 0x63,
.cfg_ddr_training_delay_ps.read_dq_delay_t[0 + 36] = 0x38,
.cfg_ddr_training_delay_ps.read_dq_delay_t[1 + 36] = 0x48,
.cfg_ddr_training_delay_ps.read_dq_delay_t[2 + 36] = 0x37,
.cfg_ddr_training_delay_ps.read_dq_delay_t[3 + 36] = 0x42,
.cfg_ddr_training_delay_ps.read_dq_delay_t[4 + 36] = 0x4a,
.cfg_ddr_training_delay_ps.read_dq_delay_t[5 + 36] = 0x49,
.cfg_ddr_training_delay_ps.read_dq_delay_t[6 + 36] = 0x4c,
.cfg_ddr_training_delay_ps.read_dq_delay_t[7 + 36] = 0x49,
.cfg_ddr_training_delay_ps.read_dq_delay_t[8 + 36] = 0x34,
.cfg_ddr_training_delay_ps.read_dq_delay_t[9 + 36] = 0x48,
.cfg_ddr_training_delay_ps.read_dq_delay_t[10 + 36] = 0x4f,
.cfg_ddr_training_delay_ps.read_dq_delay_t[11 + 36] = 0x44,
.cfg_ddr_training_delay_ps.read_dq_delay_t[12 + 36] = 0x41,
.cfg_ddr_training_delay_ps.read_dq_delay_t[13 + 36] = 0x4e,
.cfg_ddr_training_delay_ps.read_dq_delay_t[14 + 36] = 0x33,
.cfg_ddr_training_delay_ps.read_dq_delay_t[15 + 36] = 0x33,
.cfg_ddr_training_delay_ps.read_dq_delay_t[16 + 36] = 0x3d,
.cfg_ddr_training_delay_ps.read_dq_delay_t[17 + 36] = 0x3d,
.cfg_ddr_training_delay_ps.read_dq_delay_t[18 + 36] = 0x33,
.cfg_ddr_training_delay_ps.read_dq_delay_t[19 + 36] = 0x4b,
.cfg_ddr_training_delay_ps.read_dq_delay_t[20 + 36] = 0x4c,
.cfg_ddr_training_delay_ps.read_dq_delay_t[21 + 36] = 0x43,
.cfg_ddr_training_delay_ps.read_dq_delay_t[22 + 36] = 0x4d,
.cfg_ddr_training_delay_ps.read_dq_delay_t[23 + 36] = 0x49,
.cfg_ddr_training_delay_ps.read_dq_delay_t[24 + 36] = 0x42,
.cfg_ddr_training_delay_ps.read_dq_delay_t[25 + 36] = 0x40,
.cfg_ddr_training_delay_ps.read_dq_delay_t[26 + 36] = 0x36,
.cfg_ddr_training_delay_ps.read_dq_delay_t[27 + 36] = 0x54,
.cfg_ddr_training_delay_ps.read_dq_delay_t[28 + 36] = 0x50,
.cfg_ddr_training_delay_ps.read_dq_delay_t[29 + 36] = 0x56,
.cfg_ddr_training_delay_ps.read_dq_delay_t[30 + 36] = 0x5a,
.cfg_ddr_training_delay_ps.read_dq_delay_t[31 + 36] = 0x5d,
.cfg_ddr_training_delay_ps.read_dq_delay_t[32 + 36] = 0x57,
.cfg_ddr_training_delay_ps.read_dq_delay_t[33 + 36] = 0x56,
.cfg_ddr_training_delay_ps.read_dq_delay_t[34 + 36] = 0x70,
.cfg_ddr_training_delay_ps.read_dq_delay_t[35 + 36] = 0x63,
.cfg_ddr_training_delay_ps.read_dqs_delay[0] = 0x80,
.cfg_ddr_training_delay_ps.read_dqs_delay[1] = 0x80,
.cfg_ddr_training_delay_ps.read_dqs_delay[2] = 0x80,
.cfg_ddr_training_delay_ps.read_dqs_delay[3] = 0x80,
.cfg_ddr_training_delay_ps.read_dqs_delay[4] = 0x80,
.cfg_ddr_training_delay_ps.read_dqs_delay[5] = 0x80,
.cfg_ddr_training_delay_ps.read_dqs_delay[6] = 0x80,
.cfg_ddr_training_delay_ps.read_dqs_delay[7] = 0x80,
//#endif
},
#endif
//};
#define CACLU_CLK_DDR4 1584 //1792//600 //1200 //(1900)// (1440)//(1008)
//ddr_set_ps0_only_t ddr_set_t_default[2] = {
//ddr_set_ps0_only_t __ddr_setting[]
//__attribute__ ((section(".ddr_param"))) = {
#if S5_DDR4_SKT
{
.cfg_board_common_setting.timming_magic = 0,
.cfg_board_common_setting.timming_max_valid_configs = MAX_VALID_CONFIGS,
//sizeof(__ddr_setting) / sizeof(ddr_set_ps0_only_t),
.cfg_board_common_setting.timming_struct_version = 0,
.cfg_board_common_setting.timming_struct_org_size = sizeof(ddr_set_ps0_only_t),
.cfg_board_common_setting.timming_struct_real_size = 0,
.cfg_board_common_setting.fast_boot = {
0, 0, 0, 0
},
.cfg_board_common_setting.ddr_func = 0,
.cfg_board_common_setting.board_id = CONFIG_BOARD_ID_MASK,
.cfg_board_common_setting.DramType = CONFIG_DDR_TYPE_DDR4,
.cfg_board_common_setting.enable_lpddr4x_mode = 0,
.cfg_board_common_setting.dram_rank_config = CONFIG_DDR0_32BIT_RANK0_CH0,
//.cfg_board_common_setting.dram_cs0_base_add = 0,
//.cfg_board_common_setting.dram_cs1_base_add = 0,
.cfg_board_common_setting.dram_ch0_size_MB =
(DRAM_SIZE_ID_256MBX2 << CONFIG_CS0_BYTE_01_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX2 << CONFIG_CS0_BYTE_23_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_01_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_23_SIZE_256_ID_OFFSET),
.cfg_board_common_setting.dram_ch1_size_MB =
(DRAM_SIZE_ID_256MBX2 << CONFIG_CS0_BYTE_01_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX2 << CONFIG_CS0_BYTE_23_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_01_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_23_SIZE_256_ID_OFFSET),
.cfg_board_common_setting.DisabledDbyte[0] = 0xf0,
//bit 0 -3 ch0 cs0 ,bit 4-7 ch0 cs1,
.cfg_board_common_setting.DisabledDbyte[1] = 0xf0,
//bit 0 -3 ch1 cs0 ,bit 4-7 ch1
.cfg_board_common_setting.dram_x4x8x16_mode = CONFIG_DRAM_MODE_X16,
.cfg_board_common_setting.Is2Ttiming = CONFIG_USE_DDR_2T_MODE,
.cfg_board_common_setting.log_level = 4,
//4,//LOG_LEVEL_BASIC,
.cfg_board_common_setting.dbi_enable = DDR_WRITE_READ_DBI_DISABLE,
.cfg_board_common_setting.pll_ssc_mode =
(1 << 20) | (1 << 8) | (2 << 4) | 0,
//center_ssc_1000ppm,//SSC_DISABLE,(1 << 20) | (0 << 8) | (2 << 4) | 0,
.cfg_board_common_setting.org_tdqs2dq = 0,
.cfg_board_common_setting.reserve1_test = {
0
},
.cfg_board_common_setting.ddr_dmc_remap = DDR_DMC_REMAP_DDR4_32BIT,
//DDR_DMC_REMAP_DDR4_32BIT,
//DDR_DMC_REMAP_DDR4_32BIT,
// .cfg_board_common_setting.ac_pinmux = {
//2, 3, 1, 0, 5, 4, 0, 0, 0, 0, 1, 3, 5, 2, 4, 0 },
.cfg_board_common_setting.ddr_dqs_swap = 0,
// .cfg_board_common_setting.ddr_dq_remap = {
//3, 2, 6, 5, 7, 4, 0, 1, 10, 8, 14, 13, 15,
//12, 9, 11, 23, 21, 17, 18, 16, 19, 20, 22, 31, 28, 24, 25, 27, 26, 30, 29 },
.cfg_board_common_setting.ddr_vddee_setting = {
0
},
.cfg_board_SI_setting_ps.DRAMFreq = CACLU_CLK_DDR4,
// .cfg_ddr_training_delay_ps.DRAMFreq = 600,
// 2112,//1176,cfg_ddr_training_delay_ps
//.cfg_ddr_training_delay_ps.PllBypassEn = 0,
.cfg_board_SI_setting_ps.training_SequenceCtrl = 0,
.cfg_board_SI_setting_ps.dfi_odt_config = DDR_DRAM_ODT_W_CS0_ODT0,
.cfg_board_SI_setting_ps.clk_drv_ohm = DDR_SOC_AC_DRV_40_OHM,
.cfg_board_SI_setting_ps.cs_drv_ohm = DDR_SOC_AC_DRV_40_OHM,
.cfg_board_SI_setting_ps.ac_drv_ohm = DDR_SOC_AC_DRV_40_OHM,
.cfg_board_SI_setting_ps.soc_data_drv_ohm_p = DDR_SOC_DATA_DRV_ODT_40_OHM,
.cfg_board_SI_setting_ps.soc_data_drv_ohm_n = DDR_SOC_DATA_DRV_ODT_40_OHM,
.cfg_board_SI_setting_ps.soc_data_odt_ohm_p = DDR_SOC_DATA_DRV_ODT_60_OHM,
.cfg_board_SI_setting_ps.soc_data_odt_ohm_n = DDR_SOC_DATA_DRV_ODT_0_OHM,
.cfg_board_SI_setting_ps.dram_data_drv_ohm = DDR_DRAM_LPDDR4_DRV_40_OHM,
.cfg_board_SI_setting_ps.dram_data_odt_ohm = DDR_DRAM_LPDDR4_ODT_40_OHM,
.cfg_board_SI_setting_ps.dram_data_wr_odt_ohm = DDR_DRAM_DDR_WR_ODT_0_OHM,
.cfg_board_SI_setting_ps.dram_ac_odt_ohm = 120, //240,
.cfg_board_SI_setting_ps.dram_drv_pull_up_cal_ohm =
DDR_DRAM_LPDDR4_ODT_40_OHM,
.cfg_board_SI_setting_ps.lpddr4_dram_vout_range =
DDR_DRAM_LPDDR4_OUTPUT_1_3_VDDQ,
//.cfg_ddr_training_delay_ps.dfe_offset = 0,
.cfg_board_SI_setting_ps.vref_ac_permil = 0,
.cfg_board_SI_setting_ps.vref_soc_data_permil = 0,
.cfg_board_SI_setting_ps.vref_dram_data_permil = 0,
.cfg_board_SI_setting_ps.max_core_timmming_frequency = 0,
//.cfg_ddr_training_delay_ps.training_phase_parameter = {0},
//.cfg_ddr_training_delay_ps.ac_trace_delay_org = {
// 128, 128, 128 + 40, 128, 128, 128, 128, 128,
// 384, 384, 384, 384, 384, 384, 384, 384,
// 384, 384, 384, 384, 384, 384, 384, 384,
// 384, 384, 384, 384, 384, 384, 384, 384,
// 384, 384, 384, 384,
//},
//total 36
.cfg_ddr_training_delay_ps.ac_trace_delay = {
32 + 0, 32 + 0, 32 + 0, 32 + 0,
32, 32 + 0, 32 + 0, 32 + 0,
32 + 0, 32 + 0, 32 + 0, 32 + 0,
32 + 0, 32 + 0, 32, 32 + 0,
32 + 0, 32 + 0, 32 + 0, 32 + 0,
32 + 0, 32 + 0, 32, 32 + 0
},
// 1 //real chip stk lp4
.cfg_board_common_setting.dbi_enable = 0x00000000,
.cfg_board_common_setting.ddr_rfc_type = 0x0000000d,
.cfg_board_common_setting.pll_ssc_mode = 0x00000000,
//.cfg_board_common_setting.max_core_timmming_frequency=0x00000e10,// 3600,0x0000006a
//.cfg_board_common_setting.lpddr4_x8_mode=0x00000000,// 0,0x00000087
//.cfg_board_common_setting.tdqs2dq=0x00000000,// 0,0x0000008a
//.cfg_board_common_setting.dfe_offset_value=0x00000000,// 0,0x0000008e
//.cfg_board_common_setting.training_offset=0x00000000,// 0,0x0000008f
#define W_LEV ((0 * 128 * CACLU_CLK_DDR4 * 2) / 1000000)
//#define W_LEV ((480 * 128 * CACLU_CLK_DDR4 * 2) / 1000000)
#ifdef CONFIG_PXP_TIMMING
//pxp
#define TDQS2DQ (0 + ((0 * 128 * CACLU_CLK_DDR4 * 2) / 1000000)) //
//#define TDQSCK 64
#define CLK_DELAY 0 // (64)
//#define BOARD_DQS_DELAY 64
#define TDQSCK_ADD_DQS 64 //128 //clk should use 64 steps
#define PHY_TDQS2DQ 0
#endif
#ifdef CONFIG_RTL_TIMMING
//rtl
#define TDQS2DQ ((0 * 128 * CACLU_CLK_DDR4) / 1000000) //
//#define TDQSCK 128 //
//#define BOARD_DQS_DELAY 64+32
#define TDQSCK_ADD_DQS ((0 * 128 * CACLU_CLK_DDR4) / 1000000) //clk should use 64 steps
#define CLK_DELAY (0)
#define PHY_TDQS2DQ ((200 * 128 * CACLU_CLK_DDR4) / 1000000)
#endif
#ifdef CONFIG_BOARD_TIMMING //skt lp4 board
#define TDQS2DQ ((0 * 128 * CACLU_CLK_DDR4) / 1000000)
//#define BOARD_DQS_DELAY 64+32
#define TDQSCK_ADD_DQS ((0 * 128 * CACLU_CLK_DDR4) / 1000000) //clk should use 64 steps
#define CLK_DELAY (0)
#define PHY_TDQS2DQ ((0 * 128 * CACLU_CLK_DDR4) / 1000000)
#endif
.cfg_board_SI_setting_ps.clk_drv_ohm = 40,
.cfg_board_SI_setting_ps.cs_drv_ohm = 40,
.cfg_board_SI_setting_ps.ac_drv_ohm = 40,
.cfg_board_SI_setting_ps.soc_data_drv_ohm_p = 40,
.cfg_board_SI_setting_ps.soc_data_drv_ohm_n = 40,
.cfg_board_SI_setting_ps.soc_data_odt_ohm_p = 60,
.cfg_board_SI_setting_ps.soc_data_odt_ohm_n = 0,
.cfg_board_SI_setting_ps.dram_data_drv_ohm = 40,
.cfg_board_SI_setting_ps.dram_data_odt_ohm = 40,
.cfg_board_SI_setting_ps.dram_data_wr_odt_ohm = 0,
.cfg_board_SI_setting_ps.dram_ac_odt_ohm = 120,
.cfg_board_SI_setting_ps.dram_drv_pull_up_cal_ohm =
DDR_DRAM_LPDDR4_ODT_40_OHM,
.cfg_board_SI_setting_ps.lpddr4_dram_vout_range =
DDR_DRAM_LPDDR4_OUTPUT_1_3_VDDQ,
//.cfg_ddr_training_delay_ps.dfe_offset = 0,
.cfg_board_common_setting.ac_pinmux = {
5, 1, 19, 27, 3, 9, 7, 13, 10, 0,
11, 18, 12, 4, 20,
16, 6, 14, 8, 15, 2,
24, 25, 28, 29, 23, 22, 26, 17, 21,
},
//.cfg_board_common_setting.ddr_dq_remap= { 3, 0, 2, 1, 4, 6, 5, 7, 14, 12, 13, 15,
.cfg_ddr_training_delay_ps.rx_offset[0] = (0 << 7) | 0x0,
//.cfg_ddr_training_delay_ps.dac_offset[0] = 0,//(1 << 7) | 0x10,
//.cfg_ddr_training_delay_ps.dac_offset[1] = 0,//(0 << 7) | 0x10,
//.cfg_ddr_training_delay_ps.dac_offset[0] = (1 << 7) | 0x5,
//.cfg_ddr_training_delay_ps.dac_offset[1] = (0 << 7) | 0x5,
#define ac_offset (128)
.cfg_ddr_training_delay_ps.ac_trace_delay[0] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[1] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[2] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[3] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[4] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[5] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[6] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[7] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[8] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[9] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[10] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[11] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[12] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[13] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[14] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[15] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[16] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[17] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[18] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[19] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[20] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[21] = 256 + ac_offset,
//cke 256 only 1UI margin
.cfg_ddr_training_delay_ps.ac_trace_delay[22] = 256 + ac_offset, //cke
.cfg_ddr_training_delay_ps.ac_trace_delay[23] = 128 + ac_offset, //clk
.cfg_ddr_training_delay_ps.ac_trace_delay[24] = 128 + ac_offset, //clk
.cfg_ddr_training_delay_ps.ac_trace_delay[25] = 128 + ac_offset + 30, //cs
.cfg_ddr_training_delay_ps.ac_trace_delay[26] = 128 + ac_offset + 30, //cs
.cfg_ddr_training_delay_ps.ac_trace_delay[27] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[28] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.ac_trace_delay[29] = 256 + ac_offset,
.cfg_ddr_training_delay_ps.read_dq_delay_t[0] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[1] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[2] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[3] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[4] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[5] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[6] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[7] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[8] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[9] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[10] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[11] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[12] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[13] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[14] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[15] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[16] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[17] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[18] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[19] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[20] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[21] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[22] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[23] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[24] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[25] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[26] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[27] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[28] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[29] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[30] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[31] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[32] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[33] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[34] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[35] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[36] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[37] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[38] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[39] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[40] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[41] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[42] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[43] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[44] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[45] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[46] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[47] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[48] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[49] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[50] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[51] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[52] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[53] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[54] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[55] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[56] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[57] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[58] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[59] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[60] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[61] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[62] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[63] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[64] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[65] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[66] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[67] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[68] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[69] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[70] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[71] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[0] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[1] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[2] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[3] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[4] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[5] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[6] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[7] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[8] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[9] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[10] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[11] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[12] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[13] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[14] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[15] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[16] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[17] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[18] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[19] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[20] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[21] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[22] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[23] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[24] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[25] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[26] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[27] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[28] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[29] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[30] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[31] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[32] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[33] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[34] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[35] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[36] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[37] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[38] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[39] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[40] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[41] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[42] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[43] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[44] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[45] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[46] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[47] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[48] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[49] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[50] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[51] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[52] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[53] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[54] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[55] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[56] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[57] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[58] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[59] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[60] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[61] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[62] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[63] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[64] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[65] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[66] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[67] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[68] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[69] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[70] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[71] = 64,
.cfg_ddr_training_delay_ps.write_dqs_delay[0] = 128 + ac_offset + W_LEV,
.cfg_ddr_training_delay_ps.write_dqs_delay[1] = 128 + ac_offset + W_LEV,
.cfg_ddr_training_delay_ps.write_dqs_delay[2] = 128 + ac_offset + W_LEV,
.cfg_ddr_training_delay_ps.write_dqs_delay[3] = 128 + ac_offset + W_LEV,
.cfg_ddr_training_delay_ps.write_dqs_delay[4] = 128 + ac_offset + W_LEV,
.cfg_ddr_training_delay_ps.write_dqs_delay[5] = 128 + ac_offset + W_LEV,
.cfg_ddr_training_delay_ps.write_dqs_delay[6] = 128 + ac_offset + W_LEV,
.cfg_ddr_training_delay_ps.write_dqs_delay[7] = 128 + ac_offset + W_LEV,
.cfg_ddr_training_delay_ps.write_wck_delay[0] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[1] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[2] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[3] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[4] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[5] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[6] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[7] = 0x00000200,
.cfg_ddr_training_delay_ps.wdq_delay[0] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[1] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[2] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[3] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[4] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[5] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[6] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[7] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[8] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[9] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[10] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[11] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[12] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[13] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[14] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[15] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[16] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[17] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[18] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[19] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[20] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[21] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[22] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[23] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[24] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[25] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[26] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[27] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[28] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[29] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[30] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[31] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[32] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[33] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[34] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[35] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[36] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[37] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[38] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[39] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[40] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[41] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[42] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[43] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[44] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[45] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[46] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[47] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[48] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[49] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[50] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[51] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[52] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[53] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[54] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[55] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[56] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[57] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[58] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[59] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[60] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[61] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[62] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[63] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[64] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[65] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[66] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[67] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[68] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[69] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[70] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[71] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[0] = ac_offset,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[1] = ac_offset,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[2] = ac_offset,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[3] = ac_offset,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[4] = ac_offset,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[5] = ac_offset,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[6] = ac_offset,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[7] = ac_offset,
.cfg_ddr_training_delay_ps.read_dqs_delay[0] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[1] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[2] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[3] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[4] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[5] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[6] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[7] = 128,
.cfg_ddr_training_delay_ps.soc_bit_vref0[0] = 0x0000000,
.cfg_ddr_training_delay_ps.soc_bit_vref0[1] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[2] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[3] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[4] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[5] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[6] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[7] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[8] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[9] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[10] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[11] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[12] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[13] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[14] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[15] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[16] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[17] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[18] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[19] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[20] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[21] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[22] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[23] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[24] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[25] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[26] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[27] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[28] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[29] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[30] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[31] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[32] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[33] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[34] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[35] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[0] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[1] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[2] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[3] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[4] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[5] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[6] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[7] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[8] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[9] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[10] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[11] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[12] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[13] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[14] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[15] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[16] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[17] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[18] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[19] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[20] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[21] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[22] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[23] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[24] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[25] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[26] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[27] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[28] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[29] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[30] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[31] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[32] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[33] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[34] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[35] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref2[0] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[1] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[2] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[3] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[4] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[5] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[6] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[7] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[8] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[9] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[10] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[11] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[12] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[13] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[14] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[15] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[16] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[17] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[18] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[19] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[20] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[21] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[22] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[23] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[24] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[25] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[26] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[27] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[28] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[29] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[30] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[31] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[32] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[33] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[34] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[35] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[0] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[1] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[2] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[3] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[4] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[5] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[6] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[7] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[8] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[9] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[10] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[11] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[12] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[13] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[14] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[15] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[16] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[17] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[18] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[19] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[20] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[21] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[22] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[23] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[24] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[25] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[26] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[27] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[28] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[29] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[30] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[31] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[32] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[33] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[34] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[35] = 0x00000030,
.cfg_ddr_training_delay_ps.dram_vref[0] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[1] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[2] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[3] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[4] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[5] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[6] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[7] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[8] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[9] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[10] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[11] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[12] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[13] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[14] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[15] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[16] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[17] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[18] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[19] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[20] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[21] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[22] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[23] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[24] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[25] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[26] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[27] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[28] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[29] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[30] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[31] = 0x00000000,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dq_tx[0] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[1] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[2] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[3] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[4] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[5] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[6] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[7] = 0x00000002,
.cfg_ddr_training_delay_ps.dfi_mrl[0] = 0x00000004,
.cfg_ddr_training_delay_ps.dfi_mrl[1] = 0x00000004,
.cfg_ddr_training_delay_ps.dfi_mrl[2] = 0x00000004,
.cfg_ddr_training_delay_ps.dfi_mrl[3] = 0x00000004,
.cfg_ddr_training_delay_ps.dfi_hwtmrl = 0x00000004,
.cfg_ddr_training_delay_ps.csr_hwtctrl = 0x00000004,
.cfg_ddr_training_delay_ps.pptdqscnttg0[0] = 0x00000026,
.cfg_ddr_training_delay_ps.pptdqscnttg0[1] = 0x00000026,
.cfg_ddr_training_delay_ps.pptdqscnttg0[2] = 0x00000026,
.cfg_ddr_training_delay_ps.pptdqscnttg0[3] = 0x00000026,
.cfg_ddr_training_delay_ps.pptdqscnttg1[0] = 0x00000000,
.cfg_ddr_training_delay_ps.pptdqscnttg1[1] = 0x00000000,
.cfg_ddr_training_delay_ps.pptdqscnttg1[2] = 0x00000000,
.cfg_ddr_training_delay_ps.pptdqscnttg1[3] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg0[0] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg0[1] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg0[2] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg0[3] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg1[0] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg1[1] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg1[2] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg1[3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][0] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][0] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][0] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][0] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][1] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][1] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][1] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][1] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][2] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][2] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][2] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][2] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][4] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][4] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][4] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][4] = 0x00000000,
},
{
.cfg_board_common_setting.timming_magic = 0,
.cfg_board_common_setting.timming_max_valid_configs = MAX_VALID_CONFIGS,
//sizeof(__ddr_setting) / sizeof(ddr_set_ps0_only_t),
.cfg_board_common_setting.timming_struct_version = 0,
.cfg_board_common_setting.timming_struct_org_size = sizeof(ddr_set_ps0_only_t),
.cfg_board_common_setting.timming_struct_real_size = 0,
.cfg_board_common_setting.fast_boot = {
0, 0, 0, 0
},
.cfg_board_common_setting.ddr_func = 0,
.cfg_board_common_setting.board_id = CONFIG_BOARD_ID_MASK,
.cfg_board_common_setting.DramType = CONFIG_DDR_TYPE_DDR4,
.cfg_board_common_setting.enable_lpddr4x_mode = 0,
.cfg_board_common_setting.dram_rank_config = CONFIG_DDR0_32BIT_RANK0_CH0,
//.cfg_board_common_setting.dram_cs0_base_add = 0,
//.cfg_board_common_setting.dram_cs1_base_add = 0,
.cfg_board_common_setting.dram_ch0_size_MB =
(DRAM_SIZE_ID_256MBX2 << CONFIG_CS0_BYTE_01_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX2 << CONFIG_CS0_BYTE_23_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_01_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_23_SIZE_256_ID_OFFSET),
.cfg_board_common_setting.dram_ch1_size_MB =
(DRAM_SIZE_ID_256MBX2 << CONFIG_CS0_BYTE_01_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX2 << CONFIG_CS0_BYTE_23_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_01_SIZE_256_ID_OFFSET) +
(DRAM_SIZE_ID_256MBX0 << CONFIG_CS1_BYTE_23_SIZE_256_ID_OFFSET),
.cfg_board_common_setting.DisabledDbyte[0] = 0xf0,
//bit 0 -3 ch0 cs0 ,bit 4-7 ch0 cs1,
.cfg_board_common_setting.DisabledDbyte[1] = 0xf0,
//bit 0 -3 ch1 cs0 ,bit 4-7 ch1
.cfg_board_common_setting.dram_x4x8x16_mode = CONFIG_DRAM_MODE_X16,
.cfg_board_common_setting.Is2Ttiming = CONFIG_USE_DDR_2T_MODE,
.cfg_board_common_setting.log_level = 4,
//4,//LOG_LEVEL_BASIC,
.cfg_board_common_setting.dbi_enable = DDR_WRITE_READ_DBI_DISABLE,
.cfg_board_common_setting.pll_ssc_mode =
(1 << 20) | (1 << 8) | (2 << 4) | 0,
//center_ssc_1000ppm,//SSC_DISABLE,(1 << 20) | (0 << 8) | (2 << 4) | 0,
.cfg_board_common_setting.org_tdqs2dq = 0,
.cfg_board_common_setting.reserve1_test = {
0
},
.cfg_board_common_setting.ddr_dmc_remap = DDR_DMC_REMAP_DDR4_32BIT,
//DDR_DMC_REMAP_DDR4_32BIT,
//DDR_DMC_REMAP_DDR4_32BIT,
// .cfg_board_common_setting.ac_pinmux = {
//2, 3, 1, 0, 5, 4, 0, 0, 0, 0, 1, 3, 5, 2, 4, 0 },
.cfg_board_common_setting.ddr_dqs_swap = 0,
// .cfg_board_common_setting.ddr_dq_remap = { 3,
// 2, 6, 5, 7, 4, 0, 1, 10, 8, 14, 13, 15,
//12, 9, 11, 23, 21, 17, 18, 16, 19, 20, 22, 31, 28, 24, 25, 27, 26, 30, 29 },
.cfg_board_common_setting.ddr_vddee_setting = {
0
},
.cfg_board_SI_setting_ps.DRAMFreq = CACLU_CLK_DDR4,
// .cfg_ddr_training_delay_ps.DRAMFreq = 600,
// 2112,//1176,cfg_ddr_training_delay_ps
//.cfg_ddr_training_delay_ps.PllBypassEn = 0,
.cfg_board_SI_setting_ps.training_SequenceCtrl = 0,
.cfg_board_SI_setting_ps.dfi_odt_config = DDR_DRAM_ODT_W_CS0_ODT0,
.cfg_board_SI_setting_ps.clk_drv_ohm = DDR_SOC_AC_DRV_40_OHM,
.cfg_board_SI_setting_ps.cs_drv_ohm = DDR_SOC_AC_DRV_40_OHM,
.cfg_board_SI_setting_ps.ac_drv_ohm = DDR_SOC_AC_DRV_40_OHM,
.cfg_board_SI_setting_ps.soc_data_drv_ohm_p = DDR_SOC_DATA_DRV_ODT_40_OHM,
.cfg_board_SI_setting_ps.soc_data_drv_ohm_n = DDR_SOC_DATA_DRV_ODT_40_OHM,
.cfg_board_SI_setting_ps.soc_data_odt_ohm_p = DDR_SOC_DATA_DRV_ODT_60_OHM,
.cfg_board_SI_setting_ps.soc_data_odt_ohm_n = DDR_SOC_DATA_DRV_ODT_0_OHM,
.cfg_board_SI_setting_ps.dram_data_drv_ohm = DDR_DRAM_LPDDR4_DRV_40_OHM,
.cfg_board_SI_setting_ps.dram_data_odt_ohm = DDR_DRAM_LPDDR4_ODT_40_OHM,
.cfg_board_SI_setting_ps.dram_data_wr_odt_ohm = DDR_DRAM_DDR_WR_ODT_0_OHM,
.cfg_board_SI_setting_ps.dram_ac_odt_ohm = 120, //240,
.cfg_board_SI_setting_ps.dram_drv_pull_up_cal_ohm =
DDR_DRAM_LPDDR4_ODT_40_OHM,
.cfg_board_SI_setting_ps.lpddr4_dram_vout_range =
DDR_DRAM_LPDDR4_OUTPUT_1_3_VDDQ,
//.cfg_ddr_training_delay_ps.dfe_offset = 0,
.cfg_board_SI_setting_ps.vref_ac_permil = 0,
.cfg_board_SI_setting_ps.vref_soc_data_permil = 0,
.cfg_board_SI_setting_ps.vref_dram_data_permil = 0,
.cfg_board_SI_setting_ps.max_core_timmming_frequency = 0,
//.cfg_ddr_training_delay_ps.training_phase_parameter = {0},
//.cfg_ddr_training_delay_ps.ac_trace_delay_org = {
// 128, 128, 128 + 40, 128, 128, 128, 128, 128,
// 384, 384, 384, 384, 384, 384, 384, 384,
// 384, 384, 384, 384, 384, 384, 384, 384,
// 384, 384, 384, 384, 384, 384, 384, 384,
// 384, 384, 384, 384,
//},
//total 36
.cfg_ddr_training_delay_ps.ac_trace_delay = {
32 + 0, 32 + 0, 32 + 0, 32 + 0,
32, 32 + 0, 32 + 0, 32 + 0,
32 + 0, 32 + 0, 32 + 0, 32 + 0,
32 + 0, 32 + 0, 32, 32 + 0,
32 + 0, 32 + 0, 32 + 0, 32 + 0,
32 + 0, 32 + 0, 32, 32 + 0
},
// 1 //real chip stk lp4
.cfg_board_common_setting.dbi_enable = 0x00000000,
.cfg_board_common_setting.ddr_rfc_type = 0x0000000d,
.cfg_board_common_setting.pll_ssc_mode = 0x00000000,
//.cfg_board_common_setting.max_core_timmming_frequency=0x00000e10,// 3600,0x0000006a
//.cfg_board_common_setting.lpddr4_x8_mode=0x00000000,// 0,0x00000087
//.cfg_board_common_setting.tdqs2dq=0x00000000,// 0,0x0000008a
//.cfg_board_common_setting.dfe_offset_value=0x00000000,// 0,0x0000008e
//.cfg_board_common_setting.training_offset=0x00000000,// 0,0x0000008f
#define W_LEV ((0 * 128 * CACLU_CLK_DDR4 * 2) / 1000000)///DDR4
//#define W_LEV ((480 * 128 * CACLU_CLK_DDR4 * 2) / 1000000)
#ifdef CONFIG_PXP_TIMMING
//pxp
#define TDQS2DQ (0 + ((0 * 128 * CACLU_CLK_DDR4 * 2) / 1000000)) //
//#define TDQSCK 64
#define CLK_DELAY 0 // (64)
//#define BOARD_DQS_DELAY 64
#define TDQSCK_ADD_DQS 64 //128 //clk should use 64 steps
#define PHY_TDQS2DQ 0
#endif
#ifdef CONFIG_RTL_TIMMING
//rtl
#define TDQS2DQ ((0 * 128 * CACLU_CLK_DDR4) / 1000000) //
//#define TDQSCK 128 //
//#define BOARD_DQS_DELAY 64+32
#define TDQSCK_ADD_DQS ((0 * 128 * CACLU_CLK_DDR4) / 1000000) //clk should use 64 steps
#define CLK_DELAY (0)
#define PHY_TDQS2DQ ((200 * 128 * CACLU_CLK_DDR4) / 1000000)
#endif
#ifdef CONFIG_BOARD_TIMMING //skt lp4 board
#define TDQS2DQ ((0 * 128 * CACLU_CLK_DDR4) / 1000000)
//#define BOARD_DQS_DELAY 64+32
#define TDQSCK_ADD_DQS ((0 * 128 * CACLU_CLK_DDR4) / 1000000) //clk should use 64 steps
#define CLK_DELAY (0)
#define PHY_TDQS2DQ ((0 * 128 * CACLU_CLK_DDR4) / 1000000)
#endif
.cfg_board_SI_setting_ps.clk_drv_ohm = 40,
.cfg_board_SI_setting_ps.cs_drv_ohm = 40,
.cfg_board_SI_setting_ps.ac_drv_ohm = 40,
.cfg_board_SI_setting_ps.soc_data_drv_ohm_p = 40,
.cfg_board_SI_setting_ps.soc_data_drv_ohm_n = 40,
.cfg_board_SI_setting_ps.soc_data_odt_ohm_p = 60,
.cfg_board_SI_setting_ps.soc_data_odt_ohm_n = 0,
.cfg_board_SI_setting_ps.dram_data_drv_ohm = 40,
.cfg_board_SI_setting_ps.dram_data_odt_ohm = 40,
.cfg_board_SI_setting_ps.dram_data_wr_odt_ohm = 0,
.cfg_board_SI_setting_ps.dram_ac_odt_ohm = 120,
.cfg_board_SI_setting_ps.dram_drv_pull_up_cal_ohm =
DDR_DRAM_LPDDR4_ODT_40_OHM,
.cfg_board_SI_setting_ps.lpddr4_dram_vout_range =
DDR_DRAM_LPDDR4_OUTPUT_1_3_VDDQ,
//.cfg_ddr_training_delay_ps.dfe_offset = 0,
.cfg_board_common_setting.ac_pinmux = {
9, 3, 16, 14, 0, 13,
12, 1, 15, 5,
2, 27, 21, 26, 10, 11,
8, 19, 7, 18, 20,
24, 25, 29, 28, 22, 23,
4, 6, 17,
},
//.cfg_board_common_setting.ddr_dq_remap= { 3, 0, 2, 1, 4, 6, 5, 7, 14, 12, 13,
// 15, 10, 9, 8, 11, 23, 21, 17, 18, 16,
// 19, 20, 22, 31, 28, 24, 25, 27, 26, 30, 29 },
.cfg_ddr_training_delay_ps.rx_offset[0] = (0 << 7) | 0x0,
//.cfg_ddr_training_delay_ps.dac_offset[0] = 0,//(1 << 7) | 0x10,
//.cfg_ddr_training_delay_ps.dac_offset[1] = 0,//(0 << 7) | 0x10,
//.cfg_ddr_training_delay_ps.dac_offset[0] = (1 << 7) | 0x5,
//.cfg_ddr_training_delay_ps.dac_offset[1] = (0 << 7) | 0x5,
#define ac_offset (128)
.cfg_ddr_training_delay_ps.ac_trace_delay[0] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[1] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[2] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[3] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[4] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[5] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[6] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[7] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[8] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[9] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[10] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[11] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[12] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[13] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[14] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[15] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[16] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[17] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[18] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[19] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[20] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[21] = ac_offset + 256,
//cke 256 only 1UI margin
.cfg_ddr_training_delay_ps.ac_trace_delay[22] = ac_offset + 256, //cke
.cfg_ddr_training_delay_ps.ac_trace_delay[23] = ac_offset + 128, //clk
.cfg_ddr_training_delay_ps.ac_trace_delay[24] = ac_offset + 128, //clk
.cfg_ddr_training_delay_ps.ac_trace_delay[25] = ac_offset + 128 + 30, //cs
.cfg_ddr_training_delay_ps.ac_trace_delay[26] = ac_offset + 128 + 30, //cs
.cfg_ddr_training_delay_ps.ac_trace_delay[27] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[28] = ac_offset + 256,
.cfg_ddr_training_delay_ps.ac_trace_delay[29] = ac_offset + 256,
.cfg_ddr_training_delay_ps.read_dq_delay_t[0] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[1] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[2] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[3] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[4] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[5] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[6] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[7] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[8] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[9] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[10] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[11] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[12] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[13] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[14] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[15] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[16] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[17] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[18] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[19] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[20] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[21] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[22] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[23] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[24] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[25] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[26] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[27] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[28] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[29] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[30] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[31] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[32] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[33] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[34] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[35] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[36] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[37] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[38] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[39] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[40] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[41] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[42] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[43] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[44] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[45] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[46] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[47] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[48] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[49] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[50] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[51] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[52] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[53] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[54] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[55] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[56] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[57] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[58] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[59] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[60] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[61] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[62] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[63] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[64] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[65] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[66] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[67] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[68] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[69] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[70] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_t[71] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[0] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[1] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[2] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[3] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[4] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[5] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[6] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[7] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[8] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[9] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[10] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[11] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[12] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[13] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[14] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[15] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[16] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[17] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[18] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[19] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[20] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[21] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[22] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[23] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[24] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[25] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[26] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[27] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[28] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[29] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[30] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[31] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[32] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[33] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[34] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[35] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[36] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[37] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[38] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[39] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[40] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[41] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[42] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[43] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[44] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[45] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[46] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[47] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[48] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[49] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[50] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[51] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[52] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[53] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[54] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[55] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[56] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[57] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[58] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[59] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[60] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[61] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[62] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[63] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[64] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[65] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[66] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[67] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[68] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[69] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[70] = 64,
.cfg_ddr_training_delay_ps.read_dq_delay_c[71] = 64,
.cfg_ddr_training_delay_ps.write_dqs_delay[0] = 128 + ac_offset + W_LEV,
.cfg_ddr_training_delay_ps.write_dqs_delay[1] = 128 + ac_offset + W_LEV,
.cfg_ddr_training_delay_ps.write_dqs_delay[2] = 128 + ac_offset + W_LEV,
.cfg_ddr_training_delay_ps.write_dqs_delay[3] = 128 + ac_offset + W_LEV,
.cfg_ddr_training_delay_ps.write_dqs_delay[4] = 128 + ac_offset + W_LEV,
.cfg_ddr_training_delay_ps.write_dqs_delay[5] = 128 + ac_offset + W_LEV,
.cfg_ddr_training_delay_ps.write_dqs_delay[6] = 128 + ac_offset + W_LEV,
.cfg_ddr_training_delay_ps.write_dqs_delay[7] = 128 + ac_offset + W_LEV,
.cfg_ddr_training_delay_ps.write_wck_delay[0] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[1] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[2] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[3] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[4] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[5] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[6] = 0x00000200,
.cfg_ddr_training_delay_ps.write_wck_delay[7] = 0x00000200,
.cfg_ddr_training_delay_ps.wdq_delay[0] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[1] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[2] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[3] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[4] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[5] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[6] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[7] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[8] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[9] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[10] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[11] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[12] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[13] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[14] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[15] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[16] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[17] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[18] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[19] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[20] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[21] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[22] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[23] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[24] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[25] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[26] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[27] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[28] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[29] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[30] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[31] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[32] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[33] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[34] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[35] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[36] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[37] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[38] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[39] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[40] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[41] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[42] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[43] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[44] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[45] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[46] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[47] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[48] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[49] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[50] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[51] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[52] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[53] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[54] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[55] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[56] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[57] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[58] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[59] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[60] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[61] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[62] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[63] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[64] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[65] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[66] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[67] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[68] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[69] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[70] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.wdq_delay[71] = ac_offset + 64 + TDQS2DQ + W_LEV,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[0] = ac_offset,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[1] = ac_offset,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[2] = ac_offset,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[3] = ac_offset,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[4] = ac_offset,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[5] = ac_offset,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[6] = ac_offset,
.cfg_ddr_training_delay_ps.read_dqs_gate_delay[7] = ac_offset,
.cfg_ddr_training_delay_ps.read_dqs_delay[0] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[1] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[2] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[3] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[4] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[5] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[6] = 128,
.cfg_ddr_training_delay_ps.read_dqs_delay[7] = 128,
.cfg_ddr_training_delay_ps.soc_bit_vref0[0] = 0x0000000,
.cfg_ddr_training_delay_ps.soc_bit_vref0[1] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[2] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[3] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[4] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[5] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[6] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[7] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[8] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[9] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[10] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[11] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[12] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[13] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[14] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[15] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[16] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[17] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[18] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[19] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[20] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[21] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[22] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[23] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[24] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[25] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[26] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[27] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[28] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[29] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[30] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[31] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[32] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[33] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[34] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref0[35] = 0x000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[0] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[1] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[2] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[3] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[4] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[5] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[6] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[7] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[8] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[9] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[10] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[11] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[12] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[13] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[14] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[15] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[16] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[17] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[18] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[19] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[20] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[21] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[22] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[23] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[24] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[25] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[26] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[27] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[28] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[29] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[30] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[31] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[32] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[33] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[34] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref1[35] = 0x0000001a,
.cfg_ddr_training_delay_ps.soc_bit_vref2[0] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[1] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[2] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[3] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[4] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[5] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[6] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[7] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[8] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[9] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[10] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[11] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[12] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[13] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[14] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[15] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[16] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[17] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[18] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[19] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[20] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[21] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[22] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[23] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[24] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[25] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[26] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[27] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[28] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[29] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[30] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[31] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[32] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[33] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[34] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref2[35] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[0] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[1] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[2] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[3] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[4] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[5] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[6] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[7] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[8] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[9] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[10] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[11] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[12] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[13] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[14] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[15] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[16] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[17] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[18] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[19] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[20] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[21] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[22] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[23] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[24] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[25] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[26] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[27] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[28] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[29] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[30] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[31] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[32] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[33] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[34] = 0x00000030,
.cfg_ddr_training_delay_ps.soc_bit_vref3[35] = 0x00000030,
.cfg_ddr_training_delay_ps.dram_vref[0] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[1] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[2] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[3] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[4] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[5] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[6] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[7] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[8] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[9] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[10] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[11] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[12] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[13] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[14] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[15] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[16] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[17] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[18] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[19] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[20] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[21] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[22] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[23] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[24] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[25] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[26] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[27] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[28] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[29] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[30] = 0x00000000,
.cfg_ddr_training_delay_ps.dram_vref[31] = 0x00000000,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_t[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_t[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_t[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_tx_c[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_wck_rx_c[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[0] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[1] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[2] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[3] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[4] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[5] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[6] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dqs_tx_c[7] = 0x00000266,
.cfg_ddr_training_delay_ps.dca_dq_tx[0] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[1] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[2] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[3] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[4] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[5] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[6] = 0x00000002,
.cfg_ddr_training_delay_ps.dca_dq_tx[7] = 0x00000002,
.cfg_ddr_training_delay_ps.dfi_mrl[0] = 0x00000004,
.cfg_ddr_training_delay_ps.dfi_mrl[1] = 0x00000004,
.cfg_ddr_training_delay_ps.dfi_mrl[2] = 0x00000004,
.cfg_ddr_training_delay_ps.dfi_mrl[3] = 0x00000004,
.cfg_ddr_training_delay_ps.dfi_hwtmrl = 0x00000004,
.cfg_ddr_training_delay_ps.csr_hwtctrl = 0x00000004,
.cfg_ddr_training_delay_ps.pptdqscnttg0[0] = 0x00000026,
.cfg_ddr_training_delay_ps.pptdqscnttg0[1] = 0x00000026,
.cfg_ddr_training_delay_ps.pptdqscnttg0[2] = 0x00000026,
.cfg_ddr_training_delay_ps.pptdqscnttg0[3] = 0x00000026,
.cfg_ddr_training_delay_ps.pptdqscnttg1[0] = 0x00000000,
.cfg_ddr_training_delay_ps.pptdqscnttg1[1] = 0x00000000,
.cfg_ddr_training_delay_ps.pptdqscnttg1[2] = 0x00000000,
.cfg_ddr_training_delay_ps.pptdqscnttg1[3] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg0[0] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg0[1] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg0[2] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg0[3] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg1[0] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg1[1] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg1[2] = 0x00000000,
.cfg_ddr_training_delay_ps.PptWck2DqoCntTg1[3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][0] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][0] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][0] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][0] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][1] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][1] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][1] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][1] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][2] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][2] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][2] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][2] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][3] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[0][4] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[1][4] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[2][4] = 0x00000000,
.cfg_ddr_training_delay_ps.RxReplicaPhase[3][4] = 0x00000000,
},
#endif
};
board_clk_set_t __board_clk_setting
__attribute__ ((section(".clk_param"))) = {
/* clock settings for bl2 */
.cpu_clk = CPU_CLK / 24 * 24,
#ifdef CONFIG_PXP_EMULATOR
.pxp = 1,
#else
.pxp = 0,
#endif
.low_console_baud = CONFIG_LOW_CONSOLE_BAUD,
};
#define VDDEE_VAL AML_VDDEE_INIT_VOLTAGE
#define VCCK_A_VAL AML_VDD_CPUA_INIT_VOLTAGE
#define VCCK_B_VAL AML_VDD_CPUB_INIT_VOLTAGE
#define VDD_GPU_VAL AML_VDDGPU_INIT_VOLTAGE
/* VDDEE_VAL_REG AX201 board by designed value */
#if (VDDEE_VAL == 720)
#define VDDEE_VAL_REG 0x120000
#elif (VDDEE_VAL == 730)
#define VDDEE_VAL_REG 0x110001
#elif (VDDEE_VAL == 740)
#define VDDEE_VAL_REG 0x100002
#elif (VDDEE_VAL == 750)
#define VDDEE_VAL_REG 0xf0003
#elif (VDDEE_VAL == 760)
#define VDDEE_VAL_REG 0xe0004
#elif (VDDEE_VAL == 770)
#define VDDEE_VAL_REG 0xd0005
#elif (VDDEE_VAL == 780)
#define VDDEE_VAL_REG 0xc0006
#elif (VDDEE_VAL == 790)
#define VDDEE_VAL_REG 0xb0007
#elif (VDDEE_VAL == 800)
#define VDDEE_VAL_REG 0xa0008
#elif (VDDEE_VAL == 810)
#define VDDEE_VAL_REG 0x90009
#elif (VDDEE_VAL == 820)
#define VDDEE_VAL_REG 0x8000a
#elif (VDDEE_VAL == 830)
#define VDDEE_VAL_REG 0x7000b
#elif (VDDEE_VAL == 840)
#define VDDEE_VAL_REG 0x6000c
#elif (VDDEE_VAL == 850)
#define VDDEE_VAL_REG 0x5000d
#elif (VDDEE_VAL == 860)
#define VDDEE_VAL_REG 0x4000e
#elif (VDDEE_VAL == 870)
#define VDDEE_VAL_REG 0x3000f
#elif (VDDEE_VAL == 880)
#define VDDEE_VAL_REG 0x20010
#elif (VDDEE_VAL == 890)
#define VDDEE_VAL_REG 0x10011
#elif (VDDEE_VAL == 900)
#define VDDEE_VAL_REG 0x12
#else
#error "VDDEE val out of range\n"
#endif
/* VCCK_D_VAL(A55) PWM table */
#if (VCCK_A_VAL == 1039)
#define VCCK_A_VAL_REG 0x00000022
#elif (VCCK_A_VAL == 1029)
#define VCCK_A_VAL_REG 0x00010021
#elif (VCCK_A_VAL == 1019)
#define VCCK_A_VAL_REG 0x00020020
#elif (VCCK_A_VAL == 1009)
#define VCCK_A_VAL_REG 0x0003001f
#elif (VCCK_A_VAL == 999)
#define VCCK_A_VAL_REG 0x0004001e
#elif (VCCK_A_VAL == 989)
#define VCCK_A_VAL_REG 0x0005001d
#elif (VCCK_A_VAL == 979)
#define VCCK_A_VAL_REG 0x0006001c
#elif (VCCK_A_VAL == 969)
#define VCCK_A_VAL_REG 0x0007001b
#elif (VCCK_A_VAL == 959)
#define VCCK_A_VAL_REG 0x0008001a
#elif (VCCK_A_VAL == 949)
#define VCCK_A_VAL_REG 0x00090019
#elif (VCCK_A_VAL == 939)
#define VCCK_A_VAL_REG 0x000a0018
#elif (VCCK_A_VAL == 929)
#define VCCK_A_VAL_REG 0x000b0017
#elif (VCCK_A_VAL == 919)
#define VCCK_A_VAL_REG 0x000c0016
#elif (VCCK_A_VAL == 909)
#define VCCK_A_VAL_REG 0x000d0015
#elif (VCCK_A_VAL == 899)
#define VCCK_A_VAL_REG 0x000e0014
#elif (VCCK_A_VAL == 889)
#define VCCK_A_VAL_REG 0x000f0013
#elif (VCCK_A_VAL == 879)
#define VCCK_A_VAL_REG 0x00100012
#elif (VCCK_A_VAL == 869)
#define VCCK_A_VAL_REG 0x00110011
#elif (VCCK_A_VAL == 859)
#define VCCK_A_VAL_REG 0x00120010
#elif (VCCK_A_VAL == 849)
#define VCCK_A_VAL_REG 0x0013000f
#elif (VCCK_A_VAL == 839)
#define VCCK_A_VAL_REG 0x0014000e
#elif (VCCK_A_VAL == 829)
#define VCCK_A_VAL_REG 0x0015000d
#elif (VCCK_A_VAL == 819)
#define VCCK_A_VAL_REG 0x0016000c
#elif (VCCK_A_VAL == 809)
#define VCCK_A_VAL_REG 0x0017000b
#elif (VCCK_A_VAL == 799)
#define VCCK_A_VAL_REG 0x0018000a
#elif (VCCK_A_VAL == 789)
#define VCCK_A_VAL_REG 0x00190009
#elif (VCCK_A_VAL == 779)
#define VCCK_A_VAL_REG 0x001a0008
#elif (VCCK_A_VAL == 769)
#define VCCK_A_VAL_REG 0x001b0007
#elif (VCCK_A_VAL == 759)
#define VCCK_A_VAL_REG 0x001c0006
#elif (VCCK_A_VAL == 749)
#define VCCK_A_VAL_REG 0x001d0005
#elif (VCCK_A_VAL == 739)
#define VCCK_A_VAL_REG 0x001e0004
#elif (VCCK_A_VAL == 729)
#define VCCK_A_VAL_REG 0x001f0003
#elif (VCCK_A_VAL == 719)
#define VCCK_A_VAL_REG 0x00200002
#elif (VCCK_A_VAL == 709)
#define VCCK_A_VAL_REG 0x00210001
#elif (VCCK_A_VAL == 699)
#define VCCK_A_VAL_REG 0x00220000
#else
#error "VCCK_A val out of range\n"
#endif
/* VCCK_A_VAL(A76) PWM table */
#if (VCCK_B_VAL == 1039)
#define VCCK_B_VAL_REG 0x00000022
#elif (VCCK_B_VAL == 1029)
#define VCCK_B_VAL_REG 0x00010021
#elif (VCCK_B_VAL == 1019)
#define VCCK_B_VAL_REG 0x00020020
#elif (VCCK_B_VAL == 1009)
#define VCCK_B_VAL_REG 0x0003001f
#elif (VCCK_B_VAL == 999)
#define VCCK_B_VAL_REG 0x0004001e
#elif (VCCK_B_VAL == 989)
#define VCCK_B_VAL_REG 0x0005001d
#elif (VCCK_B_VAL == 979)
#define VCCK_B_VAL_REG 0x0006001c
#elif (VCCK_B_VAL == 969)
#define VCCK_B_VAL_REG 0x0007001b
#elif (VCCK_B_VAL == 959)
#define VCCK_B_VAL_REG 0x0008001a
#elif (VCCK_B_VAL == 949)
#define VCCK_B_VAL_REG 0x00090019
#elif (VCCK_B_VAL == 939)
#define VCCK_B_VAL_REG 0x000a0018
#elif (VCCK_B_VAL == 929)
#define VCCK_B_VAL_REG 0x000b0017
#elif (VCCK_B_VAL == 919)
#define VCCK_B_VAL_REG 0x000c0016
#elif (VCCK_B_VAL == 909)
#define VCCK_B_VAL_REG 0x000d0015
#elif (VCCK_B_VAL == 899)
#define VCCK_B_VAL_REG 0x000e0014
#elif (VCCK_B_VAL == 889)
#define VCCK_B_VAL_REG 0x000f0013
#elif (VCCK_B_VAL == 879)
#define VCCK_B_VAL_REG 0x00100012
#elif (VCCK_B_VAL == 869)
#define VCCK_B_VAL_REG 0x00110011
#elif (VCCK_B_VAL == 859)
#define VCCK_B_VAL_REG 0x00120010
#elif (VCCK_B_VAL == 849)
#define VCCK_B_VAL_REG 0x0013000f
#elif (VCCK_B_VAL == 839)
#define VCCK_B_VAL_REG 0x0014000e
#elif (VCCK_B_VAL == 829)
#define VCCK_B_VAL_REG 0x0015000d
#elif (VCCK_B_VAL == 819)
#define VCCK_B_VAL_REG 0x0016000c
#elif (VCCK_B_VAL == 809)
#define VCCK_B_VAL_REG 0x0017000b
#elif (VCCK_B_VAL == 799)
#define VCCK_B_VAL_REG 0x0018000a
#elif (VCCK_B_VAL == 789)
#define VCCK_B_VAL_REG 0x00190009
#elif (VCCK_B_VAL == 779)
#define VCCK_B_VAL_REG 0x001a0008
#elif (VCCK_B_VAL == 769)
#define VCCK_B_VAL_REG 0x001b0007
#elif (VCCK_B_VAL == 759)
#define VCCK_B_VAL_REG 0x001c0006
#elif (VCCK_B_VAL == 749)
#define VCCK_B_VAL_REG 0x001d0005
#elif (VCCK_B_VAL == 739)
#define VCCK_B_VAL_REG 0x001e0004
#elif (VCCK_B_VAL == 729)
#define VCCK_B_VAL_REG 0x001f0003
#elif (VCCK_B_VAL == 719)
#define VCCK_B_VAL_REG 0x00200002
#elif (VCCK_B_VAL == 709)
#define VCCK_B_VAL_REG 0x00210001
#elif (VCCK_B_VAL == 699)
#define VCCK_B_VAL_REG 0x00220000
#else
#error "VCCK_B val out of range\n"
#endif
/* VDD_GPU PWM table */
#if (VDD_GPU_VAL == 720)
#define VDD_GPU_VAL_REG 0x120000
#elif (VDD_GPU_VAL == 730)
#define VDD_GPU_VAL_REG 0x110001
#elif (VDD_GPU_VAL == 740)
#define VDD_GPU_VAL_REG 0x100002
#elif (VDD_GPU_VAL == 750)
#define VDD_GPU_VAL_REG 0xf0003
#elif (VDD_GPU_VAL == 760)
#define VDD_GPU_VAL_REG 0xe0004
#elif (VDD_GPU_VAL == 770)
#define VDD_GPU_VAL_REG 0xd0005
#elif (VDD_GPU_VAL == 780)
#define VDD_GPU_VAL_REG 0xc0006
#elif (VDD_GPU_VAL == 790)
#define VDD_GPU_VAL_REG 0xb0007
#elif (VDD_GPU_VAL == 800)
#define VDD_GPU_VAL_REG 0xa0008
#elif (VDD_GPU_VAL == 810)
#define VDD_GPU_VAL_REG 0x90009
#elif (VDD_GPU_VAL == 820)
#define VDD_GPU_VAL_REG 0x8000a
#elif (VDD_GPU_VAL == 830)
#define VDD_GPU_VAL_REG 0x7000b
#elif (VDD_GPU_VAL == 840)
#define VDD_GPU_VAL_REG 0x6000c
#elif (VDD_GPU_VAL == 850)
#define VDD_GPU_VAL_REG 0x5000d
#elif (VDD_GPU_VAL == 860)
#define VDD_GPU_VAL_REG 0x4000e
#elif (VDD_GPU_VAL == 870)
#define VDD_GPU_VAL_REG 0x3000f
#elif (VDD_GPU_VAL == 880)
#define VDD_GPU_VAL_REG 0x20010
#elif (VDD_GPU_VAL == 890)
#define VDD_GPU_VAL_REG 0x10011
#elif (VDD_GPU_VAL == 900)
#define VDD_GPU_VAL_REG 0x12
#else
#error "VDD_GPU val out of range\n"
#endif
bl2_reg_t __bl2_reg[] __attribute__ ((section(".generic_param"))) = {
//hxbao, need fine tune
{ 0, 0, 0xffffffff, 0, 0, 0 },
};
/* gpio/pinmux/pwm init */
register_ops_t __bl2_ops_reg[MAX_REG_OPS_ENTRIES]
__attribute__ ((section(".misc_param"))) = {
/* demo, user defined override register */
/*config vddee vddcpu vddgpu vddnpu pwm
*
*-pwm_a, pwm_b pwm_c, pwm_d and pwm_e
*
*For regulator, pls config _VOLTAGE_VAL_
*/
{ PWMAB_PWM_B, VDDEE_VAL_REG, 0xffffffff, 0, 0, 0},
{ PWMAB_PWM_A, VCCK_B_VAL_REG, 0xffffffff, 0, 0, 0 },
{ PWMCD_PWM_A, VDD_GPU_VAL_REG, 0xffffffff, 0, 0, 0 },
{ PWMCD_PWM_B, VCCK_A_VAL_REG, 0xffffffff, 0, 0, 0 },
{ PWMAB_MISC_REG_AB, (0x3 << 0) | (0x1 << 15) | (0x1 << 23),
(0x3 << 0) | (0x1 << 15) | (0x1 << 23), 0, 0, 0 },
{ PWMCD_MISC_REG_AB, (0x3 << 0) | (0x1 << 15) | (0x1 << 23),
(0x3 << 0) | (0x1 << 15) | (0x1 << 23), 0, 0, 0 },
{ PWMEF_MISC_REG_AB, (0x1 << 0) | (0x1 << 15),
(0x1 << 0) | (0x1 << 15), 0, 0, 0 },
/* set pwm a and pwm b clock rate to 24M, enable them */
{ CLKCTRL_PWM_CLK_AB_CTRL, ((0x1 << 8) | (0x1 << 24)), 0xffffffff, 0, 0, 0 },
/* set pwm c and pwm d clock rate to 24M, enable them */
{ CLKCTRL_PWM_CLK_CD_CTRL, ((0x1 << 8) | (0x1 << 24)), 0xffffffff, 0, 0, 0 },
/* set pwm e clock rate to 24M, enable them */
{ CLKCTRL_PWM_CLK_EF_CTRL, (0x1 << 8), 0xffffffff, 0, 0, 0 },
/* set GPIOE_0 GPIOE_1 GPIOE_2 GPIOE_3 drive strength to 3 */
{ PADCTRL_GPIOE_DS, 0xff, 0xff, 0, 0, 0 },
/* set GPIOE_4 drive strength to 3 */
{ PADCTRL_GPIOE_DS, (0x3 << 8), (0x3 << 8), 0, 0, 0 },
/* set GPIOE_0 GPIOE_1 GPIOE_2 GPIOE_3 mux to pwmb pwmd pwma pwmc */
{ PADCTRL_PIN_MUX_REG7, (0x1 << 0) | (0x1 << 4) | (0x1 << 8) | (0x1 << 12),
(0xffff << 0), 0, 0, 0 },
/* set GPIOE_4 mux to pwme */
{ PADCTRL_PIN_MUX_REG7, (0x1 << 16), (0xf << 16), 0, 0, 0 },
/* enable vddcpu dc-dc, set TEST_N to high */
{ PADCTRL_TESTN_O, (0x1 << 0), (0x1 << 0), 0, 0, 0 },
{ PADCTRL_TESTN_OEN, (0x0 << 0), (0x1 << 0), 0, 0, 0 },
};
#define DEV_FIP_SIZE 0x300000
#define DDR_FIP_SIZE 0x40000
/* for all the storage parameter */
storage_parameter_t __store_para __attribute__ ((section(".store_param"))) = {
.common ={
.version = 0x01,
.device_fip_container_size = DEV_FIP_SIZE,
.device_fip_container_copies = 4,
.ddr_fip_container_size = DDR_FIP_SIZE,
},
.nand ={
.version = 0x01,
.bbt_pages = 0x1,
.bbt_start_block = 20,
.discrete_mode = 1,
.setup_data.nand_setup_data = (2 << 20) | \
(0 << 19) | \
(1 << 17) | \
(1 << 14) | \
(0 << 13) | \
(64 << 6) | \
(4 << 0),
.reserved_area_blk_cnt = 48,
.page_per_block = 64,
.use_param_page_list = 0,
},
};