1*55a95caaSYouMin Chen#!/usr/bin/env python3 2*55a95caaSYouMin Chen# -*-coding=utf-8-*- 3*55a95caaSYouMin Chen# 4*55a95caaSYouMin Chen# Copyright (C) 2024, Rockchip Electronics Co., Ltd. 5*55a95caaSYouMin Chen# 6*55a95caaSYouMin Chen 7*55a95caaSYouMin Chenimport os 8*55a95caaSYouMin Chenimport re 9*55a95caaSYouMin Chenimport sys 10*55a95caaSYouMin Chenimport copy 11*55a95caaSYouMin Chenimport getopt 12*55a95caaSYouMin Chenimport platform 13*55a95caaSYouMin Chenimport struct 14*55a95caaSYouMin Chenfrom datetime import datetime 15*55a95caaSYouMin Chen 16*55a95caaSYouMin Chenversion_max = 5 17*55a95caaSYouMin Chenupdate_key_list = [] 18*55a95caaSYouMin Chen 19*55a95caaSYouMin Chenchip_info = 'null' 20*55a95caaSYouMin Chenchip_list = ['px30', 'px30s', 'px3se', 'px5', 'rk1808', 'rk2118', 'rk312x', 'rk3126', 'rk3128', 21*55a95caaSYouMin Chen 'rk3128h', 'rk322x', 'rk3228a', 'rk3228b', 'rk3228h', 'rk322xh', 'rk3229', 'rk3308', 'rk3288', 22*55a95caaSYouMin Chen 'rk3326', 'rk3326s', 'rk3328', 'rk3368', 'rk3399', 'rk3506', 'rk3528', 'rk356x', 'rk3562', 23*55a95caaSYouMin Chen 'rk3566', 'rk3568', 'rk3576', 'rk3588', 'rv1103', 'rv1103b', 'rv1106', 'rv1108', 'rv1109', 24*55a95caaSYouMin Chen 'rv1126'] 25*55a95caaSYouMin Chen 26*55a95caaSYouMin Chenversion_old_list = ['rk322xh', 'rk3328', 'rk3318'] 27*55a95caaSYouMin Chen 28*55a95caaSYouMin Chen# struct rk3528_ca_skew 29*55a95caaSYouMin Chenrk3528_ca_skew = { 30*55a95caaSYouMin Chen 'skew_freq': 0, 31*55a95caaSYouMin Chen 'ca_skew_0': 0, 32*55a95caaSYouMin Chen 'ca_skew_1': 0, 33*55a95caaSYouMin Chen 'ca_skew_2': 0, 34*55a95caaSYouMin Chen 'ca_skew_3': 0, 35*55a95caaSYouMin Chen 'ca_skew_4': 0, 36*55a95caaSYouMin Chen 'ca_skew_5': 0, 37*55a95caaSYouMin Chen 'ca_skew_6': 0, 38*55a95caaSYouMin Chen 'ca_skew_7': 0, 39*55a95caaSYouMin Chen} 40*55a95caaSYouMin Chen 41*55a95caaSYouMin Chen# struct rk3528_skew_info 42*55a95caaSYouMin Chenrk3528_skew_info = { 43*55a95caaSYouMin Chen 'skew_sub_version': 0, 44*55a95caaSYouMin Chen 'ddr3' : rk3528_ca_skew.copy(), 45*55a95caaSYouMin Chen 'ddr4' : rk3528_ca_skew.copy(), 46*55a95caaSYouMin Chen 'lp3' : rk3528_ca_skew.copy(), 47*55a95caaSYouMin Chen} 48*55a95caaSYouMin Chen 49*55a95caaSYouMin Chen# struct index_info, u8 50*55a95caaSYouMin Chenindex_info = { 51*55a95caaSYouMin Chen 'offset' : 0, 52*55a95caaSYouMin Chen 'size' : 0 53*55a95caaSYouMin Chen} 54*55a95caaSYouMin Chen 55*55a95caaSYouMin Chen# struct sdram_head_info_index_v2 56*55a95caaSYouMin Chensdram_head_info_index_v2 = { 57*55a95caaSYouMin Chen 'cpu_gen_index' : index_info.copy(), 58*55a95caaSYouMin Chen 'global_index' : index_info.copy(), 59*55a95caaSYouMin Chen 'ddr2_index' : index_info.copy(), 60*55a95caaSYouMin Chen 'ddr3_index' : index_info.copy(), 61*55a95caaSYouMin Chen 'ddr4_index' : index_info.copy(), 62*55a95caaSYouMin Chen 'ddr5_index' : index_info.copy(), 63*55a95caaSYouMin Chen 'lp2_index' : index_info.copy(), 64*55a95caaSYouMin Chen 'lp3_index' : index_info.copy(), 65*55a95caaSYouMin Chen 'lp4_index' : index_info.copy(), 66*55a95caaSYouMin Chen 'lp5_index' : index_info.copy(), 67*55a95caaSYouMin Chen 'skew_index' : index_info.copy(), 68*55a95caaSYouMin Chen 'dq_map_index' : index_info.copy(), 69*55a95caaSYouMin Chen} 70*55a95caaSYouMin Chen 71*55a95caaSYouMin Chensdram_head_info_index_v2_3 = { 72*55a95caaSYouMin Chen 'lp4x_index' : index_info.copy(), 73*55a95caaSYouMin Chen 'lp4_4x_hash_index' : index_info.copy() 74*55a95caaSYouMin Chen} 75*55a95caaSYouMin Chen 76*55a95caaSYouMin Chensdram_head_info_index_v3_4 = { 77*55a95caaSYouMin Chen 'lp5_hash_index' : index_info.copy(), 78*55a95caaSYouMin Chen 'ddr4_hash_index' : index_info.copy(), 79*55a95caaSYouMin Chen 'lp3_hash_index' : index_info.copy(), 80*55a95caaSYouMin Chen 'ddr3_hash_index' : index_info.copy(), 81*55a95caaSYouMin Chen 'lp2_hash_index' : index_info.copy(), 82*55a95caaSYouMin Chen 'ddr2_hash_index' : index_info.copy(), 83*55a95caaSYouMin Chen 'ddr5_hash_index' : index_info.copy(), 84*55a95caaSYouMin Chen} 85*55a95caaSYouMin Chen 86*55a95caaSYouMin Chen# struct global_info 87*55a95caaSYouMin Chenglobal_info = { 88*55a95caaSYouMin Chen 'uart_info' : 0, 89*55a95caaSYouMin Chen 'sr_pd_info' : 0, 90*55a95caaSYouMin Chen 'ch_info' : 0, 91*55a95caaSYouMin Chen 'info_2t' : 0, 92*55a95caaSYouMin Chen 'reserved_0' : 0, 93*55a95caaSYouMin Chen 'reserved_1' : 0, 94*55a95caaSYouMin Chen 'reserved_2' : 0, 95*55a95caaSYouMin Chen 'reserved_3' : 0, 96*55a95caaSYouMin Chen} 97*55a95caaSYouMin Chen 98*55a95caaSYouMin Chen# struct ddr2_3_4_lp2_3_info 99*55a95caaSYouMin Chenddr2_3_4_lp2_3_info = { 100*55a95caaSYouMin Chen 'ddr_freq0_1' : 0, 101*55a95caaSYouMin Chen 'ddr_freq2_3' : 0, 102*55a95caaSYouMin Chen 'ddr_freq4_5' : 0, 103*55a95caaSYouMin Chen 'drv_when_odten' : 0, 104*55a95caaSYouMin Chen 'drv_when_odtoff' : 0, 105*55a95caaSYouMin Chen 'odt_info' : 0, 106*55a95caaSYouMin Chen 'odten_freq' : 0, 107*55a95caaSYouMin Chen 'sr_when_odten' : 0, 108*55a95caaSYouMin Chen 'sr_when_odtoff' : 0, 109*55a95caaSYouMin Chen} 110*55a95caaSYouMin Chen 111*55a95caaSYouMin Chen# struct ddr2_3_4_lp2_3_info_v5 112*55a95caaSYouMin Chenddr2_3_4_lp2_3_info_v5 = { 113*55a95caaSYouMin Chen 'ddr_freq0_1' : 0, 114*55a95caaSYouMin Chen 'ddr_freq2_3' : 0, 115*55a95caaSYouMin Chen 'ddr_freq4_5' : 0, 116*55a95caaSYouMin Chen 'drv_when_odten' : 0, 117*55a95caaSYouMin Chen 'drv_when_odtoff' : 0, 118*55a95caaSYouMin Chen 'odt_info' : 0, 119*55a95caaSYouMin Chen 'odten_freq' : 0, 120*55a95caaSYouMin Chen 'sr_when_odten' : 0, 121*55a95caaSYouMin Chen 'sr_when_odtoff' : 0, 122*55a95caaSYouMin Chen 'vref_when_odten' : 0, 123*55a95caaSYouMin Chen 'vref_when_odtoff' : 0, 124*55a95caaSYouMin Chen} 125*55a95caaSYouMin Chen 126*55a95caaSYouMin Chen# struct lp4_info 127*55a95caaSYouMin Chenlp4_info = { 128*55a95caaSYouMin Chen 'ddr_freq0_1' : 0, 129*55a95caaSYouMin Chen 'ddr_freq2_3' : 0, 130*55a95caaSYouMin Chen 'ddr_freq4_5' : 0, 131*55a95caaSYouMin Chen 'drv_when_odten' : 0, 132*55a95caaSYouMin Chen 'drv_when_odtoff' : 0, 133*55a95caaSYouMin Chen 'odt_info' : 0, 134*55a95caaSYouMin Chen 'dq_odten_freq' : 0, 135*55a95caaSYouMin Chen 'sr_when_odten' : 0, 136*55a95caaSYouMin Chen 'sr_when_odtoff' : 0, 137*55a95caaSYouMin Chen 'ca_odten_freq' : 0, 138*55a95caaSYouMin Chen 'cs_drv_ca_odt_info' : 0, 139*55a95caaSYouMin Chen 'vref_when_odten' : 0, 140*55a95caaSYouMin Chen 'vref_when_odtoff' : 0, 141*55a95caaSYouMin Chen} 142*55a95caaSYouMin Chen 143*55a95caaSYouMin Chen# struct dq_map_info 144*55a95caaSYouMin Chendq_map_info = { 145*55a95caaSYouMin Chen 'byte_map_0' : 0, 146*55a95caaSYouMin Chen 'byte_map_1' : 0, 147*55a95caaSYouMin Chen 'lp3_dq0_7_map' : 0, 148*55a95caaSYouMin Chen 'lp2_dq0_7_map' : 0, 149*55a95caaSYouMin Chen 'ddr4_dq_map_0' : 0, 150*55a95caaSYouMin Chen 'ddr4_dq_map_1' : 0, 151*55a95caaSYouMin Chen 'ddr4_dq_map_2' : 0, 152*55a95caaSYouMin Chen 'ddr4_dq_map_3' : 0, 153*55a95caaSYouMin Chen} 154*55a95caaSYouMin Chen 155*55a95caaSYouMin Chen# struct hash_info 156*55a95caaSYouMin Chenhash_info = { 157*55a95caaSYouMin Chen 'ch_mask_0' : 0, 158*55a95caaSYouMin Chen 'ch_mask_1' : 0, 159*55a95caaSYouMin Chen 'bank_mask_0' : 0, 160*55a95caaSYouMin Chen 'bank_mask_1' : 0, 161*55a95caaSYouMin Chen 'bank_mask_2' : 0, 162*55a95caaSYouMin Chen 'bank_mask_3' : 0, 163*55a95caaSYouMin Chen 'rank_mask0' : 0, 164*55a95caaSYouMin Chen 'rank_mask1' : 0, 165*55a95caaSYouMin Chen} 166*55a95caaSYouMin Chen 167*55a95caaSYouMin Chen# struct sdram_head_info_v2 168*55a95caaSYouMin Chensdram_head_info_v2 = { 169*55a95caaSYouMin Chen 'global_info' : global_info.copy(), 170*55a95caaSYouMin Chen 'ddr2_info' : ddr2_3_4_lp2_3_info.copy(), 171*55a95caaSYouMin Chen 'ddr3_info' : ddr2_3_4_lp2_3_info.copy(), 172*55a95caaSYouMin Chen 'ddr4_info' : ddr2_3_4_lp2_3_info.copy(), 173*55a95caaSYouMin Chen 'ddr5_info' : ddr2_3_4_lp2_3_info.copy(), 174*55a95caaSYouMin Chen 'lp2_info' : ddr2_3_4_lp2_3_info.copy(), 175*55a95caaSYouMin Chen 'lp3_info' : ddr2_3_4_lp2_3_info.copy(), 176*55a95caaSYouMin Chen 'lp4_info' : lp4_info.copy(), 177*55a95caaSYouMin Chen 'dq_map_info' : dq_map_info.copy(), 178*55a95caaSYouMin Chen 'lp4x_info' : lp4_info.copy(), 179*55a95caaSYouMin Chen 'lp5_info' : lp4_info.copy(), 180*55a95caaSYouMin Chen 'lp4_4x_hash_info' : hash_info.copy(), 181*55a95caaSYouMin Chen 'lp5_hash_info' : hash_info.copy(), 182*55a95caaSYouMin Chen 'ddr4_hash_info' : hash_info.copy(), 183*55a95caaSYouMin Chen 'lp3_hash_info' : hash_info.copy(), 184*55a95caaSYouMin Chen 'ddr3_hash_info' : hash_info.copy(), 185*55a95caaSYouMin Chen 'lp2_hash_info' : hash_info.copy(), 186*55a95caaSYouMin Chen 'ddr2_hash_info' : hash_info.copy(), 187*55a95caaSYouMin Chen 'ddr5_hash_info' : hash_info.copy(), 188*55a95caaSYouMin Chen} 189*55a95caaSYouMin Chen 190*55a95caaSYouMin Chen# struct sdram_head_info_v5 191*55a95caaSYouMin Chensdram_head_info_v5 = { 192*55a95caaSYouMin Chen 'global_info' : global_info.copy(), 193*55a95caaSYouMin Chen 'ddr2_info' : ddr2_3_4_lp2_3_info_v5.copy(), 194*55a95caaSYouMin Chen 'ddr3_info' : ddr2_3_4_lp2_3_info_v5.copy(), 195*55a95caaSYouMin Chen 'ddr4_info' : ddr2_3_4_lp2_3_info_v5.copy(), 196*55a95caaSYouMin Chen 'ddr5_info' : ddr2_3_4_lp2_3_info_v5.copy(), 197*55a95caaSYouMin Chen 'lp2_info' : ddr2_3_4_lp2_3_info_v5.copy(), 198*55a95caaSYouMin Chen 'lp3_info' : ddr2_3_4_lp2_3_info_v5.copy(), 199*55a95caaSYouMin Chen 'lp4_info' : lp4_info.copy(), 200*55a95caaSYouMin Chen 'dq_map_info' : dq_map_info.copy(), 201*55a95caaSYouMin Chen 'lp4x_info' : lp4_info.copy(), 202*55a95caaSYouMin Chen 'lp5_info' : lp4_info.copy(), 203*55a95caaSYouMin Chen 'lp4_4x_hash_info' : hash_info.copy(), 204*55a95caaSYouMin Chen 'lp5_hash_info' : hash_info.copy(), 205*55a95caaSYouMin Chen 'ddr4_hash_info' : hash_info.copy(), 206*55a95caaSYouMin Chen 'lp3_hash_info' : hash_info.copy(), 207*55a95caaSYouMin Chen 'ddr3_hash_info' : hash_info.copy(), 208*55a95caaSYouMin Chen 'lp2_hash_info' : hash_info.copy(), 209*55a95caaSYouMin Chen 'ddr2_hash_info' : hash_info.copy(), 210*55a95caaSYouMin Chen 'ddr5_hash_info' : hash_info.copy(), 211*55a95caaSYouMin Chen} 212*55a95caaSYouMin Chen 213*55a95caaSYouMin Chensdram_head_info_v0 = [[0xc, 0], [0x10, 0], [0x14, 0], [0x18, 0], [0x1c, 0], [0x20, 0], [0x24, 0]] 214*55a95caaSYouMin Chen 215*55a95caaSYouMin Chen# struct base_info_full 216*55a95caaSYouMin Chenbase_info_full = { 217*55a95caaSYouMin Chen 'start tag': {'value': 0, 'num_base': 'hex', 'index': 'null', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 0, 'v0_info': [0x0, 0, 0xffffffff]}, 218*55a95caaSYouMin Chen 219*55a95caaSYouMin Chen 'ddr2_freq': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'ddr_freq0_1', 'shift': 0, 'mask': 0xfff, 'version': 0, 'v0_info': [0xc, 16, 0xffff]}, 220*55a95caaSYouMin Chen 'lp2_freq': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'ddr_freq0_1', 'shift': 0, 'mask': 0xfff, 'version': 0, 'v0_info': [0xc, 0, 0xffff]}, 221*55a95caaSYouMin Chen 'ddr3_freq': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'ddr_freq0_1', 'shift': 0, 'mask': 0xfff, 'version': 0, 'v0_info': [0x10, 16, 0xffff]}, 222*55a95caaSYouMin Chen 'lp3_freq': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'ddr_freq0_1', 'shift': 0, 'mask': 0xfff, 'version': 0, 'v0_info': [0x10, 0, 0xffff]}, 223*55a95caaSYouMin Chen 'ddr4_freq': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'ddr_freq0_1', 'shift': 0, 'mask': 0xfff, 'version': 0, 'v0_info': [0x14, 16, 0xffff]}, 224*55a95caaSYouMin Chen 'lp4_freq': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'ddr_freq0_1', 'shift': 0, 'mask': 0xfff, 'version': 0, 'v0_info': [0x14, 0, 0xffff]}, 225*55a95caaSYouMin Chen 'lp4x_freq': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'ddr_freq0_1', 'shift': 0, 'mask': 0xfff, 'version': 2}, 226*55a95caaSYouMin Chen 'lp5_freq': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ddr_freq0_1', 'shift': 0, 'mask': 0xfff, 'version': 2}, 227*55a95caaSYouMin Chen 'uart id': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'uart_info', 'shift': 28, 'mask': 0xf, 'version': 0, 'v0_info': [0x18, 28, 0xf]}, 228*55a95caaSYouMin Chen 'uart iomux': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'uart_info', 'shift': 24, 'mask': 0xf, 'version': 0, 'v0_info': [0x18, 24, 0xf]}, 229*55a95caaSYouMin Chen 'uart baudrate': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'uart_info', 'shift': 0, 'mask': 0xffffff, 'version': 0, 'v0_info': [0x18, 0, 0xffffff]}, 230*55a95caaSYouMin Chen 'sr_idle': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'sr_pd_info', 'shift': 16, 'mask': 0xffff, 'version': 0, 'v0_info': [0x1c, 16, 0xffff]}, 231*55a95caaSYouMin Chen 'pd_idle': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'sr_pd_info', 'shift': 0, 'mask': 0xffff, 'version': 0, 'v0_info': [0x1c, 0, 0xffff]}, 232*55a95caaSYouMin Chen 'first scan channel': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'ch_info', 'shift': 28, 'mask': 0xf, 'version': 0, 'v0_info': [0x20, 28, 0xf]}, 233*55a95caaSYouMin Chen 'channel mask': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'ch_info', 'shift': 24, 'mask': 0xf, 'version': 0, 'v0_info': [0x20, 24, 0xf]}, 234*55a95caaSYouMin Chen 'stride type': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'ch_info', 'shift': 16, 'mask': 0xff, 'version': 0, 'v0_info': [0x20, 16, 0xff]}, 235*55a95caaSYouMin Chen 'standby_idle': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'ch_info', 'shift': 0, 'mask': 0xffff, 'version': 0, 'v0_info': [0x20, 0, 0xffff]}, 236*55a95caaSYouMin Chen 'ext_temp_ref': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 29, 'mask': 0x3, 'version': 0, 'v0_info': [0x24, 29, 0x3]}, 237*55a95caaSYouMin Chen 'link_ecc_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 28, 'mask': 0x1, 'version': 2}, 238*55a95caaSYouMin Chen 'per_bank_ref_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 27, 'mask': 0x1, 'version': 2}, 239*55a95caaSYouMin Chen 'derate_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 26, 'mask': 0x1, 'version': 0, 'v0_info': [0x24, 26, 0x1]}, 240*55a95caaSYouMin Chen 'auto_precharge_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 25, 'mask': 0x1, 'version': 2}, 241*55a95caaSYouMin Chen 'res_space_remap_all': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 24, 'mask': 0x1, 'version': 2}, 242*55a95caaSYouMin Chen 'res_space_remap_portion': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 20, 'mask': 0x1, 'version': 2}, 243*55a95caaSYouMin Chen 'rd_vref_scan_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 21, 'mask': 0x1, 'version': 2}, 244*55a95caaSYouMin Chen 'wr_vref_scan_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 22, 'mask': 0x1, 'version': 2}, 245*55a95caaSYouMin Chen 'eye_2d_scan_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 23, 'mask': 0x1, 'version': 2}, 246*55a95caaSYouMin Chen 'dis_train_print': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 19, 'mask': 0x1, 'version': 2}, 247*55a95caaSYouMin Chen 'ssmod_downspread': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 17, 'mask': 0x3, 'version': 0, 'v0_info': [0x24, 17, 0x3]}, 248*55a95caaSYouMin Chen 'ssmod_div': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 9, 'mask': 0xff, 'version': 0, 'v0_info': [0x24, 9, 0xff]}, 249*55a95caaSYouMin Chen 'ssmod_spread': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 1, 'mask': 0xff, 'version': 0, 'v0_info': [0x24, 1, 0xff]}, 250*55a95caaSYouMin Chen 'ddr_2t': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 0, 'mask': 0x1, 'version': 0, 'v0_info': [0x24, 0, 0x1]}, 251*55a95caaSYouMin Chen 'reserved_global_info_2t_bit31': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 31, 'mask': 0x1, 'version': 2}, 252*55a95caaSYouMin Chen 'pstore_base_addr': {'value': 0, 'num_base': 'hex', 'index': 'global_index', 'position': 'reserved_0', 'shift': 16, 'mask': 0xffff, 'version': 2}, 253*55a95caaSYouMin Chen 'pstore_buf_size': {'value': 0, 'num_base': 'hex', 'index': 'global_index', 'position': 'reserved_0', 'shift': 12, 'mask': 0xf, 'version': 2}, 254*55a95caaSYouMin Chen 'uboot_log_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_0', 'shift': 4, 'mask': 0x1, 'version': 2}, 255*55a95caaSYouMin Chen 'atf_log_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_0', 'shift': 3, 'mask': 0x1, 'version': 2}, 256*55a95caaSYouMin Chen 'optee_log_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_0', 'shift': 2, 'mask': 0x1, 'version': 2}, 257*55a95caaSYouMin Chen 'spl_log_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_0', 'shift': 1, 'mask': 0x1, 'version': 2}, 258*55a95caaSYouMin Chen 'tpl_log_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_0', 'shift': 0, 'mask': 0x1, 'version': 2}, 259*55a95caaSYouMin Chen 'reserved_global_reserved_0_bit5_11': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_0', 'shift': 5, 'mask': 0x7f, 'version': 2}, 260*55a95caaSYouMin Chen 'first_init_dram_type': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_1', 'shift': 5, 'mask': 0xf, 'version': 2}, 261*55a95caaSYouMin Chen 'dfs_disable': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_1', 'shift': 4, 'mask': 0x1, 'version': 2}, 262*55a95caaSYouMin Chen 'pageclose': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_1', 'shift': 3, 'mask': 0x1, 'version': 2}, 263*55a95caaSYouMin Chen 'boot_fsp': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_1', 'shift': 0, 'mask': 0x7, 'version': 2}, 264*55a95caaSYouMin Chen 'reserved_global_reserved_1_bit9_31': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_1', 'shift': 9, 'mask': 0x7fffff, 'version': 2}, 265*55a95caaSYouMin Chen 'reserved_global_reserved_2_bit0_31': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_2', 'shift': 0, 'mask': 0xffffffff, 'version': 2}, 266*55a95caaSYouMin Chen 'reserved_global_reserved_3_bit0_31': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_3', 'shift': 0, 'mask': 0xffffffff, 'version': 2}, 267*55a95caaSYouMin Chen 268*55a95caaSYouMin Chen 'ddr2_f1_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'ddr_freq0_1', 'shift': 12, 'mask': 0xfff, 'version': 2}, 269*55a95caaSYouMin Chen 'reserved_ddr2_ddr_freq0_1_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'ddr_freq0_1', 'shift': 24, 'mask': 0xff, 'version': 2}, 270*55a95caaSYouMin Chen 'ddr2_f2_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'ddr_freq2_3', 'shift': 0, 'mask': 0xfff, 'version': 2}, 271*55a95caaSYouMin Chen 'ddr2_f3_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'ddr_freq2_3', 'shift': 12, 'mask': 0xfff, 'version': 2}, 272*55a95caaSYouMin Chen 'reserved_ddr2_ddr_freq2_3_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'ddr_freq2_3', 'shift': 24, 'mask': 0xff, 'version': 2}, 273*55a95caaSYouMin Chen 'ddr2_f4_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'ddr_freq4_5', 'shift': 0, 'mask': 0xfff, 'version': 2}, 274*55a95caaSYouMin Chen 'ddr2_f5_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'ddr_freq4_5', 'shift': 12, 'mask': 0xfff, 'version': 2}, 275*55a95caaSYouMin Chen 'reserved_ddr2_ddr_freq4_5_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'ddr_freq4_5', 'shift': 24, 'mask': 0xff, 'version': 2}, 276*55a95caaSYouMin Chen 'phy_ddr2_dq_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'drv_when_odten', 'shift': 0, 'mask': 0xff, 'version': 2}, 277*55a95caaSYouMin Chen 'phy_ddr2_ca_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'drv_when_odten', 'shift': 8, 'mask': 0xff, 'version': 2}, 278*55a95caaSYouMin Chen 'phy_ddr2_clk_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'drv_when_odten', 'shift': 16, 'mask': 0xff, 'version': 2}, 279*55a95caaSYouMin Chen 'ddr2_dq_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'drv_when_odten', 'shift': 24, 'mask': 0xff, 'version': 2}, 280*55a95caaSYouMin Chen 'phy_ddr2_dq_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'drv_when_odtoff', 'shift': 0, 'mask': 0xff, 'version': 2}, 281*55a95caaSYouMin Chen 'phy_ddr2_ca_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'drv_when_odtoff', 'shift': 8, 'mask': 0xff, 'version': 2}, 282*55a95caaSYouMin Chen 'phy_ddr2_clk_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'drv_when_odtoff', 'shift': 16, 'mask': 0xff, 'version': 2}, 283*55a95caaSYouMin Chen 'ddr2_dq_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'drv_when_odtoff', 'shift': 24, 'mask': 0xff, 'version': 2}, 284*55a95caaSYouMin Chen 'phy_ddr2_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'odt_info', 'shift': 8, 'mask': 0x3ff, 'version': 2}, 285*55a95caaSYouMin Chen 'ddr2_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 286*55a95caaSYouMin Chen 'phy_ddr2_odt_pull_up_en': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'odt_info', 'shift': 18, 'mask': 0x1, 'version': 2}, 287*55a95caaSYouMin Chen 'phy_ddr2_odt_pull_dn_en': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'odt_info', 'shift': 19, 'mask': 0x1, 'version': 2}, 288*55a95caaSYouMin Chen 'reserved_ddr2_odt_info_bit20_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'odt_info', 'shift': 20, 'mask': 0xfff, 'version': 2}, 289*55a95caaSYouMin Chen 'phy_ddr2_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'odten_freq', 'shift': 12, 'mask': 0xfff, 'version': 2}, 290*55a95caaSYouMin Chen 'ddr2_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 291*55a95caaSYouMin Chen 'reserved_ddr2_odten_freq_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'odten_freq', 'shift': 24, 'mask': 0xff, 'version': 2}, 292*55a95caaSYouMin Chen 'phy_ddr2_dq_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'sr_when_odten', 'shift': 0, 'mask': 0xff, 'version': 2}, 293*55a95caaSYouMin Chen 'phy_ddr2_ca_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'sr_when_odten', 'shift': 8, 'mask': 0xff, 'version': 2}, 294*55a95caaSYouMin Chen 'phy_ddr2_clk_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'sr_when_odten', 'shift': 16, 'mask': 0xff, 'version': 2}, 295*55a95caaSYouMin Chen 'reserved_ddr2_sr_when_odten_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'sr_when_odten', 'shift': 24, 'mask': 0xff, 'version': 2}, 296*55a95caaSYouMin Chen 'phy_ddr2_dq_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'sr_when_odtoff', 'shift': 0, 'mask': 0xff, 'version': 2}, 297*55a95caaSYouMin Chen 'phy_ddr2_ca_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'sr_when_odtoff', 'shift': 8, 'mask': 0xff, 'version': 2}, 298*55a95caaSYouMin Chen 'phy_ddr2_clk_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'sr_when_odtoff', 'shift': 16, 'mask': 0xff, 'version': 2}, 299*55a95caaSYouMin Chen 'reserved_ddr2_sr_when_odtoff_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'sr_when_odtoff', 'shift': 24, 'mask': 0xff, 'version': 2}, 300*55a95caaSYouMin Chen 'phy_ddr2_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'vref_when_odten', 'shift': 0, 'mask': 0x3ff, 'version': 5}, 301*55a95caaSYouMin Chen 'ddr2_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'vref_when_odten', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 302*55a95caaSYouMin Chen 'ddr2_ca_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'vref_when_odten', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 303*55a95caaSYouMin Chen 'reserved_ddr2_vref_when_odten_bit30_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'vref_when_odten', 'shift': 30, 'mask': 0x3, 'version': 5}, 304*55a95caaSYouMin Chen 'phy_ddr2_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'vref_when_odtoff', 'shift': 0, 'mask': 0x3ff, 'version': 5}, 305*55a95caaSYouMin Chen 'ddr2_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'vref_when_odtoff', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 306*55a95caaSYouMin Chen 'ddr2_ca_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'vref_when_odtoff', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 307*55a95caaSYouMin Chen 'reserved_ddr2_vref_when_odtoff_bit30_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'vref_when_odtoff', 'shift': 30, 'mask': 0x3, 'version': 5}, 308*55a95caaSYouMin Chen 309*55a95caaSYouMin Chen 'ddr3_f1_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'ddr_freq0_1', 'shift': 12, 'mask': 0xfff, 'version': 2}, 310*55a95caaSYouMin Chen 'reserved_ddr3_ddr_freq0_1_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'ddr_freq0_1', 'shift': 24, 'mask': 0xff, 'version': 2}, 311*55a95caaSYouMin Chen 'ddr3_f2_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'ddr_freq2_3', 'shift': 0, 'mask': 0xfff, 'version': 2}, 312*55a95caaSYouMin Chen 'ddr3_f3_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'ddr_freq2_3', 'shift': 12, 'mask': 0xfff, 'version': 2}, 313*55a95caaSYouMin Chen 'reserved_ddr3_ddr_freq2_3_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'ddr_freq2_3', 'shift': 24, 'mask': 0xff, 'version': 2}, 314*55a95caaSYouMin Chen 'ddr3_f4_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'ddr_freq4_5', 'shift': 0, 'mask': 0xfff, 'version': 2}, 315*55a95caaSYouMin Chen 'ddr3_f5_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'ddr_freq4_5', 'shift': 12, 'mask': 0xfff, 'version': 2}, 316*55a95caaSYouMin Chen 'reserved_ddr3_ddr_freq4_5_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'ddr_freq4_5', 'shift': 24, 'mask': 0xff, 'version': 2}, 317*55a95caaSYouMin Chen 'phy_ddr3_dq_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'drv_when_odten', 'shift': 0, 'mask': 0xff, 'version': 2}, 318*55a95caaSYouMin Chen 'phy_ddr3_ca_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'drv_when_odten', 'shift': 8, 'mask': 0xff, 'version': 2}, 319*55a95caaSYouMin Chen 'phy_ddr3_clk_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'drv_when_odten', 'shift': 16, 'mask': 0xff, 'version': 2}, 320*55a95caaSYouMin Chen 'ddr3_dq_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'drv_when_odten', 'shift': 24, 'mask': 0xff, 'version': 2}, 321*55a95caaSYouMin Chen 'phy_ddr3_dq_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'drv_when_odtoff', 'shift': 0, 'mask': 0xff, 'version': 2}, 322*55a95caaSYouMin Chen 'phy_ddr3_ca_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'drv_when_odtoff', 'shift': 8, 'mask': 0xff, 'version': 2}, 323*55a95caaSYouMin Chen 'phy_ddr3_clk_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'drv_when_odtoff', 'shift': 16, 'mask': 0xff, 'version': 2}, 324*55a95caaSYouMin Chen 'ddr3_dq_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'drv_when_odtoff', 'shift': 24, 'mask': 0xff, 'version': 2}, 325*55a95caaSYouMin Chen 'phy_ddr3_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'odt_info', 'shift': 8, 'mask': 0x3ff, 'version': 2}, 326*55a95caaSYouMin Chen 'ddr3_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 327*55a95caaSYouMin Chen 'phy_ddr3_odt_pull_up_en': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'odt_info', 'shift': 18, 'mask': 0x1, 'version': 2}, 328*55a95caaSYouMin Chen 'phy_ddr3_odt_pull_dn_en': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'odt_info', 'shift': 19, 'mask': 0x1, 'version': 2}, 329*55a95caaSYouMin Chen 'reserved_ddr3_odt_info_bit20_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'odt_info', 'shift': 20, 'mask': 0xfff, 'version': 2}, 330*55a95caaSYouMin Chen 'phy_ddr3_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'odten_freq', 'shift': 12, 'mask': 0xfff, 'version': 2}, 331*55a95caaSYouMin Chen 'ddr3_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 332*55a95caaSYouMin Chen 'reserved_ddr3_odten_freq_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'odten_freq', 'shift': 24, 'mask': 0xff, 'version': 2}, 333*55a95caaSYouMin Chen 'phy_ddr3_dq_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'sr_when_odten', 'shift': 0, 'mask': 0xff, 'version': 2}, 334*55a95caaSYouMin Chen 'phy_ddr3_ca_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'sr_when_odten', 'shift': 8, 'mask': 0xff, 'version': 2}, 335*55a95caaSYouMin Chen 'phy_ddr3_clk_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'sr_when_odten', 'shift': 16, 'mask': 0xff, 'version': 2}, 336*55a95caaSYouMin Chen 'reserved_ddr3_sr_when_odten_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'sr_when_odten', 'shift': 24, 'mask': 0xff, 'version': 2}, 337*55a95caaSYouMin Chen 'phy_ddr3_dq_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'sr_when_odtoff', 'shift': 0, 'mask': 0xff, 'version': 2}, 338*55a95caaSYouMin Chen 'phy_ddr3_ca_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'sr_when_odtoff', 'shift': 8, 'mask': 0xff, 'version': 2}, 339*55a95caaSYouMin Chen 'phy_ddr3_clk_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'sr_when_odtoff', 'shift': 16, 'mask': 0xff, 'version': 2}, 340*55a95caaSYouMin Chen 'reserved_ddr3_sr_when_odtoff_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'sr_when_odtoff', 'shift': 24, 'mask': 0xff, 'version': 2}, 341*55a95caaSYouMin Chen 'phy_ddr3_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'vref_when_odten', 'shift': 0, 'mask': 0x3ff, 'version': 5}, 342*55a95caaSYouMin Chen 'ddr3_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'vref_when_odten', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 343*55a95caaSYouMin Chen 'ddr3_ca_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'vref_when_odten', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 344*55a95caaSYouMin Chen 'reserved_ddr3_vref_when_odten_bit30_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'vref_when_odten', 'shift': 30, 'mask': 0x3, 'version': 5}, 345*55a95caaSYouMin Chen 'phy_ddr3_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'vref_when_odtoff', 'shift': 0, 'mask': 0x3ff, 'version': 5}, 346*55a95caaSYouMin Chen 'ddr3_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'vref_when_odtoff', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 347*55a95caaSYouMin Chen 'ddr3_ca_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'vref_when_odtoff', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 348*55a95caaSYouMin Chen 'reserved_ddr3_vref_when_odtoff_bit30_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'vref_when_odtoff', 'shift': 30, 'mask': 0x3, 'version': 5}, 349*55a95caaSYouMin Chen 350*55a95caaSYouMin Chen 'ddr4_f1_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'ddr_freq0_1', 'shift': 12, 'mask': 0xfff, 'version': 2}, 351*55a95caaSYouMin Chen 'reserved_ddr4_ddr_freq0_1_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'ddr_freq0_1', 'shift': 24, 'mask': 0xff, 'version': 2}, 352*55a95caaSYouMin Chen 'ddr4_f2_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'ddr_freq2_3', 'shift': 0, 'mask': 0xfff, 'version': 2}, 353*55a95caaSYouMin Chen 'ddr4_f3_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'ddr_freq2_3', 'shift': 12, 'mask': 0xfff, 'version': 2}, 354*55a95caaSYouMin Chen 'reserved_ddr4_ddr_freq2_3_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'ddr_freq2_3', 'shift': 24, 'mask': 0xff, 'version': 2}, 355*55a95caaSYouMin Chen 'ddr4_f4_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'ddr_freq4_5', 'shift': 0, 'mask': 0xfff, 'version': 2}, 356*55a95caaSYouMin Chen 'ddr4_f5_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'ddr_freq4_5', 'shift': 12, 'mask': 0xfff, 'version': 2}, 357*55a95caaSYouMin Chen 'reserved_ddr4_ddr_freq4_5_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'ddr_freq4_5', 'shift': 24, 'mask': 0xff, 'version': 2}, 358*55a95caaSYouMin Chen 'phy_ddr4_dq_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'drv_when_odten', 'shift': 0, 'mask': 0xff, 'version': 2}, 359*55a95caaSYouMin Chen 'phy_ddr4_ca_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'drv_when_odten', 'shift': 8, 'mask': 0xff, 'version': 2}, 360*55a95caaSYouMin Chen 'phy_ddr4_clk_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'drv_when_odten', 'shift': 16, 'mask': 0xff, 'version': 2}, 361*55a95caaSYouMin Chen 'ddr4_dq_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'drv_when_odten', 'shift': 24, 'mask': 0xff, 'version': 2}, 362*55a95caaSYouMin Chen 'phy_ddr4_dq_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'drv_when_odtoff', 'shift': 0, 'mask': 0xff, 'version': 2}, 363*55a95caaSYouMin Chen 'phy_ddr4_ca_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'drv_when_odtoff', 'shift': 8, 'mask': 0xff, 'version': 2}, 364*55a95caaSYouMin Chen 'phy_ddr4_clk_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'drv_when_odtoff', 'shift': 16, 'mask': 0xff, 'version': 2}, 365*55a95caaSYouMin Chen 'ddr4_dq_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'drv_when_odtoff', 'shift': 24, 'mask': 0xff, 'version': 2}, 366*55a95caaSYouMin Chen 'phy_ddr4_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'odt_info', 'shift': 8, 'mask': 0x3ff, 'version': 2}, 367*55a95caaSYouMin Chen 'ddr4_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 368*55a95caaSYouMin Chen 'phy_ddr4_odt_pull_up_en': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'odt_info', 'shift': 18, 'mask': 0x1, 'version': 2}, 369*55a95caaSYouMin Chen 'phy_ddr4_odt_pull_dn_en': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'odt_info', 'shift': 19, 'mask': 0x1, 'version': 2}, 370*55a95caaSYouMin Chen 'reserved_ddr4_odt_info_bit20_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'odt_info', 'shift': 20, 'mask': 0xfff, 'version': 2}, 371*55a95caaSYouMin Chen 'phy_ddr4_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'odten_freq', 'shift': 12, 'mask': 0xfff, 'version': 2}, 372*55a95caaSYouMin Chen 'ddr4_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 373*55a95caaSYouMin Chen 'reserved_ddr4_odten_freq_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'odten_freq', 'shift': 24, 'mask': 0xff, 'version': 2}, 374*55a95caaSYouMin Chen 'phy_ddr4_dq_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'sr_when_odten', 'shift': 0, 'mask': 0xff, 'version': 2}, 375*55a95caaSYouMin Chen 'phy_ddr4_ca_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'sr_when_odten', 'shift': 8, 'mask': 0xff, 'version': 2}, 376*55a95caaSYouMin Chen 'phy_ddr4_clk_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'sr_when_odten', 'shift': 16, 'mask': 0xff, 'version': 2}, 377*55a95caaSYouMin Chen 'reserved_ddr4_sr_when_odten_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'sr_when_odten', 'shift': 24, 'mask': 0xff, 'version': 2}, 378*55a95caaSYouMin Chen 'phy_ddr4_dq_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'sr_when_odtoff', 'shift': 0, 'mask': 0xff, 'version': 2}, 379*55a95caaSYouMin Chen 'phy_ddr4_ca_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'sr_when_odtoff', 'shift': 8, 'mask': 0xff, 'version': 2}, 380*55a95caaSYouMin Chen 'phy_ddr4_clk_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'sr_when_odtoff', 'shift': 16, 'mask': 0xff, 'version': 2}, 381*55a95caaSYouMin Chen 'reserved_ddr4_sr_when_odtoff_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'sr_when_odtoff', 'shift': 24, 'mask': 0xff, 'version': 2}, 382*55a95caaSYouMin Chen 'phy_ddr4_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'vref_when_odten', 'shift': 0, 'mask': 0x3ff, 'version': 5}, 383*55a95caaSYouMin Chen 'ddr4_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'vref_when_odten', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 384*55a95caaSYouMin Chen 'ddr4_ca_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'vref_when_odten', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 385*55a95caaSYouMin Chen 'reserved_ddr4_vref_when_odten_bit30_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'vref_when_odten', 'shift': 30, 'mask': 0x3, 'version': 5}, 386*55a95caaSYouMin Chen 'phy_ddr4_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'vref_when_odtoff', 'shift': 0, 'mask': 0x3ff, 'version': 5}, 387*55a95caaSYouMin Chen 'ddr4_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'vref_when_odtoff', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 388*55a95caaSYouMin Chen 'ddr4_ca_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'vref_when_odtoff', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 389*55a95caaSYouMin Chen 'reserved_ddr4_vref_when_odtoff_bit30_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'vref_when_odtoff', 'shift': 30, 'mask': 0x3, 'version': 5}, 390*55a95caaSYouMin Chen 391*55a95caaSYouMin Chen 'lp2_f1_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'ddr_freq0_1', 'shift': 12, 'mask': 0xfff, 'version': 2}, 392*55a95caaSYouMin Chen 'reserved_lp2_ddr_freq0_1_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'ddr_freq0_1', 'shift': 24, 'mask': 0xff, 'version': 2}, 393*55a95caaSYouMin Chen 'lp2_f2_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'ddr_freq2_3', 'shift': 0, 'mask': 0xfff, 'version': 2}, 394*55a95caaSYouMin Chen 'lp2_f3_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'ddr_freq2_3', 'shift': 12, 'mask': 0xfff, 'version': 2}, 395*55a95caaSYouMin Chen 'reserved_lp2_ddr_freq2_3_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'ddr_freq2_3', 'shift': 24, 'mask': 0xff, 'version': 2}, 396*55a95caaSYouMin Chen 'lp2_f4_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'ddr_freq4_5', 'shift': 0, 'mask': 0xfff, 'version': 2}, 397*55a95caaSYouMin Chen 'lp2_f5_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'ddr_freq4_5', 'shift': 12, 'mask': 0xfff, 'version': 2}, 398*55a95caaSYouMin Chen 'reserved_lp2_ddr_freq4_5_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'ddr_freq4_5', 'shift': 24, 'mask': 0xff, 'version': 2}, 399*55a95caaSYouMin Chen 'phy_lp2_dq_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'drv_when_odten', 'shift': 0, 'mask': 0xff, 'version': 2}, 400*55a95caaSYouMin Chen 'phy_lp2_ca_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'drv_when_odten', 'shift': 8, 'mask': 0xff, 'version': 2}, 401*55a95caaSYouMin Chen 'phy_lp2_clk_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'drv_when_odten', 'shift': 16, 'mask': 0xff, 'version': 2}, 402*55a95caaSYouMin Chen 'lp2_dq_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'drv_when_odten', 'shift': 24, 'mask': 0xff, 'version': 2}, 403*55a95caaSYouMin Chen 'phy_lp2_dq_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'drv_when_odtoff', 'shift': 0, 'mask': 0xff, 'version': 2}, 404*55a95caaSYouMin Chen 'phy_lp2_ca_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'drv_when_odtoff', 'shift': 8, 'mask': 0xff, 'version': 2}, 405*55a95caaSYouMin Chen 'phy_lp2_clk_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'drv_when_odtoff', 'shift': 16, 'mask': 0xff, 'version': 2}, 406*55a95caaSYouMin Chen 'lp2_dq_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'drv_when_odtoff', 'shift': 24, 'mask': 0xff, 'version': 2}, 407*55a95caaSYouMin Chen 'phy_lp2_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'odt_info', 'shift': 8, 'mask': 0x3ff, 'version': 2}, 408*55a95caaSYouMin Chen 'lp2_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 409*55a95caaSYouMin Chen 'phy_lp2_odt_pull_up_en': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'odt_info', 'shift': 18, 'mask': 0x1, 'version': 2}, 410*55a95caaSYouMin Chen 'phy_lp2_odt_pull_dn_en': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'odt_info', 'shift': 19, 'mask': 0x1, 'version': 2}, 411*55a95caaSYouMin Chen 'reserved_lp2_odt_info_bit20_31': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'odt_info', 'shift': 20, 'mask': 0xfff, 'version': 2}, 412*55a95caaSYouMin Chen 'phy_lp2_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'odten_freq', 'shift': 12, 'mask': 0xfff, 'version': 2}, 413*55a95caaSYouMin Chen 'lp2_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 414*55a95caaSYouMin Chen 'reserved_lp2_odten_freq_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'odten_freq', 'shift': 24, 'mask': 0xff, 'version': 2}, 415*55a95caaSYouMin Chen 'phy_lp2_dq_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'sr_when_odten', 'shift': 0, 'mask': 0xff, 'version': 2}, 416*55a95caaSYouMin Chen 'phy_lp2_ca_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'sr_when_odten', 'shift': 8, 'mask': 0xff, 'version': 2}, 417*55a95caaSYouMin Chen 'phy_lp2_clk_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'sr_when_odten', 'shift': 16, 'mask': 0xff, 'version': 2}, 418*55a95caaSYouMin Chen 'reserved_lp2_sr_when_odten_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'sr_when_odten', 'shift': 24, 'mask': 0xff, 'version': 2}, 419*55a95caaSYouMin Chen 'phy_lp2_dq_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'sr_when_odtoff', 'shift': 0, 'mask': 0xff, 'version': 2}, 420*55a95caaSYouMin Chen 'phy_lp2_ca_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'sr_when_odtoff', 'shift': 8, 'mask': 0xff, 'version': 2}, 421*55a95caaSYouMin Chen 'phy_lp2_clk_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'sr_when_odtoff', 'shift': 16, 'mask': 0xff, 'version': 2}, 422*55a95caaSYouMin Chen 'reserved_lp2_sr_when_odtoff_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'sr_when_odtoff', 'shift': 24, 'mask': 0xff, 'version': 2}, 423*55a95caaSYouMin Chen 'phy_lp2_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'vref_when_odten', 'shift': 0, 'mask': 0x3ff, 'version': 5}, 424*55a95caaSYouMin Chen 'lp2_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'vref_when_odten', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 425*55a95caaSYouMin Chen 'lp2_ca_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'vref_when_odten', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 426*55a95caaSYouMin Chen 'reserved_lp2_vref_when_odten_bit30_31': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'vref_when_odten', 'shift': 30, 'mask': 0x3, 'version': 5}, 427*55a95caaSYouMin Chen 'phy_lp2_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'vref_when_odtoff', 'shift': 0, 'mask': 0x3ff, 'version': 5}, 428*55a95caaSYouMin Chen 'lp2_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'vref_when_odtoff', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 429*55a95caaSYouMin Chen 'lp2_ca_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'vref_when_odtoff', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 430*55a95caaSYouMin Chen 'reserved_lp2_vref_when_odtoff_bit30_31': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'vref_when_odtoff', 'shift': 30, 'mask': 0x3, 'version': 5}, 431*55a95caaSYouMin Chen 432*55a95caaSYouMin Chen 'lp3_f1_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'ddr_freq0_1', 'shift': 12, 'mask': 0xfff, 'version': 2}, 433*55a95caaSYouMin Chen 'reserved_lp3_ddr_freq0_1_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'ddr_freq0_1', 'shift': 24, 'mask': 0xff, 'version': 2}, 434*55a95caaSYouMin Chen 'lp3_f2_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'ddr_freq2_3', 'shift': 0, 'mask': 0xfff, 'version': 2}, 435*55a95caaSYouMin Chen 'lp3_f3_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'ddr_freq2_3', 'shift': 12, 'mask': 0xfff, 'version': 2}, 436*55a95caaSYouMin Chen 'reserved_lp3_ddr_freq2_3_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'ddr_freq2_3', 'shift': 24, 'mask': 0xff, 'version': 2}, 437*55a95caaSYouMin Chen 'lp3_f4_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'ddr_freq4_5', 'shift': 0, 'mask': 0xfff, 'version': 2}, 438*55a95caaSYouMin Chen 'lp3_f5_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'ddr_freq4_5', 'shift': 12, 'mask': 0xfff, 'version': 2}, 439*55a95caaSYouMin Chen 'reserved_lp3_ddr_freq4_5_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'ddr_freq4_5', 'shift': 24, 'mask': 0xff, 'version': 2}, 440*55a95caaSYouMin Chen 'phy_lp3_dq_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'drv_when_odten', 'shift': 0, 'mask': 0xff, 'version': 2}, 441*55a95caaSYouMin Chen 'phy_lp3_ca_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'drv_when_odten', 'shift': 8, 'mask': 0xff, 'version': 2}, 442*55a95caaSYouMin Chen 'phy_lp3_clk_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'drv_when_odten', 'shift': 16, 'mask': 0xff, 'version': 2}, 443*55a95caaSYouMin Chen 'lp3_dq_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'drv_when_odten', 'shift': 24, 'mask': 0xff, 'version': 2}, 444*55a95caaSYouMin Chen 'phy_lp3_dq_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'drv_when_odtoff', 'shift': 0, 'mask': 0xff, 'version': 2}, 445*55a95caaSYouMin Chen 'phy_lp3_ca_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'drv_when_odtoff', 'shift': 8, 'mask': 0xff, 'version': 2}, 446*55a95caaSYouMin Chen 'phy_lp3_clk_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'drv_when_odtoff', 'shift': 16, 'mask': 0xff, 'version': 2}, 447*55a95caaSYouMin Chen 'lp3_dq_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'drv_when_odtoff', 'shift': 24, 'mask': 0xff, 'version': 2}, 448*55a95caaSYouMin Chen 'phy_lp3_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'odt_info', 'shift': 8, 'mask': 0x3ff, 'version': 2}, 449*55a95caaSYouMin Chen 'lp3_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 450*55a95caaSYouMin Chen 'phy_lp3_odt_pull_up_en': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'odt_info', 'shift': 18, 'mask': 0x1, 'version': 2}, 451*55a95caaSYouMin Chen 'phy_lp3_odt_pull_dn_en': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'odt_info', 'shift': 19, 'mask': 0x1, 'version': 2}, 452*55a95caaSYouMin Chen 'reserved_lp3_odt_info_bit20_31': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'odt_info', 'shift': 20, 'mask': 0xfff, 'version': 2}, 453*55a95caaSYouMin Chen 'phy_lp3_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'odten_freq', 'shift': 12, 'mask': 0xfff, 'version': 2}, 454*55a95caaSYouMin Chen 'lp3_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 455*55a95caaSYouMin Chen 'reserved_lp3_odten_freq_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'odten_freq', 'shift': 24, 'mask': 0xff, 'version': 2}, 456*55a95caaSYouMin Chen 'phy_lp3_dq_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'sr_when_odten', 'shift': 0, 'mask': 0xff, 'version': 2}, 457*55a95caaSYouMin Chen 'phy_lp3_ca_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'sr_when_odten', 'shift': 8, 'mask': 0xff, 'version': 2}, 458*55a95caaSYouMin Chen 'phy_lp3_clk_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'sr_when_odten', 'shift': 16, 'mask': 0xff, 'version': 2}, 459*55a95caaSYouMin Chen 'reserved_lp3_sr_when_odten_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'sr_when_odten', 'shift': 24, 'mask': 0xff, 'version': 2}, 460*55a95caaSYouMin Chen 'phy_lp3_dq_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'sr_when_odtoff', 'shift': 0, 'mask': 0xff, 'version': 2}, 461*55a95caaSYouMin Chen 'phy_lp3_ca_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'sr_when_odtoff', 'shift': 8, 'mask': 0xff, 'version': 2}, 462*55a95caaSYouMin Chen 'phy_lp3_clk_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'sr_when_odtoff', 'shift': 16, 'mask': 0xff, 'version': 2}, 463*55a95caaSYouMin Chen 'reserved_lp3_sr_when_odtoff_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'sr_when_odtoff', 'shift': 24, 'mask': 0xff, 'version': 2}, 464*55a95caaSYouMin Chen 'phy_lp3_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'vref_when_odten', 'shift': 0, 'mask': 0x3ff, 'version': 5}, 465*55a95caaSYouMin Chen 'lp3_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'vref_when_odten', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 466*55a95caaSYouMin Chen 'lp3_ca_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'vref_when_odten', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 467*55a95caaSYouMin Chen 'reserved_lp3_vref_when_odten_bit30_31': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'vref_when_odten', 'shift': 30, 'mask': 0x3, 'version': 5}, 468*55a95caaSYouMin Chen 'phy_lp3_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'vref_when_odtoff', 'shift': 0, 'mask': 0x3ff, 'version': 5}, 469*55a95caaSYouMin Chen 'lp3_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'vref_when_odtoff', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 470*55a95caaSYouMin Chen 'lp3_ca_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'vref_when_odtoff', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 471*55a95caaSYouMin Chen 'reserved_lp3_vref_when_odtoff_bit30_31': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'vref_when_odtoff', 'shift': 30, 'mask': 0x3, 'version': 5}, 472*55a95caaSYouMin Chen 473*55a95caaSYouMin Chen 'lp4_f1_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'ddr_freq0_1', 'shift': 12, 'mask': 0xfff, 'version': 2}, 474*55a95caaSYouMin Chen 'reserved_lp4_ddr_freq0_1_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'ddr_freq0_1', 'shift': 24, 'mask': 0xff, 'version': 2}, 475*55a95caaSYouMin Chen 'lp4_f2_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'ddr_freq2_3', 'shift': 0, 'mask': 0xfff, 'version': 2}, 476*55a95caaSYouMin Chen 'lp4_f3_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'ddr_freq2_3', 'shift': 12, 'mask': 0xfff, 'version': 2}, 477*55a95caaSYouMin Chen 'reserved_lp4_ddr_freq2_3_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'ddr_freq2_3', 'shift': 24, 'mask': 0xff, 'version': 2}, 478*55a95caaSYouMin Chen 'lp4_f4_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'ddr_freq4_5', 'shift': 0, 'mask': 0xfff, 'version': 2}, 479*55a95caaSYouMin Chen 'lp4_f5_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'ddr_freq4_5', 'shift': 12, 'mask': 0xfff, 'version': 2}, 480*55a95caaSYouMin Chen 'reserved_lp4_ddr_freq4_5_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'ddr_freq4_5', 'shift': 24, 'mask': 0xff, 'version': 2}, 481*55a95caaSYouMin Chen 'phy_lp4_dq_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'drv_when_odten', 'shift': 0, 'mask': 0xff, 'version': 2}, 482*55a95caaSYouMin Chen 'phy_lp4_ca_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'drv_when_odten', 'shift': 8, 'mask': 0xff, 'version': 2}, 483*55a95caaSYouMin Chen 'phy_lp4_clk_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'drv_when_odten', 'shift': 16, 'mask': 0xff, 'version': 2}, 484*55a95caaSYouMin Chen 'lp4_dq_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'drv_when_odten', 'shift': 24, 'mask': 0xff, 'version': 2}, 485*55a95caaSYouMin Chen 'phy_lp4_dq_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'drv_when_odtoff', 'shift': 0, 'mask': 0xff, 'version': 2}, 486*55a95caaSYouMin Chen 'phy_lp4_ca_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'drv_when_odtoff', 'shift': 8, 'mask': 0xff, 'version': 2}, 487*55a95caaSYouMin Chen 'phy_lp4_clk_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'drv_when_odtoff', 'shift': 16, 'mask': 0xff, 'version': 2}, 488*55a95caaSYouMin Chen 'lp4_dq_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'drv_when_odtoff', 'shift': 24, 'mask': 0xff, 'version': 2}, 489*55a95caaSYouMin Chen 'phy_lp4_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'odt_info', 'shift': 8, 'mask': 0x3ff, 'version': 2}, 490*55a95caaSYouMin Chen 'lp4_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 491*55a95caaSYouMin Chen 'lp4_ca_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'odt_info', 'shift': 18, 'mask': 0xff, 'version': 2}, 492*55a95caaSYouMin Chen 'lp4_drv_pu_cal_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'odt_info', 'shift': 26, 'mask': 0x1, 'version': 2}, 493*55a95caaSYouMin Chen 'lp4_drv_pu_cal_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'odt_info', 'shift': 27, 'mask': 0x1, 'version': 2}, 494*55a95caaSYouMin Chen 'phy_lp4_drv_pull_dn_en_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'odt_info', 'shift': 28, 'mask': 0x1, 'version': 2}, 495*55a95caaSYouMin Chen 'phy_lp4_drv_pull_dn_en_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'odt_info', 'shift': 29, 'mask': 0x1, 'version': 2}, 496*55a95caaSYouMin Chen 'reserved_lp4_odt_info_bit31': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'odt_info', 'shift': 31, 'mask': 0x1, 'version': 2}, 497*55a95caaSYouMin Chen 'phy_lp4_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'dq_odten_freq', 'shift': 12, 'mask': 0xfff, 'version': 2}, 498*55a95caaSYouMin Chen 'lp4_dq_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'dq_odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 499*55a95caaSYouMin Chen 'reserved_lp4_dq_odten_freq_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'dq_odten_freq', 'shift': 24, 'mask': 0xff, 'version': 2}, 500*55a95caaSYouMin Chen 'phy_lp4_dq_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'sr_when_odten', 'shift': 0, 'mask': 0xff, 'version': 2}, 501*55a95caaSYouMin Chen 'phy_lp4_ca_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'sr_when_odten', 'shift': 8, 'mask': 0xff, 'version': 2}, 502*55a95caaSYouMin Chen 'phy_lp4_clk_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'sr_when_odten', 'shift': 16, 'mask': 0xff, 'version': 2}, 503*55a95caaSYouMin Chen 'reserved_lp4_sr_when_odten_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'sr_when_odten', 'shift': 24, 'mask': 0xff, 'version': 2}, 504*55a95caaSYouMin Chen 'phy_lp4_dq_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'sr_when_odtoff', 'shift': 0, 'mask': 0xff, 'version': 2}, 505*55a95caaSYouMin Chen 'phy_lp4_ca_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'sr_when_odtoff', 'shift': 8, 'mask': 0xff, 'version': 2}, 506*55a95caaSYouMin Chen 'phy_lp4_clk_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'sr_when_odtoff', 'shift': 16, 'mask': 0xff, 'version': 2}, 507*55a95caaSYouMin Chen 'reserved_lp4_sr_when_odtoff_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'sr_when_odtoff', 'shift': 24, 'mask': 0xff, 'version': 2}, 508*55a95caaSYouMin Chen 'lp4_ca_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'ca_odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 509*55a95caaSYouMin Chen 'reserved_lp4_ca_odten_freq_bit12_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'ca_odten_freq', 'shift': 12, 'mask': 0xfffff, 'version': 2}, 510*55a95caaSYouMin Chen 'phy_lp4_cs_drv_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'cs_drv_ca_odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 511*55a95caaSYouMin Chen 'phy_lp4_cs_drv_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'cs_drv_ca_odt_info', 'shift': 8, 'mask': 0xff, 'version': 2}, 512*55a95caaSYouMin Chen 'lp4_odte_ck': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'cs_drv_ca_odt_info', 'shift': 16, 'mask': 0x1, 'version': 2}, 513*55a95caaSYouMin Chen 'lp4_odte_cs_en': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'cs_drv_ca_odt_info', 'shift': 17, 'mask': 0x1, 'version': 2}, 514*55a95caaSYouMin Chen 'lp4_odtd_ca_en': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'cs_drv_ca_odt_info', 'shift': 18, 'mask': 0x1, 'version': 2}, 515*55a95caaSYouMin Chen 'reserved_lp4cs_drv_ca_odt_info_bit19_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'cs_drv_ca_odt_info', 'shift': 19, 'mask': 0x1fff, 'version': 2}, 516*55a95caaSYouMin Chen 'phy_lp4_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'vref_when_odten', 'shift': 0, 'mask': 0x3ff, 'version': 2}, 517*55a95caaSYouMin Chen 'lp4_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'vref_when_odten', 'shift': 10, 'mask': 0x3ff, 'version': 2}, 518*55a95caaSYouMin Chen 'lp4_ca_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'vref_when_odten', 'shift': 20, 'mask': 0x3ff, 'version': 2}, 519*55a95caaSYouMin Chen 'reserved_lp4_vref_when_odten_bit30_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'vref_when_odten', 'shift': 30, 'mask': 0x3, 'version': 2}, 520*55a95caaSYouMin Chen 'phy_lp4_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'vref_when_odtoff', 'shift': 0, 'mask': 0x3ff, 'version': 2}, 521*55a95caaSYouMin Chen 'lp4_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'vref_when_odtoff', 'shift': 10, 'mask': 0x3ff, 'version': 2}, 522*55a95caaSYouMin Chen 'lp4_ca_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'vref_when_odtoff', 'shift': 20, 'mask': 0x3ff, 'version': 2}, 523*55a95caaSYouMin Chen 'reserved_lp4_vref_when_odtoff_bit30_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'vref_when_odtoff', 'shift': 30, 'mask': 0x3, 'version': 2}, 524*55a95caaSYouMin Chen 525*55a95caaSYouMin Chen 'ddr2_bytes_map': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'byte_map_0', 'shift': 16, 'mask': 0xff, 'version': 2}, 526*55a95caaSYouMin Chen 'ddr3_bytes_map': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'byte_map_0', 'shift': 24, 'mask': 0xff, 'version': 2}, 527*55a95caaSYouMin Chen 'ddr4_bytes_map': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'byte_map_0', 'shift': 0, 'mask': 0xff, 'version': 2}, 528*55a95caaSYouMin Chen 'reservedbyte_map_0_bit8_15': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'byte_map_0', 'shift': 8, 'mask': 0xff, 'version': 2}, 529*55a95caaSYouMin Chen 'lp2_bytes_map': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'byte_map_1', 'shift': 8, 'mask': 0xff, 'version': 2}, 530*55a95caaSYouMin Chen 'lp3_bytes_map': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'byte_map_1', 'shift': 16, 'mask': 0xff, 'version': 2}, 531*55a95caaSYouMin Chen 'lp4_bytes_map': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'byte_map_1', 'shift': 24, 'mask': 0xff, 'version': 2}, 532*55a95caaSYouMin Chen 'reserved_byte_map_1_bit0_7': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'byte_map_1', 'shift': 0, 'mask': 0xff, 'version': 2}, 533*55a95caaSYouMin Chen 'lp3_dq0_7_map': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'lp3_dq0_7_map', 'shift': 0, 'mask': 0xffffffff, 'version': 2}, 534*55a95caaSYouMin Chen 'lp2_dq0_7_map': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'lp2_dq0_7_map', 'shift': 0, 'mask': 0xffffffff, 'version': 2}, 535*55a95caaSYouMin Chen 'ddr4_cs0_dq0_dq15_map': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'ddr4_dq_map_0', 'shift': 0, 'mask': 0xffffffff, 'version': 2}, 536*55a95caaSYouMin Chen 'ddr4_cs0_dq16_dq31_map': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'ddr4_dq_map_1', 'shift': 0, 'mask': 0xffffffff, 'version': 2}, 537*55a95caaSYouMin Chen 'ddr4_cs1_dq0_dq15_map': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'ddr4_dq_map_2', 'shift': 0, 'mask': 0xffffffff, 'version': 2}, 538*55a95caaSYouMin Chen 'ddr4_cs1_dq16_dq31_map': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'ddr4_dq_map_3', 'shift': 0, 'mask': 0xffffffff, 'version': 2}, 539*55a95caaSYouMin Chen 540*55a95caaSYouMin Chen 'lp4x_f1_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'ddr_freq0_1', 'shift': 12, 'mask': 0xfff, 'version': 2}, 541*55a95caaSYouMin Chen 'reserved_lp4x_ddr_freq0_1_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'ddr_freq0_1', 'shift': 24, 'mask': 0xff, 'version': 2}, 542*55a95caaSYouMin Chen 'lp4x_f2_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'ddr_freq2_3', 'shift': 0, 'mask': 0xfff, 'version': 2}, 543*55a95caaSYouMin Chen 'lp4x_f3_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'ddr_freq2_3', 'shift': 12, 'mask': 0xfff, 'version': 2}, 544*55a95caaSYouMin Chen 'reserved_lp4x_ddr_freq2_3_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'ddr_freq2_3', 'shift': 24, 'mask': 0xff, 'version': 2}, 545*55a95caaSYouMin Chen 'lp4x_f4_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'ddr_freq4_5', 'shift': 0, 'mask': 0xfff, 'version': 2}, 546*55a95caaSYouMin Chen 'lp4x_f5_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'ddr_freq4_5', 'shift': 12, 'mask': 0xfff, 'version': 2}, 547*55a95caaSYouMin Chen 'reserved_lp4x_ddr_freq4_5_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'ddr_freq4_5', 'shift': 24, 'mask': 0xff, 'version': 2}, 548*55a95caaSYouMin Chen 'phy_lp4x_dq_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'drv_when_odten', 'shift': 0, 'mask': 0xff, 'version': 2}, 549*55a95caaSYouMin Chen 'phy_lp4x_ca_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'drv_when_odten', 'shift': 8, 'mask': 0xff, 'version': 2}, 550*55a95caaSYouMin Chen 'phy_lp4x_clk_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'drv_when_odten', 'shift': 16, 'mask': 0xff, 'version': 2}, 551*55a95caaSYouMin Chen 'lp4x_dq_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'drv_when_odten', 'shift': 24, 'mask': 0xff, 'version': 2}, 552*55a95caaSYouMin Chen 'phy_lp4x_dq_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'drv_when_odtoff', 'shift': 0, 'mask': 0xff, 'version': 2}, 553*55a95caaSYouMin Chen 'phy_lp4x_ca_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'drv_when_odtoff', 'shift': 8, 'mask': 0xff, 'version': 2}, 554*55a95caaSYouMin Chen 'phy_lp4x_clk_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'drv_when_odtoff', 'shift': 16, 'mask': 0xff, 'version': 2}, 555*55a95caaSYouMin Chen 'lp4x_dq_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'drv_when_odtoff', 'shift': 24, 'mask': 0xff, 'version': 2}, 556*55a95caaSYouMin Chen 'phy_lp4x_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'odt_info', 'shift': 8, 'mask': 0x3ff, 'version': 2}, 557*55a95caaSYouMin Chen 'lp4x_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 558*55a95caaSYouMin Chen 'lp4x_ca_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'odt_info', 'shift': 18, 'mask': 0xff, 'version': 2}, 559*55a95caaSYouMin Chen 'lp4x_drv_pu_cal_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'odt_info', 'shift': 26, 'mask': 0x1, 'version': 2}, 560*55a95caaSYouMin Chen 'lp4x_drv_pu_cal_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'odt_info', 'shift': 27, 'mask': 0x1, 'version': 2}, 561*55a95caaSYouMin Chen 'phy_lp4x_drv_pull_dn_en_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'odt_info', 'shift': 28, 'mask': 0x1, 'version': 2}, 562*55a95caaSYouMin Chen 'phy_lp4x_drv_pull_dn_en_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'odt_info', 'shift': 29, 'mask': 0x1, 'version': 2}, 563*55a95caaSYouMin Chen 'reserved_lp4x_odt_info_bit31': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'odt_info', 'shift': 31, 'mask': 0x1, 'version': 2}, 564*55a95caaSYouMin Chen 'phy_lp4x_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'dq_odten_freq', 'shift': 12, 'mask': 0xfff, 'version': 2}, 565*55a95caaSYouMin Chen 'lp4x_dq_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'dq_odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 566*55a95caaSYouMin Chen 'reserved_lp4x_dq_odten_freq_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'dq_odten_freq', 'shift': 24, 'mask': 0xff, 'version': 2}, 567*55a95caaSYouMin Chen 'phy_lp4x_dq_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'sr_when_odten', 'shift': 0, 'mask': 0xff, 'version': 2}, 568*55a95caaSYouMin Chen 'phy_lp4x_ca_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'sr_when_odten', 'shift': 8, 'mask': 0xff, 'version': 2}, 569*55a95caaSYouMin Chen 'phy_lp4x_clk_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'sr_when_odten', 'shift': 16, 'mask': 0xff, 'version': 2}, 570*55a95caaSYouMin Chen 'reserved_lp4x_sr_when_odten_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'sr_when_odten', 'shift': 24, 'mask': 0xff, 'version': 2}, 571*55a95caaSYouMin Chen 'phy_lp4x_dq_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'sr_when_odtoff', 'shift': 0, 'mask': 0xff, 'version': 2}, 572*55a95caaSYouMin Chen 'phy_lp4x_ca_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'sr_when_odtoff', 'shift': 8, 'mask': 0xff, 'version': 2}, 573*55a95caaSYouMin Chen 'phy_lp4x_clk_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'sr_when_odtoff', 'shift': 16, 'mask': 0xff, 'version': 2}, 574*55a95caaSYouMin Chen 'reserved_lp4x_sr_when_odtoff_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'sr_when_odtoff', 'shift': 24, 'mask': 0xff, 'version': 2}, 575*55a95caaSYouMin Chen 'lp4x_ca_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'ca_odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 576*55a95caaSYouMin Chen 'reserved_lp4x_ca_odten_freq_bit12_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'ca_odten_freq', 'shift': 12, 'mask': 0xfffff, 'version': 2}, 577*55a95caaSYouMin Chen 'phy_lp4x_cs_drv_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'cs_drv_ca_odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 578*55a95caaSYouMin Chen 'phy_lp4x_cs_drv_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'cs_drv_ca_odt_info', 'shift': 8, 'mask': 0xff, 'version': 2}, 579*55a95caaSYouMin Chen 'lp4x_odte_ck': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'cs_drv_ca_odt_info', 'shift': 16, 'mask': 0x1, 'version': 2}, 580*55a95caaSYouMin Chen 'lp4x_odte_cs_en': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'cs_drv_ca_odt_info', 'shift': 17, 'mask': 0x1, 'version': 2}, 581*55a95caaSYouMin Chen 'lp4x_odtd_ca_en': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'cs_drv_ca_odt_info', 'shift': 18, 'mask': 0x1, 'version': 2}, 582*55a95caaSYouMin Chen 'reserved_lp4xcs_drv_ca_odt_info_bit19_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'cs_drv_ca_odt_info', 'shift': 19, 'mask': 0x1fff, 'version': 2}, 583*55a95caaSYouMin Chen 'phy_lp4x_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'vref_when_odten', 'shift': 0, 'mask': 0x3ff, 'version': 2}, 584*55a95caaSYouMin Chen 'lp4x_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'vref_when_odten', 'shift': 10, 'mask': 0x3ff, 'version': 2}, 585*55a95caaSYouMin Chen 'lp4x_ca_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'vref_when_odten', 'shift': 20, 'mask': 0x3ff, 'version': 2}, 586*55a95caaSYouMin Chen 'reserved_lp4x_vref_when_odten_bit30_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'vref_when_odten', 'shift': 30, 'mask': 0x3, 'version': 2}, 587*55a95caaSYouMin Chen 'phy_lp4x_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'vref_when_odtoff', 'shift': 0, 'mask': 0x3ff, 'version': 2}, 588*55a95caaSYouMin Chen 'lp4x_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'vref_when_odtoff', 'shift': 10, 'mask': 0x3ff, 'version': 2}, 589*55a95caaSYouMin Chen 'lp4x_ca_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'vref_when_odtoff', 'shift': 20, 'mask': 0x3ff, 'version': 2}, 590*55a95caaSYouMin Chen 'reserved_lp4x_vref_when_odtoff_bit30_31': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'vref_when_odtoff', 'shift': 30, 'mask': 0x3, 'version': 2}, 591*55a95caaSYouMin Chen 592*55a95caaSYouMin Chen 'lp5_f1_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ddr_freq0_1', 'shift': 12, 'mask': 0xfff, 'version': 2}, 593*55a95caaSYouMin Chen 'reserved_lp5_ddr_freq0_1_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ddr_freq0_1', 'shift': 24, 'mask': 0xff, 'version': 2}, 594*55a95caaSYouMin Chen 'lp5_f2_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ddr_freq2_3', 'shift': 0, 'mask': 0xfff, 'version': 2}, 595*55a95caaSYouMin Chen 'lp5_f3_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ddr_freq2_3', 'shift': 12, 'mask': 0xfff, 'version': 2}, 596*55a95caaSYouMin Chen 'reserved_lp5_ddr_freq2_3_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ddr_freq2_3', 'shift': 24, 'mask': 0xff, 'version': 2}, 597*55a95caaSYouMin Chen 'lp5_f4_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ddr_freq4_5', 'shift': 0, 'mask': 0xfff, 'version': 2}, 598*55a95caaSYouMin Chen 'lp5_f5_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ddr_freq4_5', 'shift': 12, 'mask': 0xfff, 'version': 2}, 599*55a95caaSYouMin Chen 'reserved_lp5_ddr_freq4_5_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ddr_freq4_5', 'shift': 24, 'mask': 0xff, 'version': 2}, 600*55a95caaSYouMin Chen 'phy_lp5_dq_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'drv_when_odten', 'shift': 0, 'mask': 0xff, 'version': 2}, 601*55a95caaSYouMin Chen 'phy_lp5_ca_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'drv_when_odten', 'shift': 8, 'mask': 0xff, 'version': 2}, 602*55a95caaSYouMin Chen 'phy_lp5_clk_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'drv_when_odten', 'shift': 16, 'mask': 0xff, 'version': 2}, 603*55a95caaSYouMin Chen 'lp5_dq_drv_when_odten_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'drv_when_odten', 'shift': 24, 'mask': 0xff, 'version': 2}, 604*55a95caaSYouMin Chen 'phy_lp5_dq_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'drv_when_odtoff', 'shift': 0, 'mask': 0xff, 'version': 2}, 605*55a95caaSYouMin Chen 'phy_lp5_ca_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'drv_when_odtoff', 'shift': 8, 'mask': 0xff, 'version': 2}, 606*55a95caaSYouMin Chen 'phy_lp5_clk_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'drv_when_odtoff', 'shift': 16, 'mask': 0xff, 'version': 2}, 607*55a95caaSYouMin Chen 'lp5_dq_drv_when_odtoff_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'drv_when_odtoff', 'shift': 24, 'mask': 0xff, 'version': 2}, 608*55a95caaSYouMin Chen 'phy_lp5_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'odt_info', 'shift': 8, 'mask': 0x3ff, 'version': 2}, 609*55a95caaSYouMin Chen 'lp5_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 610*55a95caaSYouMin Chen 'lp5_ca_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'odt_info', 'shift': 18, 'mask': 0xff, 'version': 2}, 611*55a95caaSYouMin Chen 'lp5_drv_pu_cal_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'odt_info', 'shift': 26, 'mask': 0x1, 'version': 2}, 612*55a95caaSYouMin Chen 'lp5_drv_pu_cal_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'odt_info', 'shift': 27, 'mask': 0x1, 'version': 2}, 613*55a95caaSYouMin Chen 'phy_lp5_drv_pull_dn_en_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'odt_info', 'shift': 28, 'mask': 0x1, 'version': 2}, 614*55a95caaSYouMin Chen 'phy_lp5_drv_pull_dn_en_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'odt_info', 'shift': 29, 'mask': 0x1, 'version': 2}, 615*55a95caaSYouMin Chen 'reserved_lp5_odt_info_bit31': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'odt_info', 'shift': 31, 'mask': 0x1, 'version': 2}, 616*55a95caaSYouMin Chen 'phy_lp5_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'dq_odten_freq', 'shift': 12, 'mask': 0xfff, 'version': 2}, 617*55a95caaSYouMin Chen 'lp5_dq_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'dq_odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 618*55a95caaSYouMin Chen 'reserved_lp5_dq_odten_freq_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'dq_odten_freq', 'shift': 24, 'mask': 0xff, 'version': 2}, 619*55a95caaSYouMin Chen 'phy_lp5_dq_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'sr_when_odten', 'shift': 0, 'mask': 0xff, 'version': 2}, 620*55a95caaSYouMin Chen 'phy_lp5_ca_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'sr_when_odten', 'shift': 8, 'mask': 0xff, 'version': 2}, 621*55a95caaSYouMin Chen 'phy_lp5_clk_sr_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'sr_when_odten', 'shift': 16, 'mask': 0xff, 'version': 2}, 622*55a95caaSYouMin Chen 'reserved_lp5_sr_when_odten_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'sr_when_odten', 'shift': 24, 'mask': 0xff, 'version': 2}, 623*55a95caaSYouMin Chen 'phy_lp5_dq_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'sr_when_odtoff', 'shift': 0, 'mask': 0xff, 'version': 2}, 624*55a95caaSYouMin Chen 'phy_lp5_ca_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'sr_when_odtoff', 'shift': 8, 'mask': 0xff, 'version': 2}, 625*55a95caaSYouMin Chen 'phy_lp5_clk_sr_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'sr_when_odtoff', 'shift': 16, 'mask': 0xff, 'version': 2}, 626*55a95caaSYouMin Chen 'reserved_lp5_sr_when_odtoff_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'sr_when_odtoff', 'shift': 24, 'mask': 0xff, 'version': 2}, 627*55a95caaSYouMin Chen 'lp5_ca_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ca_odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 628*55a95caaSYouMin Chen 'lp5_wck_odt_en_freq': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ca_odten_freq', 'shift': 12, 'mask': 0xfff, 'version': 2}, 629*55a95caaSYouMin Chen 'lp5_wck_odt': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ca_odten_freq', 'shift': 24, 'mask': 0xff, 'version': 2}, 630*55a95caaSYouMin Chen 'phy_lp5_cs_drv_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'cs_drv_ca_odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 631*55a95caaSYouMin Chen 'phy_lp5_cs_drv_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'cs_drv_ca_odt_info', 'shift': 8, 'mask': 0xff, 'version': 2}, 632*55a95caaSYouMin Chen 'lp5_odte_ck': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'cs_drv_ca_odt_info', 'shift': 16, 'mask': 0x1, 'version': 2}, 633*55a95caaSYouMin Chen 'lp5_odte_cs_en': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'cs_drv_ca_odt_info', 'shift': 17, 'mask': 0x1, 'version': 2}, 634*55a95caaSYouMin Chen 'lp5_odtd_ca_en': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'cs_drv_ca_odt_info', 'shift': 18, 'mask': 0x1, 'version': 2}, 635*55a95caaSYouMin Chen 'lp5_nt_odt': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'cs_drv_ca_odt_info', 'shift': 24, 'mask': 0xff, 'version': 2}, 636*55a95caaSYouMin Chen 'reserved_lp5_cs_drv_ca_odt_info_bit19_23': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'cs_drv_ca_odt_info', 'shift': 19, 'mask': 0x1f, 'version': 2}, 637*55a95caaSYouMin Chen 'phy_lp5_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'vref_when_odten', 'shift': 0, 'mask': 0x3ff, 'version': 2}, 638*55a95caaSYouMin Chen 'lp5_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'vref_when_odten', 'shift': 10, 'mask': 0x3ff, 'version': 2}, 639*55a95caaSYouMin Chen 'lp5_ca_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'vref_when_odten', 'shift': 20, 'mask': 0x3ff, 'version': 2}, 640*55a95caaSYouMin Chen 'reserved_lp5_vref_when_odten_bit30_31': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'vref_when_odten', 'shift': 30, 'mask': 0x3, 'version': 2}, 641*55a95caaSYouMin Chen 'phy_lp5_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'vref_when_odtoff', 'shift': 0, 'mask': 0x3ff, 'version': 2}, 642*55a95caaSYouMin Chen 'lp5_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'vref_when_odtoff', 'shift': 10, 'mask': 0x3ff, 'version': 2}, 643*55a95caaSYouMin Chen 'lp5_ca_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'vref_when_odtoff', 'shift': 20, 'mask': 0x3ff, 'version': 2}, 644*55a95caaSYouMin Chen 'reserved_lp5_vref_when_odtoff_bit30_31': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'vref_when_odtoff', 'shift': 30, 'mask': 0x3, 'version': 2}, 645*55a95caaSYouMin Chen 646*55a95caaSYouMin Chen 'lp4_4x_ch_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp4_4x_hash_index', 'position': 'ch_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 3}, 647*55a95caaSYouMin Chen 'lp4_4x_ch_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp4_4x_hash_index', 'position': 'ch_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 3}, 648*55a95caaSYouMin Chen 'lp4_4x_bank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp4_4x_hash_index', 'position': 'bank_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 3}, 649*55a95caaSYouMin Chen 'lp4_4x_bank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp4_4x_hash_index', 'position': 'bank_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 3}, 650*55a95caaSYouMin Chen 'lp4_4x_bank_mask2': {'value': 0, 'num_base': 'hex', 'index': 'lp4_4x_hash_index', 'position': 'bank_mask_2', 'shift': 0, 'mask': 0xffffffff, 'version': 3}, 651*55a95caaSYouMin Chen 'lp4_4x_bank_mask3': {'value': 0, 'num_base': 'hex', 'index': 'lp4_4x_hash_index', 'position': 'bank_mask_3', 'shift': 0, 'mask': 0xffffffff, 'version': 3}, 652*55a95caaSYouMin Chen 'lp4_4x_rank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp4_4x_hash_index', 'position': 'rank_mask0', 'shift': 0, 'mask': 0xffffffff, 'version': 3}, 653*55a95caaSYouMin Chen 'lp4_4x_rank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp4_4x_hash_index', 'position': 'rank_mask1', 'shift': 0, 'mask': 0xffffffff, 'version': 3}, 654*55a95caaSYouMin Chen 655*55a95caaSYouMin Chen 'lp5_ch_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp5_hash_index', 'position': 'ch_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 656*55a95caaSYouMin Chen 'lp5_ch_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp5_hash_index', 'position': 'ch_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 657*55a95caaSYouMin Chen 'lp5_bank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp5_hash_index', 'position': 'bank_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 658*55a95caaSYouMin Chen 'lp5_bank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp5_hash_index', 'position': 'bank_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 659*55a95caaSYouMin Chen 'lp5_bank_mask2': {'value': 0, 'num_base': 'hex', 'index': 'lp5_hash_index', 'position': 'bank_mask_2', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 660*55a95caaSYouMin Chen 'lp5_bank_mask3': {'value': 0, 'num_base': 'hex', 'index': 'lp5_hash_index', 'position': 'bank_mask_3', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 661*55a95caaSYouMin Chen 'lp5_rank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp5_hash_index', 'position': 'rank_mask0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 662*55a95caaSYouMin Chen 'lp5_rank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp5_hash_index', 'position': 'rank_mask1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 663*55a95caaSYouMin Chen 664*55a95caaSYouMin Chen 'ddr4_ch_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr4_hash_index', 'position': 'ch_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 665*55a95caaSYouMin Chen 'ddr4_ch_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr4_hash_index', 'position': 'ch_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 666*55a95caaSYouMin Chen 'ddr4_bank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr4_hash_index', 'position': 'bank_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 667*55a95caaSYouMin Chen 'ddr4_bank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr4_hash_index', 'position': 'bank_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 668*55a95caaSYouMin Chen 'ddr4_bank_mask2': {'value': 0, 'num_base': 'hex', 'index': 'ddr4_hash_index', 'position': 'bank_mask_2', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 669*55a95caaSYouMin Chen 'ddr4_bank_mask3': {'value': 0, 'num_base': 'hex', 'index': 'ddr4_hash_index', 'position': 'bank_mask_3', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 670*55a95caaSYouMin Chen 'ddr4_rank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr4_hash_index', 'position': 'rank_mask0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 671*55a95caaSYouMin Chen 'ddr4_rank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr4_hash_index', 'position': 'rank_mask1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 672*55a95caaSYouMin Chen 673*55a95caaSYouMin Chen 'lp3_ch_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp3_hash_index', 'position': 'ch_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 674*55a95caaSYouMin Chen 'lp3_ch_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp3_hash_index', 'position': 'ch_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 675*55a95caaSYouMin Chen 'lp3_bank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp3_hash_index', 'position': 'bank_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 676*55a95caaSYouMin Chen 'lp3_bank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp3_hash_index', 'position': 'bank_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 677*55a95caaSYouMin Chen 'lp3_bank_mask2': {'value': 0, 'num_base': 'hex', 'index': 'lp3_hash_index', 'position': 'bank_mask_2', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 678*55a95caaSYouMin Chen 'lp3_bank_mask3': {'value': 0, 'num_base': 'hex', 'index': 'lp3_hash_index', 'position': 'bank_mask_3', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 679*55a95caaSYouMin Chen 'lp3_rank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp3_hash_index', 'position': 'rank_mask0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 680*55a95caaSYouMin Chen 'lp3_rank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp3_hash_index', 'position': 'rank_mask1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 681*55a95caaSYouMin Chen 682*55a95caaSYouMin Chen 'ddr3_ch_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr3_hash_index', 'position': 'ch_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 683*55a95caaSYouMin Chen 'ddr3_ch_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr3_hash_index', 'position': 'ch_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 684*55a95caaSYouMin Chen 'ddr3_bank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr3_hash_index', 'position': 'bank_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 685*55a95caaSYouMin Chen 'ddr3_bank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr3_hash_index', 'position': 'bank_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 686*55a95caaSYouMin Chen 'ddr3_bank_mask2': {'value': 0, 'num_base': 'hex', 'index': 'ddr3_hash_index', 'position': 'bank_mask_2', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 687*55a95caaSYouMin Chen 'ddr3_bank_mask3': {'value': 0, 'num_base': 'hex', 'index': 'ddr3_hash_index', 'position': 'bank_mask_3', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 688*55a95caaSYouMin Chen 'ddr3_rank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr3_hash_index', 'position': 'rank_mask0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 689*55a95caaSYouMin Chen 'ddr3_rank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr3_hash_index', 'position': 'rank_mask1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 690*55a95caaSYouMin Chen 691*55a95caaSYouMin Chen 'lp2_ch_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp2_hash_index', 'position': 'ch_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 692*55a95caaSYouMin Chen 'lp2_ch_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp2_hash_index', 'position': 'ch_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 693*55a95caaSYouMin Chen 'lp2_bank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp2_hash_index', 'position': 'bank_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 694*55a95caaSYouMin Chen 'lp2_bank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp2_hash_index', 'position': 'bank_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 695*55a95caaSYouMin Chen 'lp2_bank_mask2': {'value': 0, 'num_base': 'hex', 'index': 'lp2_hash_index', 'position': 'bank_mask_2', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 696*55a95caaSYouMin Chen 'lp2_bank_mask3': {'value': 0, 'num_base': 'hex', 'index': 'lp2_hash_index', 'position': 'bank_mask_3', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 697*55a95caaSYouMin Chen 'lp2_rank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp2_hash_index', 'position': 'rank_mask0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 698*55a95caaSYouMin Chen 'lp2_rank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp2_hash_index', 'position': 'rank_mask1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 699*55a95caaSYouMin Chen 700*55a95caaSYouMin Chen 'ddr2_ch_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr2_hash_index', 'position': 'ch_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 701*55a95caaSYouMin Chen 'ddr2_ch_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr2_hash_index', 'position': 'ch_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 702*55a95caaSYouMin Chen 'ddr2_bank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr2_hash_index', 'position': 'bank_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 703*55a95caaSYouMin Chen 'ddr2_bank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr2_hash_index', 'position': 'bank_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 704*55a95caaSYouMin Chen 'ddr2_bank_mask2': {'value': 0, 'num_base': 'hex', 'index': 'ddr2_hash_index', 'position': 'bank_mask_2', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 705*55a95caaSYouMin Chen 'ddr2_bank_mask3': {'value': 0, 'num_base': 'hex', 'index': 'ddr2_hash_index', 'position': 'bank_mask_3', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 706*55a95caaSYouMin Chen 'ddr2_rank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr2_hash_index', 'position': 'rank_mask0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 707*55a95caaSYouMin Chen 'ddr2_rank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr2_hash_index', 'position': 'rank_mask1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 708*55a95caaSYouMin Chen 709*55a95caaSYouMin Chen 'ddr5_ch_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr5_hash_index', 'position': 'ch_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 710*55a95caaSYouMin Chen 'ddr5_ch_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr5_hash_index', 'position': 'ch_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 711*55a95caaSYouMin Chen 'ddr5_bank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr5_hash_index', 'position': 'bank_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 712*55a95caaSYouMin Chen 'ddr5_bank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr5_hash_index', 'position': 'bank_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 713*55a95caaSYouMin Chen 'ddr5_bank_mask2': {'value': 0, 'num_base': 'hex', 'index': 'ddr5_hash_index', 'position': 'bank_mask_2', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 714*55a95caaSYouMin Chen 'ddr5_bank_mask3': {'value': 0, 'num_base': 'hex', 'index': 'ddr5_hash_index', 'position': 'bank_mask_3', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 715*55a95caaSYouMin Chen 'ddr5_rank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr5_hash_index', 'position': 'rank_mask0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 716*55a95caaSYouMin Chen 'ddr5_rank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr5_hash_index', 'position': 'rank_mask1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 717*55a95caaSYouMin Chen 718*55a95caaSYouMin Chen 'reserved_skew_ddr3_skew_freq_bit12_31': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_skew_freq', 'shift': 12, 'mask': 0xfffff, 'version': 4}, 719*55a95caaSYouMin Chen 'ddr3_skew_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'skew_index', 'position': 'ddr3_skew_freq', 'shift': 0, 'mask': 0xfff, 'version': 4}, 720*55a95caaSYouMin Chen 'ddr3_ca0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_2', 'shift': 8, 'mask': 0xff, 'version': 4}, 721*55a95caaSYouMin Chen 'ddr3_ca1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_0', 'shift': 0, 'mask': 0xff, 'version': 4}, 722*55a95caaSYouMin Chen 'ddr3_ca2_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_1', 'shift': 24, 'mask': 0xff, 'version': 4}, 723*55a95caaSYouMin Chen 'ddr3_ca3_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_1', 'shift': 8, 'mask': 0xff, 'version': 4}, 724*55a95caaSYouMin Chen 'ddr3_ca4_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_1', 'shift': 16, 'mask': 0xff, 'version': 4}, 725*55a95caaSYouMin Chen 'ddr3_ca5_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_2', 'shift': 24, 'mask': 0xff, 'version': 4}, 726*55a95caaSYouMin Chen 'ddr3_ca6_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_1', 'shift': 0, 'mask': 0xff, 'version': 4}, 727*55a95caaSYouMin Chen 'ddr3_ca7_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_2', 'shift': 0, 'mask': 0xff, 'version': 4}, 728*55a95caaSYouMin Chen 'ddr3_ca8_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_3', 'shift': 16, 'mask': 0xff, 'version': 4}, 729*55a95caaSYouMin Chen 'ddr3_ca9_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_0', 'shift': 24, 'mask': 0xff, 'version': 4}, 730*55a95caaSYouMin Chen 'ddr3_ca10_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_3', 'shift': 24, 'mask': 0xff, 'version': 4}, 731*55a95caaSYouMin Chen 'ddr3_ca11_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_2', 'shift': 16, 'mask': 0xff, 'version': 4}, 732*55a95caaSYouMin Chen 'ddr3_ca12_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_4', 'shift': 0, 'mask': 0xff, 'version': 4}, 733*55a95caaSYouMin Chen 'ddr3_ca13_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_0', 'shift': 8, 'mask': 0xff, 'version': 4}, 734*55a95caaSYouMin Chen 'ddr3_ca14_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_0', 'shift': 16, 'mask': 0xff, 'version': 4}, 735*55a95caaSYouMin Chen 'ddr3_ca15_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_5', 'shift': 16, 'mask': 0xff, 'version': 4}, 736*55a95caaSYouMin Chen 'ddr3_ras_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_5', 'shift': 8, 'mask': 0xff, 'version': 4}, 737*55a95caaSYouMin Chen 'ddr3_cas_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_7', 'shift': 24, 'mask': 0xff, 'version': 4}, 738*55a95caaSYouMin Chen 'ddr3_ba0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_5', 'shift': 24, 'mask': 0xff, 'version': 4}, 739*55a95caaSYouMin Chen 'ddr3_ba1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_3', 'shift': 0, 'mask': 0xff, 'version': 4}, 740*55a95caaSYouMin Chen 'ddr3_ba2_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_4', 'shift': 8, 'mask': 0xff, 'version': 4}, 741*55a95caaSYouMin Chen 'ddr3_we_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_6', 'shift': 8, 'mask': 0xff, 'version': 4}, 742*55a95caaSYouMin Chen 'ddr3_cke0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_4', 'shift': 24, 'mask': 0xff, 'version': 4}, 743*55a95caaSYouMin Chen 'ddr3_cke1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_5', 'shift': 0, 'mask': 0xff, 'version': 4}, 744*55a95caaSYouMin Chen 'ddr3_ckn_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_6', 'shift': 24, 'mask': 0xff, 'version': 4}, 745*55a95caaSYouMin Chen 'ddr3_ckp_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_6', 'shift': 16, 'mask': 0xff, 'version': 4}, 746*55a95caaSYouMin Chen 'ddr3_odt0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_3', 'shift': 8, 'mask': 0xff, 'version': 4}, 747*55a95caaSYouMin Chen 'ddr3_odt1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_6', 'shift': 0, 'mask': 0xff, 'version': 4}, 748*55a95caaSYouMin Chen 'ddr3_cs0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_7', 'shift': 0, 'mask': 0xff, 'version': 4}, 749*55a95caaSYouMin Chen 'ddr3_cs1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_7', 'shift': 16, 'mask': 0xff, 'version': 4}, 750*55a95caaSYouMin Chen 'ddr3_resetn_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_7', 'shift': 8, 'mask': 0xff, 'version': 4}, 751*55a95caaSYouMin Chen 752*55a95caaSYouMin Chen 'reserved_skew_ddr4_skew_freq_bit12_31': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_skew_freq', 'shift': 12, 'mask': 0xfffff, 'version': 4}, 753*55a95caaSYouMin Chen 'ddr4_skew_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'skew_index', 'position': 'ddr4_skew_freq', 'shift': 0, 'mask': 0xfff, 'version': 4}, 754*55a95caaSYouMin Chen 'ddr4_ca0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_0', 'shift': 24, 'mask': 0xff, 'version': 4}, 755*55a95caaSYouMin Chen 'ddr4_ca1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_0', 'shift': 16, 'mask': 0xff, 'version': 4}, 756*55a95caaSYouMin Chen 'ddr4_ca2_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_0', 'shift': 8, 'mask': 0xff, 'version': 4}, 757*55a95caaSYouMin Chen 'ddr4_ca3_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_0', 'shift': 0, 'mask': 0xff, 'version': 4}, 758*55a95caaSYouMin Chen 'ddr4_ca4_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_1', 'shift': 24, 'mask': 0xff, 'version': 4}, 759*55a95caaSYouMin Chen 'ddr4_ca5_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_1', 'shift': 16, 'mask': 0xff, 'version': 4}, 760*55a95caaSYouMin Chen 'ddr4_ca6_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_1', 'shift': 8, 'mask': 0xff, 'version': 4}, 761*55a95caaSYouMin Chen 'ddr4_ca7_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_1', 'shift': 0, 'mask': 0xff, 'version': 4}, 762*55a95caaSYouMin Chen 'ddr4_ca8_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_2', 'shift': 24, 'mask': 0xff, 'version': 4}, 763*55a95caaSYouMin Chen 'ddr4_ca9_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_2', 'shift': 16, 'mask': 0xff, 'version': 4}, 764*55a95caaSYouMin Chen 'ddr4_ca10_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_2', 'shift': 8, 'mask': 0xff, 'version': 4}, 765*55a95caaSYouMin Chen 'ddr4_ca11_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_2', 'shift': 0, 'mask': 0xff, 'version': 4}, 766*55a95caaSYouMin Chen 'ddr4_ca12_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_3', 'shift': 24, 'mask': 0xff, 'version': 4}, 767*55a95caaSYouMin Chen 'ddr4_ca13_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_3', 'shift': 16, 'mask': 0xff, 'version': 4}, 768*55a95caaSYouMin Chen 'ddr4_ca14_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_3', 'shift': 8, 'mask': 0xff, 'version': 4}, 769*55a95caaSYouMin Chen 'ddr4_ca15_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_3', 'shift': 0, 'mask': 0xff, 'version': 4}, 770*55a95caaSYouMin Chen 'ddr4_ca16_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_4', 'shift': 24, 'mask': 0xff, 'version': 4}, 771*55a95caaSYouMin Chen 'ddr4_ca17_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_4', 'shift': 16, 'mask': 0xff, 'version': 4}, 772*55a95caaSYouMin Chen 'ddr4_ba0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_4', 'shift': 8, 'mask': 0xff, 'version': 4}, 773*55a95caaSYouMin Chen 'ddr4_ba1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_4', 'shift': 0, 'mask': 0xff, 'version': 4}, 774*55a95caaSYouMin Chen 'ddr4_bg0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_5', 'shift': 24, 'mask': 0xff, 'version': 4}, 775*55a95caaSYouMin Chen 'ddr4_bg1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_5', 'shift': 16, 'mask': 0xff, 'version': 4}, 776*55a95caaSYouMin Chen 'ddr4_cke0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_5', 'shift': 8, 'mask': 0xff, 'version': 4}, 777*55a95caaSYouMin Chen 'ddr4_cke1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_5', 'shift': 0, 'mask': 0xff, 'version': 4}, 778*55a95caaSYouMin Chen 'ddr4_ckn_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_6', 'shift': 24, 'mask': 0xff, 'version': 4}, 779*55a95caaSYouMin Chen 'ddr4_ckp_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_6', 'shift': 16, 'mask': 0xff, 'version': 4}, 780*55a95caaSYouMin Chen 'ddr4_odt0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_6', 'shift': 8, 'mask': 0xff, 'version': 4}, 781*55a95caaSYouMin Chen 'ddr4_odt1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_6', 'shift': 0, 'mask': 0xff, 'version': 4}, 782*55a95caaSYouMin Chen 'ddr4_cs0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_7', 'shift': 24, 'mask': 0xff, 'version': 4}, 783*55a95caaSYouMin Chen 'ddr4_cs1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_7', 'shift': 16, 'mask': 0xff, 'version': 4}, 784*55a95caaSYouMin Chen 'ddr4_resetn_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_7', 'shift': 8, 'mask': 0xff, 'version': 4}, 785*55a95caaSYouMin Chen 'ddr4_actn_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_7', 'shift': 0, 'mask': 0xff, 'version': 4}, 786*55a95caaSYouMin Chen 787*55a95caaSYouMin Chen 'reserved_skew_lp3_skew_freq_bit12_31': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_skew_freq', 'shift': 12, 'mask': 0xfffff, 'version': 4}, 788*55a95caaSYouMin Chen 'lp3_skew_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'skew_index', 'position': 'lp3_skew_freq', 'shift': 0, 'mask': 0xfff, 'version': 4}, 789*55a95caaSYouMin Chen 'lp3_ca0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_3', 'shift': 0, 'mask': 0xff, 'version': 4}, 790*55a95caaSYouMin Chen 'lp3_ca1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_4', 'shift': 0, 'mask': 0xff, 'version': 4}, 791*55a95caaSYouMin Chen 'lp3_ca2_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_2', 'shift': 16, 'mask': 0xff, 'version': 4}, 792*55a95caaSYouMin Chen 'lp3_ca3_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_3', 'shift': 16, 'mask': 0xff, 'version': 4}, 793*55a95caaSYouMin Chen 'lp3_ca4_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_3', 'shift': 24, 'mask': 0xff, 'version': 4}, 794*55a95caaSYouMin Chen 'lp3_ca5_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_1', 'shift': 24, 'mask': 0xff, 'version': 4}, 795*55a95caaSYouMin Chen 'lp3_ca6_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_2', 'shift': 24, 'mask': 0xff, 'version': 4}, 796*55a95caaSYouMin Chen 'lp3_ca7_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_2', 'shift': 0, 'mask': 0xff, 'version': 4}, 797*55a95caaSYouMin Chen 'lp3_ca8_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_5', 'shift': 24, 'mask': 0xff, 'version': 4}, 798*55a95caaSYouMin Chen 'lp3_ca9_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_7', 'shift': 0, 'mask': 0xff, 'version': 4}, 799*55a95caaSYouMin Chen 'lp3_cke0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_4', 'shift': 8, 'mask': 0xff, 'version': 4}, 800*55a95caaSYouMin Chen 'lp3_cke1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_5', 'shift': 0, 'mask': 0xff, 'version': 4}, 801*55a95caaSYouMin Chen 'lp3_ckn_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_6', 'shift': 24, 'mask': 0xff, 'version': 4}, 802*55a95caaSYouMin Chen 'lp3_ckp_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_6', 'shift': 16, 'mask': 0xff, 'version': 4}, 803*55a95caaSYouMin Chen 'lp3_odt0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_6', 'shift': 8, 'mask': 0xff, 'version': 4}, 804*55a95caaSYouMin Chen 'lp3_odt1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_6', 'shift': 0, 'mask': 0xff, 'version': 4}, 805*55a95caaSYouMin Chen 'lp3_odt2_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_0', 'shift': 24, 'mask': 0xff, 'version': 4}, 806*55a95caaSYouMin Chen 'lp3_odt3_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_0', 'shift': 8, 'mask': 0xff, 'version': 4}, 807*55a95caaSYouMin Chen 'lp3_cs0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_7', 'shift': 16, 'mask': 0xff, 'version': 4}, 808*55a95caaSYouMin Chen 'lp3_cs1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_7', 'shift': 24, 'mask': 0xff, 'version': 4}, 809*55a95caaSYouMin Chen 'lp3_cs2_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_1', 'shift': 8, 'mask': 0xff, 'version': 4}, 810*55a95caaSYouMin Chen 'lp3_cs3_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_3', 'shift': 8, 'mask': 0xff, 'version': 4}, 811*55a95caaSYouMin Chen 812*55a95caaSYouMin Chen 'reserved_skew_lp4_skew_freq_bit12_31': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 813*55a95caaSYouMin Chen 'lp4_skew_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 814*55a95caaSYouMin Chen 'lp4_ca0_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 815*55a95caaSYouMin Chen 'lp4_ca1_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 816*55a95caaSYouMin Chen 'lp4_ca2_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 817*55a95caaSYouMin Chen 'lp4_ca3_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 818*55a95caaSYouMin Chen 'lp4_ca4_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 819*55a95caaSYouMin Chen 'lp4_ca5_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 820*55a95caaSYouMin Chen 'lp4_odt0_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 821*55a95caaSYouMin Chen 'lp4_odt1_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 822*55a95caaSYouMin Chen 'lp4_cke0_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 823*55a95caaSYouMin Chen 'lp4_cke1_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 824*55a95caaSYouMin Chen 'lp4_ckn_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 825*55a95caaSYouMin Chen 'lp4_ckp_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 826*55a95caaSYouMin Chen 'lp4_cs0_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 827*55a95caaSYouMin Chen 'lp4_cs1_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 828*55a95caaSYouMin Chen 'lp4_ca0_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 829*55a95caaSYouMin Chen 'lp4_ca1_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 830*55a95caaSYouMin Chen 'lp4_ca2_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 831*55a95caaSYouMin Chen 'lp4_ca3_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 832*55a95caaSYouMin Chen 'lp4_ca4_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 833*55a95caaSYouMin Chen 'lp4_ca5_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 834*55a95caaSYouMin Chen 'lp4_odt0_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 835*55a95caaSYouMin Chen 'lp4_odt1_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 836*55a95caaSYouMin Chen 'lp4_cke0_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 837*55a95caaSYouMin Chen 'lp4_cke1_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 838*55a95caaSYouMin Chen 'lp4_ckn_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 839*55a95caaSYouMin Chen 'lp4_ckp_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 840*55a95caaSYouMin Chen 'lp4_cs0_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 841*55a95caaSYouMin Chen 'lp4_cs1_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 842*55a95caaSYouMin Chen 'lp4_resetn_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 843*55a95caaSYouMin Chen 844*55a95caaSYouMin Chen 'reserved_skew_lp5_skew_freq_bit12_31': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 845*55a95caaSYouMin Chen 'lp5_skew_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 846*55a95caaSYouMin Chen 'lp5_ca0_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 847*55a95caaSYouMin Chen 'lp5_ca1_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 848*55a95caaSYouMin Chen 'lp5_ca2_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 849*55a95caaSYouMin Chen 'lp5_ca3_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 850*55a95caaSYouMin Chen 'lp5_ca4_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 851*55a95caaSYouMin Chen 'lp5_ca5_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 852*55a95caaSYouMin Chen 'lp5_ca6_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 853*55a95caaSYouMin Chen 'lp5_ckn_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 854*55a95caaSYouMin Chen 'lp5_ckp_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 855*55a95caaSYouMin Chen 'lp5_cs0_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 856*55a95caaSYouMin Chen 'lp5_cs1_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 857*55a95caaSYouMin Chen 'lp5_ca0_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 858*55a95caaSYouMin Chen 'lp5_ca1_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 859*55a95caaSYouMin Chen 'lp5_ca2_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 860*55a95caaSYouMin Chen 'lp5_ca3_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 861*55a95caaSYouMin Chen 'lp5_ca4_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 862*55a95caaSYouMin Chen 'lp5_ca5_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 863*55a95caaSYouMin Chen 'lp5_ca6_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 864*55a95caaSYouMin Chen 'lp5_ckn_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 865*55a95caaSYouMin Chen 'lp5_ckp_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 866*55a95caaSYouMin Chen 'lp5_cs0_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 867*55a95caaSYouMin Chen 'lp5_cs1_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 868*55a95caaSYouMin Chen 'lp5_resetn_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 869*55a95caaSYouMin Chen} 870*55a95caaSYouMin Chen 871*55a95caaSYouMin Chen 872*55a95caaSYouMin Chendef bin_data_2_info(info_from_bin, read_out, ddrbin_index, version, info_from_txt): 873*55a95caaSYouMin Chen info_from_bin['start tag']['value'] = 0x12345678 874*55a95caaSYouMin Chen 875*55a95caaSYouMin Chen if version < 2: 876*55a95caaSYouMin Chen for key, value in info_from_bin.items(): 877*55a95caaSYouMin Chen if value['version'] <= version: 878*55a95caaSYouMin Chen for i in range(len(read_out)): 879*55a95caaSYouMin Chen # read_out is sdram_head_info_v0 = [[offset, value], ...] 880*55a95caaSYouMin Chen # info_from_bin v0_info = [offset, shift, mask] 881*55a95caaSYouMin Chen if value['v0_info'][0] == read_out[i][0]: 882*55a95caaSYouMin Chen temp_value = (read_out[i][1] >> value['v0_info'][1]) & value['v0_info'][2] 883*55a95caaSYouMin Chen info_from_bin[key]['value'] = temp_value 884*55a95caaSYouMin Chen #print(f"D: {key} = {value} {hex(value['v0_info'][0])}={read_out[i][1]}") 885*55a95caaSYouMin Chen elif version <= version_max: 886*55a95caaSYouMin Chen for index_name in ddrbin_index: 887*55a95caaSYouMin Chen head_info_name = index_name[:-6]+'_info' 888*55a95caaSYouMin Chen if ddrbin_index[index_name]['offset'] != 0 and 'skew' not in index_name: 889*55a95caaSYouMin Chen for key, value in info_from_bin.items(): 890*55a95caaSYouMin Chen if value['index'] == index_name and value['version'] <= version: 891*55a95caaSYouMin Chen temp_value = read_out[head_info_name][value['position']] 892*55a95caaSYouMin Chen temp_value = (temp_value >> value['shift']) & value['mask'] 893*55a95caaSYouMin Chen info_from_bin[key]['value'] = temp_value 894*55a95caaSYouMin Chen #print(f"D: {key} = {value} {value['position']}={temp_value}") 895*55a95caaSYouMin Chen elif ddrbin_index[index_name]['offset'] != 0 and 'skew' in index_name: 896*55a95caaSYouMin Chen if chip_info == 'rk3528': 897*55a95caaSYouMin Chen for key, value in info_from_bin.items(): 898*55a95caaSYouMin Chen if value['index'] == index_name and value['version'] <= version: 899*55a95caaSYouMin Chen position_1 = value['position'][ : value['position'].find('_')] 900*55a95caaSYouMin Chen position_2 = value['position'][value['position'].find('_') + 1 : ] 901*55a95caaSYouMin Chen # read_out is sdram_head_info_v2 or sdram_head_info_v5 902*55a95caaSYouMin Chen if position_1 in list(read_out[head_info_name].keys()): 903*55a95caaSYouMin Chen temp_value = read_out[head_info_name][position_1][position_2] 904*55a95caaSYouMin Chen temp_value = (temp_value >> value['shift']) & value['mask'] 905*55a95caaSYouMin Chen info_from_bin[key]['value'] = temp_value 906*55a95caaSYouMin Chen #print(f"D: {key} = {value} {value['position']}={temp_value}") 907*55a95caaSYouMin Chen 908*55a95caaSYouMin Chen return 0 909*55a95caaSYouMin Chen 910*55a95caaSYouMin Chen 911*55a95caaSYouMin Chendef modefy_2_bin_data(info_from_txt, write_in, ddrbin_index, version): 912*55a95caaSYouMin Chen global rk3528_skew_info 913*55a95caaSYouMin Chen 914*55a95caaSYouMin Chen if version < 2: 915*55a95caaSYouMin Chen for key, value in info_from_txt.items(): 916*55a95caaSYouMin Chen if value['version'] <= version: 917*55a95caaSYouMin Chen for i in range(len(write_in)): 918*55a95caaSYouMin Chen if value['v0_info'][0] == write_in[i][0]: 919*55a95caaSYouMin Chen write_in[i][1] |= (value['value'] << value['v0_info'][1]) 920*55a95caaSYouMin Chen elif version <= version_max: 921*55a95caaSYouMin Chen for index_name in ddrbin_index: 922*55a95caaSYouMin Chen head_info_name = index_name[:-6]+'_info' 923*55a95caaSYouMin Chen if ddrbin_index[index_name]['offset'] != 0 and 'skew' not in index_name: 924*55a95caaSYouMin Chen position_name = 'null' 925*55a95caaSYouMin Chen for key, value in info_from_txt.items(): 926*55a95caaSYouMin Chen if value['index'] == index_name and value['version'] <= version: 927*55a95caaSYouMin Chen if position_name != value['position']: 928*55a95caaSYouMin Chen position_name = value['position'] 929*55a95caaSYouMin Chen position_value = 0 930*55a95caaSYouMin Chen position_value |= (value['value'] << value['shift']) 931*55a95caaSYouMin Chen write_in[head_info_name][value['position']] = position_value 932*55a95caaSYouMin Chen #print(f"D: {key} = {value}, {value['position']}={position_value}") 933*55a95caaSYouMin Chen elif ddrbin_index[index_name]['offset'] != 0 and 'skew' in index_name: 934*55a95caaSYouMin Chen if chip_info == 'rk3528': 935*55a95caaSYouMin Chen write_in.update({'skew_info' : rk3528_skew_info}) 936*55a95caaSYouMin Chen if rk3528_skew_info['skew_sub_version'] == 0x1: 937*55a95caaSYouMin Chen for key, value in info_from_txt.items(): 938*55a95caaSYouMin Chen if value['index'] == index_name and value['version'] <= version: 939*55a95caaSYouMin Chen position_1 = value['position'][ : value['position'].find('_')] 940*55a95caaSYouMin Chen position_2 = value['position'][value['position'].find('_') + 1 : ] 941*55a95caaSYouMin Chen if position_1 in list(write_in[head_info_name].keys()): 942*55a95caaSYouMin Chen temp_value = write_in[head_info_name][position_1][position_2] 943*55a95caaSYouMin Chen temp_value &= ~(value['mask'] << value['shift']) 944*55a95caaSYouMin Chen temp_value |= value['value'] << value['shift'] 945*55a95caaSYouMin Chen write_in[head_info_name][position_1][position_2] = temp_value 946*55a95caaSYouMin Chen #print(f"D: {key} = {value}, {temp_value}") 947*55a95caaSYouMin Chen 948*55a95caaSYouMin Chen #print(f"D: write_in = {write_in}") 949*55a95caaSYouMin Chen return 0 950*55a95caaSYouMin Chen 951*55a95caaSYouMin Chen 952*55a95caaSYouMin Chendef write_in_bin_data_v2(filebin, bin_skew_offset, write_in, ddrbin_index, info_from_txt, version): 953*55a95caaSYouMin Chen for index_name in ddrbin_index: 954*55a95caaSYouMin Chen head_info_name = index_name[:-6]+'_info' 955*55a95caaSYouMin Chen if ddrbin_index[index_name]['offset'] != 0 and 'skew' not in index_name: 956*55a95caaSYouMin Chen filebin.seek(bin_skew_offset + (ddrbin_index[index_name]['offset'] - 1) * 4) 957*55a95caaSYouMin Chen index_size = ddrbin_index[index_name]['size'] 958*55a95caaSYouMin Chen for key in write_in[head_info_name]: 959*55a95caaSYouMin Chen if index_size > 0: 960*55a95caaSYouMin Chen try: 961*55a95caaSYouMin Chen filebin.write(write_in[head_info_name][key].to_bytes(4,byteorder='little')) 962*55a95caaSYouMin Chen #print(f"D: {head_info_name} {key} = {write_in[head_info_name][key]}") 963*55a95caaSYouMin Chen index_size -= 1 964*55a95caaSYouMin Chen except: 965*55a95caaSYouMin Chen print("write bin {} to file fail".format(head_info_name)) 966*55a95caaSYouMin Chen return -1 967*55a95caaSYouMin Chen elif ddrbin_index[index_name]['offset'] != 0 and 'skew' in index_name: 968*55a95caaSYouMin Chen if chip_info == 'rk3528' and write_in[head_info_name]["skew_sub_version"] == 1: 969*55a95caaSYouMin Chen filebin.seek(bin_skew_offset + (ddrbin_index[index_name]['offset'] - 1) * 4) 970*55a95caaSYouMin Chen index_size = ddrbin_index[index_name]['size'] 971*55a95caaSYouMin Chen for key in write_in[head_info_name]: 972*55a95caaSYouMin Chen if key == 'skew_sub_version': 973*55a95caaSYouMin Chen temp_value = write_in[head_info_name]["skew_sub_version"] 974*55a95caaSYouMin Chen filebin.write(temp_value.to_bytes(4,byteorder='little')) 975*55a95caaSYouMin Chen continue 976*55a95caaSYouMin Chen for key_1 in write_in[head_info_name][key]: 977*55a95caaSYouMin Chen if index_size > 0: 978*55a95caaSYouMin Chen try: 979*55a95caaSYouMin Chen temp_value = write_in[head_info_name][key][key_1] 980*55a95caaSYouMin Chen #print(f"D: {head_info_name} {key}.{key_1} = {temp_value}") 981*55a95caaSYouMin Chen filebin.write(temp_value.to_bytes(4,byteorder='little')) 982*55a95caaSYouMin Chen index_size -= 1 983*55a95caaSYouMin Chen except: 984*55a95caaSYouMin Chen print("write bin {} to file fail".format(head_info_name)) 985*55a95caaSYouMin Chen return -1 986*55a95caaSYouMin Chen 987*55a95caaSYouMin Chen return 0 988*55a95caaSYouMin Chen 989*55a95caaSYouMin Chen 990*55a95caaSYouMin Chen#info from bin + info from txt generate to loader parameters 991*55a95caaSYouMin Chendef txt_data_2_bin_data(info_from_txt, info_from_bin, ddrbin_index, write_in, version): 992*55a95caaSYouMin Chen print("\nnew bin config:") 993*55a95caaSYouMin Chen 994*55a95caaSYouMin Chen for key, value in info_from_txt.items(): 995*55a95caaSYouMin Chen if key == 'start tag': 996*55a95caaSYouMin Chen continue 997*55a95caaSYouMin Chen if (info_from_txt[key]['value'] == 0) and (key not in update_key_list): 998*55a95caaSYouMin Chen info_from_txt[key]['value'] = info_from_bin[key]['value'] 999*55a95caaSYouMin Chen else: 1000*55a95caaSYouMin Chen if info_from_txt[key]['num_base'] == 'hex': 1001*55a95caaSYouMin Chen print("{}: {}".format(key, hex(info_from_txt[key]['value']))) 1002*55a95caaSYouMin Chen else: 1003*55a95caaSYouMin Chen print("{}: {}".format(key, info_from_txt[key]['value'])) 1004*55a95caaSYouMin Chen #print(info_from_txt) 1005*55a95caaSYouMin Chen 1006*55a95caaSYouMin Chen modefy_2_bin_data(info_from_txt, write_in, ddrbin_index, version) 1007*55a95caaSYouMin Chen 1008*55a95caaSYouMin Chen return 0 1009*55a95caaSYouMin Chen 1010*55a95caaSYouMin Chen 1011*55a95caaSYouMin Chendef bin_data_readout(filebin, ddrbin_index, read_out, bin_skew_offset, version, info_from_txt): 1012*55a95caaSYouMin Chen global rk3528_skew_info 1013*55a95caaSYouMin Chen 1014*55a95caaSYouMin Chen if version < 2: 1015*55a95caaSYouMin Chen for i in range(len(read_out)): 1016*55a95caaSYouMin Chen try: 1017*55a95caaSYouMin Chen read_out[i][1] = int.from_bytes(filebin.read(4), byteorder='little') 1018*55a95caaSYouMin Chen #print(f"D: read_out {hex(read_out[i][0])} = {read_out[i][1]}") 1019*55a95caaSYouMin Chen except: 1020*55a95caaSYouMin Chen print("read bin file fail") 1021*55a95caaSYouMin Chen return -1 1022*55a95caaSYouMin Chen elif version <= version_max: 1023*55a95caaSYouMin Chen for index_name in ddrbin_index: 1024*55a95caaSYouMin Chen head_info_name = index_name[:-6]+'_info' 1025*55a95caaSYouMin Chen if ddrbin_index[index_name]['offset'] != 0 and 'skew' not in index_name: 1026*55a95caaSYouMin Chen filebin.seek(bin_skew_offset + (ddrbin_index[index_name]['offset'] - 1) * 4) 1027*55a95caaSYouMin Chen index_size = ddrbin_index[index_name]['size'] 1028*55a95caaSYouMin Chen for key in read_out[head_info_name]: 1029*55a95caaSYouMin Chen if index_size > 0: 1030*55a95caaSYouMin Chen try: 1031*55a95caaSYouMin Chen temp_value = int.from_bytes(filebin.read(4), byteorder='little') 1032*55a95caaSYouMin Chen read_out[head_info_name][key] = temp_value 1033*55a95caaSYouMin Chen #print(f"D: {head_info_name} {key} = {read_out[head_info_name][key]}") 1034*55a95caaSYouMin Chen index_size -= 1 1035*55a95caaSYouMin Chen except: 1036*55a95caaSYouMin Chen print("read {} from bin file fail".format(head_info_name)) 1037*55a95caaSYouMin Chen return -1 1038*55a95caaSYouMin Chen elif ddrbin_index[index_name]['offset'] != 0 and 'skew' in index_name: 1039*55a95caaSYouMin Chen try: 1040*55a95caaSYouMin Chen filebin.seek(bin_skew_offset + (ddrbin_index[index_name]['offset'] - 1) * 4) 1041*55a95caaSYouMin Chen skew_sub_ver = int.from_bytes(filebin.read(4), byteorder='little') & 0xff 1042*55a95caaSYouMin Chen except: 1043*55a95caaSYouMin Chen print("read skew_sub_ver from bin file fail") 1044*55a95caaSYouMin Chen return -1 1045*55a95caaSYouMin Chen if chip_info == 'rk3528' and skew_sub_ver == 0x1: 1046*55a95caaSYouMin Chen for i in rk3528_skew_info: 1047*55a95caaSYouMin Chen if i == 'skew_sub_version': 1048*55a95caaSYouMin Chen rk3528_skew_info[i] = skew_sub_ver 1049*55a95caaSYouMin Chen continue 1050*55a95caaSYouMin Chen for j in rk3528_skew_info[i]: 1051*55a95caaSYouMin Chen try: 1052*55a95caaSYouMin Chen temp_value = int.from_bytes(filebin.read(4), byteorder='little') 1053*55a95caaSYouMin Chen rk3528_skew_info[i][j] = temp_value 1054*55a95caaSYouMin Chen #print(f"D: {i}.{j}={rk3528_skew_info[i][j]}") 1055*55a95caaSYouMin Chen except: 1056*55a95caaSYouMin Chen print("read {} from bin file fail".format(head_info_name)) 1057*55a95caaSYouMin Chen return -1 1058*55a95caaSYouMin Chen 1059*55a95caaSYouMin Chen read_out.update({'skew_info' : rk3528_skew_info}) 1060*55a95caaSYouMin Chen 1061*55a95caaSYouMin Chen return 0 1062*55a95caaSYouMin Chen 1063*55a95caaSYouMin Chen 1064*55a95caaSYouMin Chendef gen_info_from_bin(filegen_path, info_from_bin, verinfo_full, version): 1065*55a95caaSYouMin Chen with open(filegen_path, 'w+', encoding='utf-8') as file: 1066*55a95caaSYouMin Chen file.write('/* ' + verinfo_full + ' */\n') 1067*55a95caaSYouMin Chen 1068*55a95caaSYouMin Chen with open(filegen_path, 'a', encoding='utf-8') as file: 1069*55a95caaSYouMin Chen for key, value in info_from_bin.items(): 1070*55a95caaSYouMin Chen if "reserved" in key: 1071*55a95caaSYouMin Chen continue 1072*55a95caaSYouMin Chen 1073*55a95caaSYouMin Chen if value['num_base'] == 'hex': 1074*55a95caaSYouMin Chen value_str = str(hex(value['value'])) 1075*55a95caaSYouMin Chen else: 1076*55a95caaSYouMin Chen value_str = str(value['value']) 1077*55a95caaSYouMin Chen 1078*55a95caaSYouMin Chen write_buff = key + '=' + value_str 1079*55a95caaSYouMin Chen #print(f"D: {write_buff}") 1080*55a95caaSYouMin Chen file.write(write_buff + '\n') 1081*55a95caaSYouMin Chen 1082*55a95caaSYouMin Chen with open(filegen_path, 'a', encoding='utf-8') as file: 1083*55a95caaSYouMin Chen file.write('end' + '\n') 1084*55a95caaSYouMin Chen 1085*55a95caaSYouMin Chen return 0 1086*55a95caaSYouMin Chen 1087*55a95caaSYouMin Chen 1088*55a95caaSYouMin Chendef print_help(): 1089*55a95caaSYouMin Chen print( 1090*55a95caaSYouMin Chen "For more details, please refer to the ddrbin_tool_user_guide.txt\n"\ 1091*55a95caaSYouMin Chen "This tools support two functions\n"\ 1092*55a95caaSYouMin Chen "for example:\n"\ 1093*55a95caaSYouMin Chen "function 1: modify ddr.bin file from ddrbin_param.txt.\n"\ 1094*55a95caaSYouMin Chen " 1) modify 'ddrbin_param.txt', set ddr frequency, uart info etc what you want.\n"\ 1095*55a95caaSYouMin Chen " If want to keep items default, please keep these items blank.\n"\ 1096*55a95caaSYouMin Chen " The date & time in the version information will be updated by default.\n"\ 1097*55a95caaSYouMin Chen " like: ./ddrbin_tool px30 ddrbin_param.txt px30_ddr_333MHz_v1.13.bin\n"\ 1098*55a95caaSYouMin Chen "\n"\ 1099*55a95caaSYouMin Chen " OPTION: --verinfo_editable=TEXT The TEXT(max 17 chars) will replace\n"\ 1100*55a95caaSYouMin Chen " the date & time in the version information.\n"\ 1101*55a95caaSYouMin Chen " like: ./ddrbin_tool px30 ddrbin_param.txt px30_ddr_333MHz_v1.13.bin [OPTION]\n"\ 1102*55a95caaSYouMin Chen "\n"\ 1103*55a95caaSYouMin Chen "function 2: get ddr.bin file config to gen_param.txt file\n"\ 1104*55a95caaSYouMin Chen " If want to get ddrbin file config, please run like that:\n"\ 1105*55a95caaSYouMin Chen " ./ddrbin_tool px30 -g gen_param.txt px30_ddr_333MHz_v1.15.bin\n"\ 1106*55a95caaSYouMin Chen " The config will show in gen_param.txt.\n"\ 1107*55a95caaSYouMin Chen "\n"\ 1108*55a95caaSYouMin Chen "Note: The function 1 and function 2 are two separate functions\n"\ 1109*55a95caaSYouMin Chen "The gen_param.txt file which is generated by function 2 is no need used in function 1.\n"\ 1110*55a95caaSYouMin Chen "\n"\ 1111*55a95caaSYouMin Chen "For more details, please refer to the ddrbin_tool_user_guide.txt\n"\ 1112*55a95caaSYouMin Chen ) 1113*55a95caaSYouMin Chen 1114*55a95caaSYouMin Chen 1115*55a95caaSYouMin Chendef ddrbin_tool(argc, argv): 1116*55a95caaSYouMin Chen global updata_key_list 1117*55a95caaSYouMin Chen global chip_info 1118*55a95caaSYouMin Chen 1119*55a95caaSYouMin Chen info_from_txt = copy.deepcopy(base_info_full) 1120*55a95caaSYouMin Chen info_from_bin = copy.deepcopy(base_info_full) 1121*55a95caaSYouMin Chen ddrbin_index = copy.deepcopy(sdram_head_info_index_v2) 1122*55a95caaSYouMin Chen 1123*55a95caaSYouMin Chen version_old_hit = 0 1124*55a95caaSYouMin Chen gen_txt_from_bin = 0 1125*55a95caaSYouMin Chen 1126*55a95caaSYouMin Chen verinfo_full = '' 1127*55a95caaSYouMin Chen verinfo_full_offset = 0 1128*55a95caaSYouMin Chen verinfo_full_length = 0 1129*55a95caaSYouMin Chen verinfo_editable = '' 1130*55a95caaSYouMin Chen verinfo_editable_offset = 0 1131*55a95caaSYouMin Chen verinfo_editable_length = 17 1132*55a95caaSYouMin Chen 1133*55a95caaSYouMin Chen print("version v1.21 20241211") 1134*55a95caaSYouMin Chen print("python {}, {}, {}".format(sys.version.split(' ', 1)[0], platform.system(), platform.machine())) 1135*55a95caaSYouMin Chen if sys.version_info < (3, 6): 1136*55a95caaSYouMin Chen print("Warning: Please installed Python 3.6 or later.") 1137*55a95caaSYouMin Chen 1138*55a95caaSYouMin Chen if argc == 1: 1139*55a95caaSYouMin Chen print_help() 1140*55a95caaSYouMin Chen return -1 1141*55a95caaSYouMin Chen 1142*55a95caaSYouMin Chen chip_info = argv[1] 1143*55a95caaSYouMin Chen if chip_info not in chip_list: 1144*55a95caaSYouMin Chen chip_info = 'others chip' 1145*55a95caaSYouMin Chen print("chip: {}".format(chip_info)) 1146*55a95caaSYouMin Chen 1147*55a95caaSYouMin Chen try: 1148*55a95caaSYouMin Chen opts, args = getopt.gnu_getopt(argv, 'g:h', ['verinfo_editable=']) 1149*55a95caaSYouMin Chen except: 1150*55a95caaSYouMin Chen print_help() 1151*55a95caaSYouMin Chen return -1 1152*55a95caaSYouMin Chen 1153*55a95caaSYouMin Chen for opt, arg in opts: 1154*55a95caaSYouMin Chen if opt == '-g': 1155*55a95caaSYouMin Chen gen_txt_from_bin = 1 1156*55a95caaSYouMin Chen filegen_path = arg 1157*55a95caaSYouMin Chen elif opt == '--verinfo_editable': 1158*55a95caaSYouMin Chen verinfo_editable = arg 1159*55a95caaSYouMin Chen if len(verinfo_editable) > verinfo_editable_length: 1160*55a95caaSYouMin Chen print("The character count of 'verinfo_editable' exceeds the allowed limit of 17.") 1161*55a95caaSYouMin Chen return -1 1162*55a95caaSYouMin Chen elif opt == '-h': 1163*55a95caaSYouMin Chen print_help() 1164*55a95caaSYouMin Chen return -1 1165*55a95caaSYouMin Chen 1166*55a95caaSYouMin Chen if gen_txt_from_bin == 1: 1167*55a95caaSYouMin Chen # function: get ddr.bin file config to gen_param.txt file 1168*55a95caaSYouMin Chen if argc < 5: 1169*55a95caaSYouMin Chen print("The number of parameters error") 1170*55a95caaSYouMin Chen print_help() 1171*55a95caaSYouMin Chen return -1 1172*55a95caaSYouMin Chen 1173*55a95caaSYouMin Chen filebin_path = argv[4] 1174*55a95caaSYouMin Chen if os.path.exists(filebin_path) != True: 1175*55a95caaSYouMin Chen print("The file {} not exist".format(filebin_path)) 1176*55a95caaSYouMin Chen return -1 1177*55a95caaSYouMin Chen 1178*55a95caaSYouMin Chen #print(f"D: filegen_path={filegen_path}, {filebin_path}") 1179*55a95caaSYouMin Chen else: 1180*55a95caaSYouMin Chen # function: modify ddr.bin file from ddrbin_param.txt. 1181*55a95caaSYouMin Chen if argc < 4: 1182*55a95caaSYouMin Chen print("The number of parameters error") 1183*55a95caaSYouMin Chen print_help() 1184*55a95caaSYouMin Chen return -1 1185*55a95caaSYouMin Chen 1186*55a95caaSYouMin Chen fileskew_path = argv[2] 1187*55a95caaSYouMin Chen if os.path.exists(fileskew_path) != True: 1188*55a95caaSYouMin Chen print("The file {} not exist".format(fileskew_path)) 1189*55a95caaSYouMin Chen return -1 1190*55a95caaSYouMin Chen 1191*55a95caaSYouMin Chen filebin_path = argv[3] 1192*55a95caaSYouMin Chen if os.path.exists(filebin_path) != True: 1193*55a95caaSYouMin Chen print("The file {} not exist".format(filebin_path)) 1194*55a95caaSYouMin Chen return -1 1195*55a95caaSYouMin Chen 1196*55a95caaSYouMin Chen for key in version_old_list: 1197*55a95caaSYouMin Chen if key in argv[3]: 1198*55a95caaSYouMin Chen version_old_hit = 1 1199*55a95caaSYouMin Chen #print(f"D: fileskew_path={fileskew_path},{filebin_path},version_old_hit={version_old_hit}") 1200*55a95caaSYouMin Chen 1201*55a95caaSYouMin Chen if gen_txt_from_bin != 1: 1202*55a95caaSYouMin Chen # Read the parameters that need to be modified from the txt file. 1203*55a95caaSYouMin Chen key_list = list(info_from_txt.keys()) 1204*55a95caaSYouMin Chen hot = 0 1205*55a95caaSYouMin Chen try: 1206*55a95caaSYouMin Chen with open(fileskew_path,'r', encoding='UTF-8') as file: 1207*55a95caaSYouMin Chen for line in file: 1208*55a95caaSYouMin Chen if '/*' in line: 1209*55a95caaSYouMin Chen continue 1210*55a95caaSYouMin Chen 1211*55a95caaSYouMin Chen if '=' in line: 1212*55a95caaSYouMin Chen index_of_line = line.find('=') 1213*55a95caaSYouMin Chen if line[index_of_line : ].strip() != '=': 1214*55a95caaSYouMin Chen info_dict_key = line[ : index_of_line] 1215*55a95caaSYouMin Chen info_dict_value = line[index_of_line + 1 : -1] 1216*55a95caaSYouMin Chen 1217*55a95caaSYouMin Chen if '0x' in info_dict_value: 1218*55a95caaSYouMin Chen info_dict_value = int(info_dict_value[2:], 16) 1219*55a95caaSYouMin Chen else: 1220*55a95caaSYouMin Chen info_dict_value = int(info_dict_value) 1221*55a95caaSYouMin Chen 1222*55a95caaSYouMin Chen info_from_txt[info_dict_key]['value'] = info_dict_value 1223*55a95caaSYouMin Chen 1224*55a95caaSYouMin Chen # append info_dict_key to update_key_list, need updata value from txt 1225*55a95caaSYouMin Chen update_key_list.append(info_dict_key) 1226*55a95caaSYouMin Chen #print(f"D: update_key_list append, {info_dict_key}={info_dict_value}") 1227*55a95caaSYouMin Chen 1228*55a95caaSYouMin Chen hot = hot + 1 1229*55a95caaSYouMin Chen except (KeyError, ValueError): 1230*55a95caaSYouMin Chen print("KeyError or ValueError: {}={}".format(info_dict_key, info_dict_value)) 1231*55a95caaSYouMin Chen return -1 1232*55a95caaSYouMin Chen except Exception: 1233*55a95caaSYouMin Chen print("The file {} read failed".format(fileskew_path)) 1234*55a95caaSYouMin Chen return -1 1235*55a95caaSYouMin Chen 1236*55a95caaSYouMin Chen if hot == 0: 1237*55a95caaSYouMin Chen print("Failed to read DRAM parameters from the file") 1238*55a95caaSYouMin Chen return -1 1239*55a95caaSYouMin Chen else: 1240*55a95caaSYouMin Chen info_from_txt['start tag']['value'] = 0x12345678 1241*55a95caaSYouMin Chen 1242*55a95caaSYouMin Chen # get info from bin file 1243*55a95caaSYouMin Chen with open(filebin_path, 'rb') as file: 1244*55a95caaSYouMin Chen content = file.read() 1245*55a95caaSYouMin Chen # convert the target byte sequence 'start tag' into bytes, byteorder little 1246*55a95caaSYouMin Chen target_bytes = struct.pack('<I', info_from_txt['start tag']['value']) 1247*55a95caaSYouMin Chen start_position = 0 1248*55a95caaSYouMin Chen while True: 1249*55a95caaSYouMin Chen position = content.find(target_bytes, start_position) 1250*55a95caaSYouMin Chen if position == -1: 1251*55a95caaSYouMin Chen break 1252*55a95caaSYouMin Chen 1253*55a95caaSYouMin Chen version = int.from_bytes(content[position + 4: position + 8], byteorder='little') 1254*55a95caaSYouMin Chen if version >= 0 and version <= version_max: 1255*55a95caaSYouMin Chen break 1256*55a95caaSYouMin Chen else: 1257*55a95caaSYouMin Chen start_position = position + len(target_bytes) 1258*55a95caaSYouMin Chen 1259*55a95caaSYouMin Chen if position == -1: 1260*55a95caaSYouMin Chen if start_position == 0: 1261*55a95caaSYouMin Chen print("Find the 'start tag' in the ddrbin file failed") 1262*55a95caaSYouMin Chen else: 1263*55a95caaSYouMin Chen print("version = {}, invalid.".format(version)) 1264*55a95caaSYouMin Chen if version > version_max and version < (version_max + 5): 1265*55a95caaSYouMin Chen print("Please check if there is a new version of the tool available.") 1266*55a95caaSYouMin Chen return -1 1267*55a95caaSYouMin Chen 1268*55a95caaSYouMin Chen # get ddrbin parameters version 1269*55a95caaSYouMin Chen try: 1270*55a95caaSYouMin Chen bin_skew_offset = position + 4 1271*55a95caaSYouMin Chen filebin = open(filebin_path, 'rb+') 1272*55a95caaSYouMin Chen filebin.seek(bin_skew_offset) 1273*55a95caaSYouMin Chen version = int.from_bytes(filebin.read(4), byteorder='little') 1274*55a95caaSYouMin Chen except: 1275*55a95caaSYouMin Chen print("get version fail") 1276*55a95caaSYouMin Chen filebin.close() 1277*55a95caaSYouMin Chen return -1 1278*55a95caaSYouMin Chen 1279*55a95caaSYouMin Chen print("version {}".format(version)) 1280*55a95caaSYouMin Chen 1281*55a95caaSYouMin Chen # get ddrbin version information from bin file 1282*55a95caaSYouMin Chen # eg: DDR 03ea844c5d typ 24/09/03-10:42:57,fwver: v1.23 1283*55a95caaSYouMin Chen target_bytes = b'DDR ' 1284*55a95caaSYouMin Chen target_bytes_1 = b',fwver:' 1285*55a95caaSYouMin Chen start_position = 0 1286*55a95caaSYouMin Chen while True: 1287*55a95caaSYouMin Chen position = content.find(target_bytes, start_position) 1288*55a95caaSYouMin Chen position_1 = content.find(target_bytes_1, start_position) 1289*55a95caaSYouMin Chen if position == -1 or position_1 == -1: 1290*55a95caaSYouMin Chen break 1291*55a95caaSYouMin Chen elif (position_1 - position) < 100: 1292*55a95caaSYouMin Chen verinfo_full = content[position: position_1+30].decode('utf-8', errors='replace') 1293*55a95caaSYouMin Chen verinfo_full = verinfo_full[:verinfo_full.find('\n')] 1294*55a95caaSYouMin Chen if content[position_1 - verinfo_editable_length - 1].to_bytes(1, 'little') == b' ': 1295*55a95caaSYouMin Chen verinfo_editable_offset = position_1 - verinfo_editable_length 1296*55a95caaSYouMin Chen verinfo_full_offset = position 1297*55a95caaSYouMin Chen verinfo_full_length = len(verinfo_full.encode('utf-8')) 1298*55a95caaSYouMin Chen print("{}".format(verinfo_full)) 1299*55a95caaSYouMin Chen break 1300*55a95caaSYouMin Chen else: 1301*55a95caaSYouMin Chen start_position = position + len(target_bytes) 1302*55a95caaSYouMin Chen 1303*55a95caaSYouMin Chen if version < 2: 1304*55a95caaSYouMin Chen read_out = copy.deepcopy(sdram_head_info_v0) 1305*55a95caaSYouMin Chen write_in = copy.deepcopy(sdram_head_info_v0) 1306*55a95caaSYouMin Chen 1307*55a95caaSYouMin Chen # skip gcpu_gen_freq after version_info 1308*55a95caaSYouMin Chen filebin.seek(bin_skew_offset + 8) 1309*55a95caaSYouMin Chen elif version <= 5: 1310*55a95caaSYouMin Chen if version >= 3: 1311*55a95caaSYouMin Chen ddrbin_index.update(sdram_head_info_index_v2_3) 1312*55a95caaSYouMin Chen if version >= 4: 1313*55a95caaSYouMin Chen ddrbin_index.update(sdram_head_info_index_v3_4) 1314*55a95caaSYouMin Chen 1315*55a95caaSYouMin Chen if version < 5: 1316*55a95caaSYouMin Chen read_out = copy.deepcopy(sdram_head_info_v2) 1317*55a95caaSYouMin Chen write_in = copy.deepcopy(sdram_head_info_v2) 1318*55a95caaSYouMin Chen else: 1319*55a95caaSYouMin Chen read_out = copy.deepcopy(sdram_head_info_v5) 1320*55a95caaSYouMin Chen write_in = copy.deepcopy(sdram_head_info_v5) 1321*55a95caaSYouMin Chen 1322*55a95caaSYouMin Chen #index_info read out 1323*55a95caaSYouMin Chen for key in ddrbin_index: 1324*55a95caaSYouMin Chen try: 1325*55a95caaSYouMin Chen ddrbin_index[key]['offset'] = int.from_bytes(filebin.read(1), byteorder='little') 1326*55a95caaSYouMin Chen ddrbin_index[key]['size'] = int.from_bytes(filebin.read(1), byteorder='little') 1327*55a95caaSYouMin Chen except: 1328*55a95caaSYouMin Chen filebin.close() 1329*55a95caaSYouMin Chen print("readout ddrbin_index fail") 1330*55a95caaSYouMin Chen return -1 1331*55a95caaSYouMin Chen #print(f"D: {key} = {index[key]}",ddrbin_index[key]["offset"],ddrbin_index[key]["size"]) 1332*55a95caaSYouMin Chen else: 1333*55a95caaSYouMin Chen filebin.close() 1334*55a95caaSYouMin Chen print("version not support") 1335*55a95caaSYouMin Chen return -1 1336*55a95caaSYouMin Chen 1337*55a95caaSYouMin Chen if bin_data_readout(filebin, ddrbin_index, read_out, bin_skew_offset, version, info_from_txt) != 0: 1338*55a95caaSYouMin Chen filebin.close() 1339*55a95caaSYouMin Chen print("bin_data_readout failed") 1340*55a95caaSYouMin Chen return -1 1341*55a95caaSYouMin Chen 1342*55a95caaSYouMin Chen bin_data_2_info(info_from_bin, read_out, ddrbin_index, version, info_from_txt) 1343*55a95caaSYouMin Chen if gen_txt_from_bin == 1: 1344*55a95caaSYouMin Chen if gen_info_from_bin(filegen_path, info_from_bin, verinfo_full, version) == 0: 1345*55a95caaSYouMin Chen print("generate info from bin file ok.") 1346*55a95caaSYouMin Chen filebin.close() 1347*55a95caaSYouMin Chen return 0 1348*55a95caaSYouMin Chen else: 1349*55a95caaSYouMin Chen print("generate info fail.") 1350*55a95caaSYouMin Chen filebin.close() 1351*55a95caaSYouMin Chen return -1 1352*55a95caaSYouMin Chen 1353*55a95caaSYouMin Chen txt_data_2_bin_data(info_from_txt, info_from_bin, ddrbin_index, write_in, version) 1354*55a95caaSYouMin Chen 1355*55a95caaSYouMin Chen if version < 2: 1356*55a95caaSYouMin Chen if version_old_hit == 0: 1357*55a95caaSYouMin Chen filebin.seek(bin_skew_offset + 8) 1358*55a95caaSYouMin Chen for i in range(len(write_in)): 1359*55a95caaSYouMin Chen try: 1360*55a95caaSYouMin Chen filebin.write(write_in[i][1].to_bytes(4,byteorder='little')) 1361*55a95caaSYouMin Chen except: 1362*55a95caaSYouMin Chen print("write bin file fail") 1363*55a95caaSYouMin Chen else: 1364*55a95caaSYouMin Chen filebin.seek(bin_skew_offset + 20) 1365*55a95caaSYouMin Chen for i in range(3, len(write_in)): 1366*55a95caaSYouMin Chen try: 1367*55a95caaSYouMin Chen filebin.write(write_in[i][1].to_bytes(4,byteorder='little')) 1368*55a95caaSYouMin Chen except: 1369*55a95caaSYouMin Chen print("write bin file fail") 1370*55a95caaSYouMin Chen elif version <= version_max: 1371*55a95caaSYouMin Chen write_in_bin_data_v2(filebin, bin_skew_offset, write_in, ddrbin_index, info_from_txt, version) 1372*55a95caaSYouMin Chen print("modify end\n") 1373*55a95caaSYouMin Chen 1374*55a95caaSYouMin Chen # update ddrbin version information to bin file 1375*55a95caaSYouMin Chen if verinfo_editable_offset != 0: 1376*55a95caaSYouMin Chen if verinfo_editable == '': 1377*55a95caaSYouMin Chen #print(f"position_1={position_1}, position_2={position_2}, {old_verinfo_editable}") 1378*55a95caaSYouMin Chen current_time = datetime.now() 1379*55a95caaSYouMin Chen verinfo_editable = current_time.strftime("%y/%m/%d-%H:%M.%S") 1380*55a95caaSYouMin Chen if len(verinfo_editable) < verinfo_editable_length: 1381*55a95caaSYouMin Chen verinfo_editable = verinfo_editable.ljust(verinfo_editable_length) 1382*55a95caaSYouMin Chen 1383*55a95caaSYouMin Chen verinfo_editable_bytes = verinfo_editable.encode('utf-8')[:verinfo_editable_length] 1384*55a95caaSYouMin Chen try: 1385*55a95caaSYouMin Chen filebin.seek(verinfo_editable_offset) 1386*55a95caaSYouMin Chen filebin.write(verinfo_editable_bytes) 1387*55a95caaSYouMin Chen filebin.seek(verinfo_full_offset) 1388*55a95caaSYouMin Chen new_verinfo_full = filebin.read(verinfo_full_length).decode('utf-8', errors='replace') 1389*55a95caaSYouMin Chen print("new ddrbin version information: {}".format(new_verinfo_full)) 1390*55a95caaSYouMin Chen except: 1391*55a95caaSYouMin Chen print("change verinfo_editable error") 1392*55a95caaSYouMin Chen 1393*55a95caaSYouMin Chen filebin.close() 1394*55a95caaSYouMin Chen 1395*55a95caaSYouMin Chen return 0 1396*55a95caaSYouMin Chen 1397*55a95caaSYouMin Chen 1398*55a95caaSYouMin Chenif __name__ == '__main__': 1399*55a95caaSYouMin Chen #print(f"D: argc = {len(sys.argv)}, argv = {sys.argv}") 1400*55a95caaSYouMin Chen ddrbin_tool(len(sys.argv), sys.argv) 1401*55a95caaSYouMin Chen 1402