155a95caaSYouMin Chen#!/usr/bin/env python3 255a95caaSYouMin Chen# -*-coding=utf-8-*- 355a95caaSYouMin Chen# 455a95caaSYouMin Chen# Copyright (C) 2024, Rockchip Electronics Co., Ltd. 555a95caaSYouMin Chen# 655a95caaSYouMin Chen 755a95caaSYouMin Chenimport os 855a95caaSYouMin Chenimport re 955a95caaSYouMin Chenimport sys 1055a95caaSYouMin Chenimport copy 1155a95caaSYouMin Chenimport getopt 1255a95caaSYouMin Chenimport platform 1355a95caaSYouMin Chenimport struct 1455a95caaSYouMin Chenfrom datetime import datetime 1555a95caaSYouMin Chen 16*4026ce53SZhihuan Heversion_max = 6 1755a95caaSYouMin Chenupdate_key_list = [] 1855a95caaSYouMin Chen 1955a95caaSYouMin Chenchip_info = 'null' 2055a95caaSYouMin Chenchip_list = ['px30', 'px30s', 'px3se', 'px5', 'rk1808', 'rk2118', 'rk312x', 'rk3126', 'rk3128', 2155a95caaSYouMin Chen 'rk3128h', 'rk322x', 'rk3228a', 'rk3228b', 'rk3228h', 'rk322xh', 'rk3229', 'rk3308', 'rk3288', 2255a95caaSYouMin Chen 'rk3326', 'rk3326s', 'rk3328', 'rk3368', 'rk3399', 'rk3506', 'rk3528', 'rk356x', 'rk3562', 2355a95caaSYouMin Chen 'rk3566', 'rk3568', 'rk3576', 'rk3588', 'rv1103', 'rv1103b', 'rv1106', 'rv1108', 'rv1109', 2455a95caaSYouMin Chen 'rv1126'] 2555a95caaSYouMin Chen 2655a95caaSYouMin Chenversion_old_list = ['rk322xh', 'rk3328', 'rk3318'] 2755a95caaSYouMin Chen 2855a95caaSYouMin Chen# struct rk3528_ca_skew 2955a95caaSYouMin Chenrk3528_ca_skew = { 3055a95caaSYouMin Chen 'skew_freq': 0, 3155a95caaSYouMin Chen 'ca_skew_0': 0, 3255a95caaSYouMin Chen 'ca_skew_1': 0, 3355a95caaSYouMin Chen 'ca_skew_2': 0, 3455a95caaSYouMin Chen 'ca_skew_3': 0, 3555a95caaSYouMin Chen 'ca_skew_4': 0, 3655a95caaSYouMin Chen 'ca_skew_5': 0, 3755a95caaSYouMin Chen 'ca_skew_6': 0, 3855a95caaSYouMin Chen 'ca_skew_7': 0, 3955a95caaSYouMin Chen} 4055a95caaSYouMin Chen 4155a95caaSYouMin Chen# struct rk3528_skew_info 4255a95caaSYouMin Chenrk3528_skew_info = { 4355a95caaSYouMin Chen 'skew_sub_version': 0, 4455a95caaSYouMin Chen 'ddr3' : rk3528_ca_skew.copy(), 4555a95caaSYouMin Chen 'ddr4' : rk3528_ca_skew.copy(), 4655a95caaSYouMin Chen 'lp3' : rk3528_ca_skew.copy(), 4755a95caaSYouMin Chen} 4855a95caaSYouMin Chen 4955a95caaSYouMin Chen# struct index_info, u8 5055a95caaSYouMin Chenindex_info = { 5155a95caaSYouMin Chen 'offset' : 0, 5255a95caaSYouMin Chen 'size' : 0 5355a95caaSYouMin Chen} 5455a95caaSYouMin Chen 55*4026ce53SZhihuan He# struct perf_index_info, u16 56*4026ce53SZhihuan Heperf_index_info = { 57*4026ce53SZhihuan He 'offset' : 0, 58*4026ce53SZhihuan He 'size' : 0 59*4026ce53SZhihuan He} 60*4026ce53SZhihuan He 6155a95caaSYouMin Chen# struct sdram_head_info_index_v2 6255a95caaSYouMin Chensdram_head_info_index_v2 = { 6355a95caaSYouMin Chen 'cpu_gen_index' : index_info.copy(), 6455a95caaSYouMin Chen 'global_index' : index_info.copy(), 6555a95caaSYouMin Chen 'ddr2_index' : index_info.copy(), 6655a95caaSYouMin Chen 'ddr3_index' : index_info.copy(), 6755a95caaSYouMin Chen 'ddr4_index' : index_info.copy(), 6855a95caaSYouMin Chen 'ddr5_index' : index_info.copy(), 6955a95caaSYouMin Chen 'lp2_index' : index_info.copy(), 7055a95caaSYouMin Chen 'lp3_index' : index_info.copy(), 7155a95caaSYouMin Chen 'lp4_index' : index_info.copy(), 7255a95caaSYouMin Chen 'lp5_index' : index_info.copy(), 7355a95caaSYouMin Chen 'skew_index' : index_info.copy(), 7455a95caaSYouMin Chen 'dq_map_index' : index_info.copy(), 7555a95caaSYouMin Chen} 7655a95caaSYouMin Chen 7755a95caaSYouMin Chensdram_head_info_index_v2_3 = { 7855a95caaSYouMin Chen 'lp4x_index' : index_info.copy(), 7955a95caaSYouMin Chen 'lp4_4x_hash_index' : index_info.copy() 8055a95caaSYouMin Chen} 8155a95caaSYouMin Chen 8255a95caaSYouMin Chensdram_head_info_index_v3_4 = { 8355a95caaSYouMin Chen 'lp5_hash_index' : index_info.copy(), 8455a95caaSYouMin Chen 'ddr4_hash_index' : index_info.copy(), 8555a95caaSYouMin Chen 'lp3_hash_index' : index_info.copy(), 8655a95caaSYouMin Chen 'ddr3_hash_index' : index_info.copy(), 8755a95caaSYouMin Chen 'lp2_hash_index' : index_info.copy(), 8855a95caaSYouMin Chen 'ddr2_hash_index' : index_info.copy(), 8955a95caaSYouMin Chen 'ddr5_hash_index' : index_info.copy(), 90*4026ce53SZhihuan He 'reserved0_index' : index_info.copy(), 91*4026ce53SZhihuan He} 92*4026ce53SZhihuan He 93*4026ce53SZhihuan Hesdram_head_info_index_v5 = { 94*4026ce53SZhihuan He 'ch_perf_index_u16' : perf_index_info.copy(), 95*4026ce53SZhihuan He 'com_perf_index_u16' : perf_index_info.copy(), 96*4026ce53SZhihuan He} 97*4026ce53SZhihuan He 98*4026ce53SZhihuan Hesdram_head_info_index_v6 = { 99*4026ce53SZhihuan He 'uart_iomux_index_u16' : perf_index_info.copy(), 10055a95caaSYouMin Chen} 10155a95caaSYouMin Chen 10255a95caaSYouMin Chen# struct global_info 10355a95caaSYouMin Chenglobal_info = { 10455a95caaSYouMin Chen 'uart_info' : 0, 10555a95caaSYouMin Chen 'sr_pd_info' : 0, 10655a95caaSYouMin Chen 'ch_info' : 0, 10755a95caaSYouMin Chen 'info_2t' : 0, 10855a95caaSYouMin Chen 'reserved_0' : 0, 10955a95caaSYouMin Chen 'reserved_1' : 0, 11055a95caaSYouMin Chen 'reserved_2' : 0, 11155a95caaSYouMin Chen 'reserved_3' : 0, 11255a95caaSYouMin Chen} 11355a95caaSYouMin Chen 11455a95caaSYouMin Chen# struct ddr2_3_4_lp2_3_info 11555a95caaSYouMin Chenddr2_3_4_lp2_3_info = { 11655a95caaSYouMin Chen 'ddr_freq0_1' : 0, 11755a95caaSYouMin Chen 'ddr_freq2_3' : 0, 11855a95caaSYouMin Chen 'ddr_freq4_5' : 0, 11955a95caaSYouMin Chen 'drv_when_odten' : 0, 12055a95caaSYouMin Chen 'drv_when_odtoff' : 0, 12155a95caaSYouMin Chen 'odt_info' : 0, 12255a95caaSYouMin Chen 'odten_freq' : 0, 12355a95caaSYouMin Chen 'sr_when_odten' : 0, 12455a95caaSYouMin Chen 'sr_when_odtoff' : 0, 12555a95caaSYouMin Chen} 12655a95caaSYouMin Chen 12755a95caaSYouMin Chen# struct ddr2_3_4_lp2_3_info_v5 12855a95caaSYouMin Chenddr2_3_4_lp2_3_info_v5 = { 12955a95caaSYouMin Chen 'ddr_freq0_1' : 0, 13055a95caaSYouMin Chen 'ddr_freq2_3' : 0, 13155a95caaSYouMin Chen 'ddr_freq4_5' : 0, 13255a95caaSYouMin Chen 'drv_when_odten' : 0, 13355a95caaSYouMin Chen 'drv_when_odtoff' : 0, 13455a95caaSYouMin Chen 'odt_info' : 0, 13555a95caaSYouMin Chen 'odten_freq' : 0, 13655a95caaSYouMin Chen 'sr_when_odten' : 0, 13755a95caaSYouMin Chen 'sr_when_odtoff' : 0, 13855a95caaSYouMin Chen 'vref_when_odten' : 0, 13955a95caaSYouMin Chen 'vref_when_odtoff' : 0, 14055a95caaSYouMin Chen} 14155a95caaSYouMin Chen 14255a95caaSYouMin Chen# struct lp4_info 14355a95caaSYouMin Chenlp4_info = { 14455a95caaSYouMin Chen 'ddr_freq0_1' : 0, 14555a95caaSYouMin Chen 'ddr_freq2_3' : 0, 14655a95caaSYouMin Chen 'ddr_freq4_5' : 0, 14755a95caaSYouMin Chen 'drv_when_odten' : 0, 14855a95caaSYouMin Chen 'drv_when_odtoff' : 0, 14955a95caaSYouMin Chen 'odt_info' : 0, 15055a95caaSYouMin Chen 'dq_odten_freq' : 0, 15155a95caaSYouMin Chen 'sr_when_odten' : 0, 15255a95caaSYouMin Chen 'sr_when_odtoff' : 0, 15355a95caaSYouMin Chen 'ca_odten_freq' : 0, 15455a95caaSYouMin Chen 'cs_drv_ca_odt_info' : 0, 15555a95caaSYouMin Chen 'vref_when_odten' : 0, 15655a95caaSYouMin Chen 'vref_when_odtoff' : 0, 15755a95caaSYouMin Chen} 15855a95caaSYouMin Chen 15955a95caaSYouMin Chen# struct dq_map_info 16055a95caaSYouMin Chendq_map_info = { 16155a95caaSYouMin Chen 'byte_map_0' : 0, 16255a95caaSYouMin Chen 'byte_map_1' : 0, 16355a95caaSYouMin Chen 'lp3_dq0_7_map' : 0, 16455a95caaSYouMin Chen 'lp2_dq0_7_map' : 0, 16555a95caaSYouMin Chen 'ddr4_dq_map_0' : 0, 16655a95caaSYouMin Chen 'ddr4_dq_map_1' : 0, 16755a95caaSYouMin Chen 'ddr4_dq_map_2' : 0, 16855a95caaSYouMin Chen 'ddr4_dq_map_3' : 0, 16955a95caaSYouMin Chen} 17055a95caaSYouMin Chen 17155a95caaSYouMin Chen# struct hash_info 17255a95caaSYouMin Chenhash_info = { 17355a95caaSYouMin Chen 'ch_mask_0' : 0, 17455a95caaSYouMin Chen 'ch_mask_1' : 0, 17555a95caaSYouMin Chen 'bank_mask_0' : 0, 17655a95caaSYouMin Chen 'bank_mask_1' : 0, 17755a95caaSYouMin Chen 'bank_mask_2' : 0, 17855a95caaSYouMin Chen 'bank_mask_3' : 0, 17955a95caaSYouMin Chen 'rank_mask0' : 0, 18055a95caaSYouMin Chen 'rank_mask1' : 0, 18155a95caaSYouMin Chen} 18255a95caaSYouMin Chen 183*4026ce53SZhihuan Heuart_id_2_iomux = { 184*4026ce53SZhihuan He # uart0 : m0 : addr, iomux addr0, iomux mask0, iomux val0, iomux addr1, iomux mask1, iomux val1... 185*4026ce53SZhihuan He ('rk3568', 'rk3566', 'rk356x') : { 186*4026ce53SZhihuan He 'uart0' : {'m0' : [0xfdd50000, 0xfdc20100, 0, 0x3000000, 0xfdc20010, 0, 0x770033, 0, 0, 0]}, 187*4026ce53SZhihuan He 'uart1' : {'m0' : [0xfe650000, 0xfdc6030c, 0, 0x1000000, 0xfdc60028, 0, 0x70002000, 0xfdc6002c, 0, 0x70002], 188*4026ce53SZhihuan He 'm1' : [0xfe650000, 0xfdc6030c, 0, 0x1000100, 0xfdc6005c, 0, 0x77004400, 0, 0, 0]}, 189*4026ce53SZhihuan He 'uart2' : {'m0' : [0xfe660000, 0xfdc6030c, 0, 0x0c000000, 0xfdc20018, 0, 0x00770011, 0, 0, 0], 190*4026ce53SZhihuan He 'm1' : [0xfe660000, 0xfdc6030c, 0, 0xc000400, 0xfdc6001c, 0, 0x7700220, 0, 0, 0]}, 191*4026ce53SZhihuan He 'uart3' : {'m0' : [0xfe670000, 0xfdc6030c, 0, 0x10000000, 0xfdc60000, 0, 0x770022, 0, 0, 0], 192*4026ce53SZhihuan He 'm1' : [0xfe670000, 0xfdc6030c, 0, 0x10001000, 0xfdc6004c, 0, 0x70004000, 0xfdc60050, 0, 0x70004]}, 193*4026ce53SZhihuan He 'uart4' : {'m0' : [0xfe680000, 0xfdc6030c, 0, 0x40000000, 0xfdc60004, 0, 0x7070202, 0, 0, 0], 194*4026ce53SZhihuan He 'm1' : [0xfe680000, 0xfdc6030c, 0, 0x40004000, 0xfdc60048, 0, 0x7700440, 0, 0, 0]}, 195*4026ce53SZhihuan He 'uart5' : {'m0' : [0xfe690000, 0xfdc60310, 0, 0x10000, 0xfdc60020, 0, 0x7700330, 0, 0, 0], 196*4026ce53SZhihuan He 'm1' : [0xfe690000, 0xfdc60310, 0, 0x10001, 0xfdc60050, 0, 0x77004400, 0, 0, 0]}, 197*4026ce53SZhihuan He 'uart6' : {'m0' : [0xfe6a0000, 0xfdc60310, 0, 0x40000, 0xfdc60020, 0, 0x70003000, 0xfdc60024, 0, 0x70003], 198*4026ce53SZhihuan He 'm1' : [0xfe6a0000, 0xfdc60310, 0, 0x40004, 0xfdc6001c, 0, 0x7700330, 0, 0, 0]}, 199*4026ce53SZhihuan He 'uart7' : {'m0' : [0xfe6b0000, 0xfdc60310, 0, 0x300000, 0xfdc60024, 0, 0x7700330, 0, 0, 0], 200*4026ce53SZhihuan He 'm1' : [0xfe6b0000, 0xfdc60310, 0, 0x300010, 0xfdc60054, 0, 0x770044, 0, 0, 0], 201*4026ce53SZhihuan He 'm2' : [0xfe6b0000, 0xfdc60310, 0, 0x300020, 0xfdc60060, 0, 0x77004400, 0, 0, 0]}, 202*4026ce53SZhihuan He 'uart8' : {'m0' : [0xfe6c0000, 0xfdc60310, 0, 0x400000, 0xfdc60034, 0, 0x7700230, 0, 0, 0], 203*4026ce53SZhihuan He 'm1' : [0xfe6c0000, 0xfdc60310, 0, 0x400040, 0xfdc6003c, 0, 0x70074004, 0, 0, 0]}, 204*4026ce53SZhihuan He 'uart9' : {'m0' : [0xfe6d0000, 0xfdc60310, 0, 0x3000000, 0xfdc60024, 0, 0x70003000, 0xfdc60028, 0, 0x70003], 205*4026ce53SZhihuan He 'm1' : [0xfe6d0000, 0xfdc60310, 0, 0x3000100, 0xfdc60074, 0, 0x7700440, 0, 0, 0], 206*4026ce53SZhihuan He 'm2' : [0xfe6d0000, 0xfdc60310, 0, 0x3000200, 0xfdc60064, 0, 0x770044, 0, 0, 0]}, 207*4026ce53SZhihuan He }, 208*4026ce53SZhihuan He ('rk3528') : { 209*4026ce53SZhihuan He 'uart0' : {'m0' : [0xff9f0000, 0xff550094, 0, 0xf0001000, 0xff550098, 0, 0xf0001, 0, 0, 0], 210*4026ce53SZhihuan He 'm1' : [0xff9f0000, 0xff570040, 0, 0xf0002, 0xff570040, 0, 0xf00020, 0, 0, 0]}, 211*4026ce53SZhihuan He 'uart1' : {'m0' : [0xff9f8000, 0xff560084, 0, 0xf0002000, 0xff560084, 0, 0xf000200, 0, 0, 0], 212*4026ce53SZhihuan He 'm1' : [0xff9f8000, 0xff550094, 0, 0xf000200, 0xff550094, 0, 0xf00020, 0, 0, 0]}, 213*4026ce53SZhihuan He 'uart2' : {'m0' : [0xffa00000, 0xff560060, 0, 0xf0001, 0xff560060, 0, 0xf00010, 0, 0, 0], 214*4026ce53SZhihuan He 'm1' : [0xffa00000, 0xff560028, 0, 0xf0001, 0xff560028, 0, 0xf00010, 0, 0, 0]}, 215*4026ce53SZhihuan He 'uart3' : {'m0' : [0xffa08000, 0xff550088, 0, 0xf0002, 0xff550088, 0, 0xf00020, 0, 0, 0], 216*4026ce53SZhihuan He 'm1' : [0xffa08000, 0xff55008c, 0, 0xf0003000, 0xff550090, 0, 0xf0003, 0, 0, 0]}, 217*4026ce53SZhihuan He 'uart4' : {'m0' : [0xffa10000, 0xff570040, 0, 0xf000300, 0xff570040, 0, 0xf0003000, 0, 0, 0]}, 218*4026ce53SZhihuan He 'uart5' : {'m0' : [0xffa18000, 0xff560020, 0, 0xf000200, 0xff560020, 0, 0xf0002000, 0, 0, 0], 219*4026ce53SZhihuan He 'm1' : [0xffa18000, 0xff56003c, 0, 0xf0002, 0xff56003c, 0, 0xf0002000, 0, 0, 0]}, 220*4026ce53SZhihuan He 'uart6' : {'m0' : [0xffa20000, 0xff560064, 0, 0xf0004000, 0xff560064, 0, 0xf000400, 0, 0, 0], 221*4026ce53SZhihuan He 'm1' : [0xffa20000, 0xff560070, 0, 0xf0004000, 0xff560070, 0, 0xf00040, 0, 0, 0]}, 222*4026ce53SZhihuan He 'uart7' : {'m0' : [0xffa28000, 0xff560068, 0, 0xf0004000, 0xff560068, 0, 0xf000400, 0, 0, 0], 223*4026ce53SZhihuan He 'm1' : [0xffa28000, 0xff560028, 0, 0xf0004000, 0xff560028, 0, 0xf000400, 0, 0, 0]}, 224*4026ce53SZhihuan He 225*4026ce53SZhihuan He }, 226*4026ce53SZhihuan He} 227*4026ce53SZhihuan He 228*4026ce53SZhihuan Heuart_iomux_info = { 229*4026ce53SZhihuan He 'uart_addr' : 0, 230*4026ce53SZhihuan He} 231*4026ce53SZhihuan He 23255a95caaSYouMin Chen# struct sdram_head_info_v2 23355a95caaSYouMin Chensdram_head_info_v2 = { 23455a95caaSYouMin Chen 'global_info' : global_info.copy(), 23555a95caaSYouMin Chen 'ddr2_info' : ddr2_3_4_lp2_3_info.copy(), 23655a95caaSYouMin Chen 'ddr3_info' : ddr2_3_4_lp2_3_info.copy(), 23755a95caaSYouMin Chen 'ddr4_info' : ddr2_3_4_lp2_3_info.copy(), 23855a95caaSYouMin Chen 'ddr5_info' : ddr2_3_4_lp2_3_info.copy(), 23955a95caaSYouMin Chen 'lp2_info' : ddr2_3_4_lp2_3_info.copy(), 24055a95caaSYouMin Chen 'lp3_info' : ddr2_3_4_lp2_3_info.copy(), 24155a95caaSYouMin Chen 'lp4_info' : lp4_info.copy(), 24255a95caaSYouMin Chen 'dq_map_info' : dq_map_info.copy(), 24355a95caaSYouMin Chen 'lp4x_info' : lp4_info.copy(), 24455a95caaSYouMin Chen 'lp5_info' : lp4_info.copy(), 24555a95caaSYouMin Chen 'lp4_4x_hash_info' : hash_info.copy(), 24655a95caaSYouMin Chen 'lp5_hash_info' : hash_info.copy(), 24755a95caaSYouMin Chen 'ddr4_hash_info' : hash_info.copy(), 24855a95caaSYouMin Chen 'lp3_hash_info' : hash_info.copy(), 24955a95caaSYouMin Chen 'ddr3_hash_info' : hash_info.copy(), 25055a95caaSYouMin Chen 'lp2_hash_info' : hash_info.copy(), 25155a95caaSYouMin Chen 'ddr2_hash_info' : hash_info.copy(), 25255a95caaSYouMin Chen 'ddr5_hash_info' : hash_info.copy(), 25355a95caaSYouMin Chen} 25455a95caaSYouMin Chen 25555a95caaSYouMin Chen# struct sdram_head_info_v5 25655a95caaSYouMin Chensdram_head_info_v5 = { 25755a95caaSYouMin Chen 'global_info' : global_info.copy(), 25855a95caaSYouMin Chen 'ddr2_info' : ddr2_3_4_lp2_3_info_v5.copy(), 25955a95caaSYouMin Chen 'ddr3_info' : ddr2_3_4_lp2_3_info_v5.copy(), 26055a95caaSYouMin Chen 'ddr4_info' : ddr2_3_4_lp2_3_info_v5.copy(), 26155a95caaSYouMin Chen 'ddr5_info' : ddr2_3_4_lp2_3_info_v5.copy(), 26255a95caaSYouMin Chen 'lp2_info' : ddr2_3_4_lp2_3_info_v5.copy(), 26355a95caaSYouMin Chen 'lp3_info' : ddr2_3_4_lp2_3_info_v5.copy(), 26455a95caaSYouMin Chen 'lp4_info' : lp4_info.copy(), 26555a95caaSYouMin Chen 'dq_map_info' : dq_map_info.copy(), 26655a95caaSYouMin Chen 'lp4x_info' : lp4_info.copy(), 26755a95caaSYouMin Chen 'lp5_info' : lp4_info.copy(), 26855a95caaSYouMin Chen 'lp4_4x_hash_info' : hash_info.copy(), 26955a95caaSYouMin Chen 'lp5_hash_info' : hash_info.copy(), 27055a95caaSYouMin Chen 'ddr4_hash_info' : hash_info.copy(), 27155a95caaSYouMin Chen 'lp3_hash_info' : hash_info.copy(), 27255a95caaSYouMin Chen 'ddr3_hash_info' : hash_info.copy(), 27355a95caaSYouMin Chen 'lp2_hash_info' : hash_info.copy(), 27455a95caaSYouMin Chen 'ddr2_hash_info' : hash_info.copy(), 27555a95caaSYouMin Chen 'ddr5_hash_info' : hash_info.copy(), 27655a95caaSYouMin Chen} 27755a95caaSYouMin Chen 278*4026ce53SZhihuan He# struct sdram_head_info_v6 279*4026ce53SZhihuan Hesdram_head_info_v6 = { 280*4026ce53SZhihuan He 'global_info' : global_info.copy(), 281*4026ce53SZhihuan He 'ddr2_info' : ddr2_3_4_lp2_3_info_v5.copy(), 282*4026ce53SZhihuan He 'ddr3_info' : ddr2_3_4_lp2_3_info_v5.copy(), 283*4026ce53SZhihuan He 'ddr4_info' : ddr2_3_4_lp2_3_info_v5.copy(), 284*4026ce53SZhihuan He 'ddr5_info' : ddr2_3_4_lp2_3_info_v5.copy(), 285*4026ce53SZhihuan He 'lp2_info' : ddr2_3_4_lp2_3_info_v5.copy(), 286*4026ce53SZhihuan He 'lp3_info' : ddr2_3_4_lp2_3_info_v5.copy(), 287*4026ce53SZhihuan He 'lp4_info' : lp4_info.copy(), 288*4026ce53SZhihuan He 'dq_map_info' : dq_map_info.copy(), 289*4026ce53SZhihuan He 'lp4x_info' : lp4_info.copy(), 290*4026ce53SZhihuan He 'lp5_info' : lp4_info.copy(), 291*4026ce53SZhihuan He 'lp4_4x_hash_info' : hash_info.copy(), 292*4026ce53SZhihuan He 'lp5_hash_info' : hash_info.copy(), 293*4026ce53SZhihuan He 'ddr4_hash_info' : hash_info.copy(), 294*4026ce53SZhihuan He 'lp3_hash_info' : hash_info.copy(), 295*4026ce53SZhihuan He 'ddr3_hash_info' : hash_info.copy(), 296*4026ce53SZhihuan He 'lp2_hash_info' : hash_info.copy(), 297*4026ce53SZhihuan He 'ddr2_hash_info' : hash_info.copy(), 298*4026ce53SZhihuan He 'ddr5_hash_info' : hash_info.copy(), 299*4026ce53SZhihuan He 'uart_iomux_info' : uart_iomux_info.copy(), 300*4026ce53SZhihuan He} 301*4026ce53SZhihuan He 30255a95caaSYouMin Chensdram_head_info_v0 = [[0xc, 0], [0x10, 0], [0x14, 0], [0x18, 0], [0x1c, 0], [0x20, 0], [0x24, 0]] 30355a95caaSYouMin Chen 30455a95caaSYouMin Chen# struct base_info_full 30555a95caaSYouMin Chenbase_info_full = { 30655a95caaSYouMin Chen 'start tag': {'value': 0, 'num_base': 'hex', 'index': 'null', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 0, 'v0_info': [0x0, 0, 0xffffffff]}, 30755a95caaSYouMin Chen 30855a95caaSYouMin 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]}, 30955a95caaSYouMin 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]}, 31055a95caaSYouMin 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]}, 31155a95caaSYouMin 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]}, 31255a95caaSYouMin 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]}, 31355a95caaSYouMin 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]}, 31455a95caaSYouMin Chen 'lp4x_freq': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'ddr_freq0_1', 'shift': 0, 'mask': 0xfff, 'version': 2}, 31555a95caaSYouMin Chen 'lp5_freq': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ddr_freq0_1', 'shift': 0, 'mask': 0xfff, 'version': 2}, 31655a95caaSYouMin 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]}, 31755a95caaSYouMin 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]}, 31855a95caaSYouMin 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]}, 31955a95caaSYouMin 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]}, 32055a95caaSYouMin 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]}, 32155a95caaSYouMin 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]}, 32255a95caaSYouMin 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]}, 32355a95caaSYouMin 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]}, 32455a95caaSYouMin 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]}, 32555a95caaSYouMin 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]}, 32655a95caaSYouMin Chen 'link_ecc_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 28, 'mask': 0x1, 'version': 2}, 32755a95caaSYouMin Chen 'per_bank_ref_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 27, 'mask': 0x1, 'version': 2}, 32855a95caaSYouMin 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]}, 32955a95caaSYouMin Chen 'auto_precharge_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 25, 'mask': 0x1, 'version': 2}, 33055a95caaSYouMin Chen 'res_space_remap_all': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 24, 'mask': 0x1, 'version': 2}, 33155a95caaSYouMin Chen 'res_space_remap_portion': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 20, 'mask': 0x1, 'version': 2}, 33255a95caaSYouMin Chen 'rd_vref_scan_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 21, 'mask': 0x1, 'version': 2}, 33355a95caaSYouMin Chen 'wr_vref_scan_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 22, 'mask': 0x1, 'version': 2}, 33455a95caaSYouMin Chen 'eye_2d_scan_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 23, 'mask': 0x1, 'version': 2}, 33555a95caaSYouMin Chen 'dis_train_print': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 19, 'mask': 0x1, 'version': 2}, 33655a95caaSYouMin 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]}, 33755a95caaSYouMin 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]}, 33855a95caaSYouMin 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]}, 33955a95caaSYouMin 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]}, 34055a95caaSYouMin Chen 'reserved_global_info_2t_bit31': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'info_2t', 'shift': 31, 'mask': 0x1, 'version': 2}, 34155a95caaSYouMin Chen 'pstore_base_addr': {'value': 0, 'num_base': 'hex', 'index': 'global_index', 'position': 'reserved_0', 'shift': 16, 'mask': 0xffff, 'version': 2}, 34255a95caaSYouMin Chen 'pstore_buf_size': {'value': 0, 'num_base': 'hex', 'index': 'global_index', 'position': 'reserved_0', 'shift': 12, 'mask': 0xf, 'version': 2}, 34355a95caaSYouMin Chen 'uboot_log_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_0', 'shift': 4, 'mask': 0x1, 'version': 2}, 34455a95caaSYouMin Chen 'atf_log_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_0', 'shift': 3, 'mask': 0x1, 'version': 2}, 34555a95caaSYouMin Chen 'optee_log_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_0', 'shift': 2, 'mask': 0x1, 'version': 2}, 34655a95caaSYouMin Chen 'spl_log_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_0', 'shift': 1, 'mask': 0x1, 'version': 2}, 34755a95caaSYouMin Chen 'tpl_log_en': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_0', 'shift': 0, 'mask': 0x1, 'version': 2}, 34855a95caaSYouMin Chen 'reserved_global_reserved_0_bit5_11': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_0', 'shift': 5, 'mask': 0x7f, 'version': 2}, 349*4026ce53SZhihuan He 'periodic_interval': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_1', 'shift': 11, 'mask': 0x7f, 'version': 2}, 350*4026ce53SZhihuan He 'trfc_mode': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_1', 'shift': 9, 'mask': 0x3, 'version': 2}, 35155a95caaSYouMin Chen 'first_init_dram_type': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_1', 'shift': 5, 'mask': 0xf, 'version': 2}, 35255a95caaSYouMin Chen 'dfs_disable': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_1', 'shift': 4, 'mask': 0x1, 'version': 2}, 35355a95caaSYouMin Chen 'pageclose': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_1', 'shift': 3, 'mask': 0x1, 'version': 2}, 35455a95caaSYouMin Chen 'boot_fsp': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_1', 'shift': 0, 'mask': 0x7, 'version': 2}, 355*4026ce53SZhihuan He 'reserved_global_reserved_1_bit9_31': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_1', 'shift': 18, 'mask': 0x3fff, 'version': 2}, 35655a95caaSYouMin Chen 'reserved_global_reserved_2_bit0_31': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_2', 'shift': 0, 'mask': 0xffffffff, 'version': 2}, 35755a95caaSYouMin Chen 'reserved_global_reserved_3_bit0_31': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_3', 'shift': 0, 'mask': 0xffffffff, 'version': 2}, 35855a95caaSYouMin Chen 35955a95caaSYouMin Chen 'ddr2_f1_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'ddr_freq0_1', 'shift': 12, 'mask': 0xfff, 'version': 2}, 36055a95caaSYouMin 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}, 36155a95caaSYouMin Chen 'ddr2_f2_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'ddr_freq2_3', 'shift': 0, 'mask': 0xfff, 'version': 2}, 36255a95caaSYouMin Chen 'ddr2_f3_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'ddr_freq2_3', 'shift': 12, 'mask': 0xfff, 'version': 2}, 36355a95caaSYouMin 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}, 36455a95caaSYouMin Chen 'ddr2_f4_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'ddr_freq4_5', 'shift': 0, 'mask': 0xfff, 'version': 2}, 36555a95caaSYouMin Chen 'ddr2_f5_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'ddr_freq4_5', 'shift': 12, 'mask': 0xfff, 'version': 2}, 36655a95caaSYouMin 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}, 36755a95caaSYouMin 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}, 36855a95caaSYouMin 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}, 36955a95caaSYouMin 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}, 37055a95caaSYouMin 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}, 37155a95caaSYouMin 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}, 37255a95caaSYouMin 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}, 37355a95caaSYouMin 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}, 37455a95caaSYouMin 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}, 37555a95caaSYouMin Chen 'phy_ddr2_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'odt_info', 'shift': 8, 'mask': 0x3ff, 'version': 2}, 37655a95caaSYouMin Chen 'ddr2_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 37755a95caaSYouMin Chen 'phy_ddr2_odt_pull_up_en': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'odt_info', 'shift': 18, 'mask': 0x1, 'version': 2}, 37855a95caaSYouMin Chen 'phy_ddr2_odt_pull_dn_en': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'odt_info', 'shift': 19, 'mask': 0x1, 'version': 2}, 37955a95caaSYouMin Chen 'reserved_ddr2_odt_info_bit20_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'odt_info', 'shift': 20, 'mask': 0xfff, 'version': 2}, 38055a95caaSYouMin Chen 'phy_ddr2_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'odten_freq', 'shift': 12, 'mask': 0xfff, 'version': 2}, 38155a95caaSYouMin Chen 'ddr2_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 38255a95caaSYouMin Chen 'reserved_ddr2_odten_freq_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'odten_freq', 'shift': 24, 'mask': 0xff, 'version': 2}, 38355a95caaSYouMin 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}, 38455a95caaSYouMin 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}, 38555a95caaSYouMin 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}, 38655a95caaSYouMin 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}, 38755a95caaSYouMin 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}, 38855a95caaSYouMin 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}, 38955a95caaSYouMin 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}, 39055a95caaSYouMin 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}, 39155a95caaSYouMin 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}, 39255a95caaSYouMin Chen 'ddr2_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'vref_when_odten', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 39355a95caaSYouMin Chen 'ddr2_ca_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'vref_when_odten', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 39455a95caaSYouMin 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}, 39555a95caaSYouMin 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}, 39655a95caaSYouMin Chen 'ddr2_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'vref_when_odtoff', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 39755a95caaSYouMin Chen 'ddr2_ca_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr2_index', 'position': 'vref_when_odtoff', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 39855a95caaSYouMin 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}, 39955a95caaSYouMin Chen 40055a95caaSYouMin Chen 'ddr3_f1_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'ddr_freq0_1', 'shift': 12, 'mask': 0xfff, 'version': 2}, 40155a95caaSYouMin 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}, 40255a95caaSYouMin Chen 'ddr3_f2_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'ddr_freq2_3', 'shift': 0, 'mask': 0xfff, 'version': 2}, 40355a95caaSYouMin Chen 'ddr3_f3_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'ddr_freq2_3', 'shift': 12, 'mask': 0xfff, 'version': 2}, 40455a95caaSYouMin 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}, 40555a95caaSYouMin Chen 'ddr3_f4_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'ddr_freq4_5', 'shift': 0, 'mask': 0xfff, 'version': 2}, 40655a95caaSYouMin Chen 'ddr3_f5_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'ddr_freq4_5', 'shift': 12, 'mask': 0xfff, 'version': 2}, 40755a95caaSYouMin 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}, 40855a95caaSYouMin 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}, 40955a95caaSYouMin 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}, 41055a95caaSYouMin 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}, 41155a95caaSYouMin 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}, 41255a95caaSYouMin 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}, 41355a95caaSYouMin 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}, 41455a95caaSYouMin 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}, 41555a95caaSYouMin 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}, 41655a95caaSYouMin Chen 'phy_ddr3_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'odt_info', 'shift': 8, 'mask': 0x3ff, 'version': 2}, 41755a95caaSYouMin Chen 'ddr3_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 41855a95caaSYouMin Chen 'phy_ddr3_odt_pull_up_en': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'odt_info', 'shift': 18, 'mask': 0x1, 'version': 2}, 41955a95caaSYouMin Chen 'phy_ddr3_odt_pull_dn_en': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'odt_info', 'shift': 19, 'mask': 0x1, 'version': 2}, 42055a95caaSYouMin Chen 'reserved_ddr3_odt_info_bit20_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'odt_info', 'shift': 20, 'mask': 0xfff, 'version': 2}, 42155a95caaSYouMin Chen 'phy_ddr3_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'odten_freq', 'shift': 12, 'mask': 0xfff, 'version': 2}, 42255a95caaSYouMin Chen 'ddr3_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 42355a95caaSYouMin Chen 'reserved_ddr3_odten_freq_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'odten_freq', 'shift': 24, 'mask': 0xff, 'version': 2}, 42455a95caaSYouMin 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}, 42555a95caaSYouMin 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}, 42655a95caaSYouMin 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}, 42755a95caaSYouMin 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}, 42855a95caaSYouMin 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}, 42955a95caaSYouMin 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}, 43055a95caaSYouMin 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}, 43155a95caaSYouMin 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}, 43255a95caaSYouMin 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}, 43355a95caaSYouMin Chen 'ddr3_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'vref_when_odten', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 43455a95caaSYouMin Chen 'ddr3_ca_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'vref_when_odten', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 43555a95caaSYouMin 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}, 43655a95caaSYouMin 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}, 43755a95caaSYouMin Chen 'ddr3_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'vref_when_odtoff', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 43855a95caaSYouMin Chen 'ddr3_ca_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr3_index', 'position': 'vref_when_odtoff', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 43955a95caaSYouMin 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}, 44055a95caaSYouMin Chen 44155a95caaSYouMin Chen 'ddr4_f1_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'ddr_freq0_1', 'shift': 12, 'mask': 0xfff, 'version': 2}, 44255a95caaSYouMin 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}, 44355a95caaSYouMin Chen 'ddr4_f2_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'ddr_freq2_3', 'shift': 0, 'mask': 0xfff, 'version': 2}, 44455a95caaSYouMin Chen 'ddr4_f3_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'ddr_freq2_3', 'shift': 12, 'mask': 0xfff, 'version': 2}, 44555a95caaSYouMin 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}, 44655a95caaSYouMin Chen 'ddr4_f4_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'ddr_freq4_5', 'shift': 0, 'mask': 0xfff, 'version': 2}, 44755a95caaSYouMin Chen 'ddr4_f5_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'ddr_freq4_5', 'shift': 12, 'mask': 0xfff, 'version': 2}, 44855a95caaSYouMin 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}, 44955a95caaSYouMin 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}, 45055a95caaSYouMin 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}, 45155a95caaSYouMin 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}, 45255a95caaSYouMin 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}, 45355a95caaSYouMin 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}, 45455a95caaSYouMin 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}, 45555a95caaSYouMin 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}, 45655a95caaSYouMin 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}, 45755a95caaSYouMin Chen 'phy_ddr4_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'odt_info', 'shift': 8, 'mask': 0x3ff, 'version': 2}, 45855a95caaSYouMin Chen 'ddr4_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 45955a95caaSYouMin Chen 'phy_ddr4_odt_pull_up_en': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'odt_info', 'shift': 18, 'mask': 0x1, 'version': 2}, 46055a95caaSYouMin Chen 'phy_ddr4_odt_pull_dn_en': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'odt_info', 'shift': 19, 'mask': 0x1, 'version': 2}, 46155a95caaSYouMin Chen 'reserved_ddr4_odt_info_bit20_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'odt_info', 'shift': 20, 'mask': 0xfff, 'version': 2}, 46255a95caaSYouMin Chen 'phy_ddr4_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'odten_freq', 'shift': 12, 'mask': 0xfff, 'version': 2}, 46355a95caaSYouMin Chen 'ddr4_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 46455a95caaSYouMin Chen 'reserved_ddr4_odten_freq_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'odten_freq', 'shift': 24, 'mask': 0xff, 'version': 2}, 46555a95caaSYouMin 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}, 46655a95caaSYouMin 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}, 46755a95caaSYouMin 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}, 46855a95caaSYouMin 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}, 46955a95caaSYouMin 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}, 47055a95caaSYouMin 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}, 47155a95caaSYouMin 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}, 47255a95caaSYouMin 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}, 47355a95caaSYouMin 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}, 47455a95caaSYouMin Chen 'ddr4_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'vref_when_odten', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 47555a95caaSYouMin Chen 'ddr4_ca_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'vref_when_odten', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 47655a95caaSYouMin 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}, 47755a95caaSYouMin 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}, 47855a95caaSYouMin Chen 'ddr4_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'vref_when_odtoff', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 47955a95caaSYouMin Chen 'ddr4_ca_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'ddr4_index', 'position': 'vref_when_odtoff', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 48055a95caaSYouMin 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}, 48155a95caaSYouMin Chen 48255a95caaSYouMin Chen 'lp2_f1_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'ddr_freq0_1', 'shift': 12, 'mask': 0xfff, 'version': 2}, 48355a95caaSYouMin 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}, 48455a95caaSYouMin Chen 'lp2_f2_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'ddr_freq2_3', 'shift': 0, 'mask': 0xfff, 'version': 2}, 48555a95caaSYouMin Chen 'lp2_f3_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'ddr_freq2_3', 'shift': 12, 'mask': 0xfff, 'version': 2}, 48655a95caaSYouMin 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}, 48755a95caaSYouMin Chen 'lp2_f4_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'ddr_freq4_5', 'shift': 0, 'mask': 0xfff, 'version': 2}, 48855a95caaSYouMin Chen 'lp2_f5_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'ddr_freq4_5', 'shift': 12, 'mask': 0xfff, 'version': 2}, 48955a95caaSYouMin 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}, 49055a95caaSYouMin 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}, 49155a95caaSYouMin 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}, 49255a95caaSYouMin 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}, 49355a95caaSYouMin 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}, 49455a95caaSYouMin 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}, 49555a95caaSYouMin 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}, 49655a95caaSYouMin 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}, 49755a95caaSYouMin 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}, 49855a95caaSYouMin Chen 'phy_lp2_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'odt_info', 'shift': 8, 'mask': 0x3ff, 'version': 2}, 49955a95caaSYouMin Chen 'lp2_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 50055a95caaSYouMin Chen 'phy_lp2_odt_pull_up_en': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'odt_info', 'shift': 18, 'mask': 0x1, 'version': 2}, 50155a95caaSYouMin Chen 'phy_lp2_odt_pull_dn_en': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'odt_info', 'shift': 19, 'mask': 0x1, 'version': 2}, 50255a95caaSYouMin Chen 'reserved_lp2_odt_info_bit20_31': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'odt_info', 'shift': 20, 'mask': 0xfff, 'version': 2}, 50355a95caaSYouMin Chen 'phy_lp2_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'odten_freq', 'shift': 12, 'mask': 0xfff, 'version': 2}, 50455a95caaSYouMin Chen 'lp2_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 50555a95caaSYouMin Chen 'reserved_lp2_odten_freq_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'odten_freq', 'shift': 24, 'mask': 0xff, 'version': 2}, 50655a95caaSYouMin 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}, 50755a95caaSYouMin 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}, 50855a95caaSYouMin 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}, 50955a95caaSYouMin 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}, 51055a95caaSYouMin 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}, 51155a95caaSYouMin 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}, 51255a95caaSYouMin 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}, 51355a95caaSYouMin 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}, 51455a95caaSYouMin 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}, 51555a95caaSYouMin Chen 'lp2_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'vref_when_odten', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 51655a95caaSYouMin Chen 'lp2_ca_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'vref_when_odten', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 51755a95caaSYouMin 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}, 51855a95caaSYouMin 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}, 51955a95caaSYouMin Chen 'lp2_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'vref_when_odtoff', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 52055a95caaSYouMin Chen 'lp2_ca_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp2_index', 'position': 'vref_when_odtoff', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 52155a95caaSYouMin 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}, 52255a95caaSYouMin Chen 52355a95caaSYouMin Chen 'lp3_f1_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'ddr_freq0_1', 'shift': 12, 'mask': 0xfff, 'version': 2}, 52455a95caaSYouMin 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}, 52555a95caaSYouMin Chen 'lp3_f2_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'ddr_freq2_3', 'shift': 0, 'mask': 0xfff, 'version': 2}, 52655a95caaSYouMin Chen 'lp3_f3_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'ddr_freq2_3', 'shift': 12, 'mask': 0xfff, 'version': 2}, 52755a95caaSYouMin 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}, 52855a95caaSYouMin Chen 'lp3_f4_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'ddr_freq4_5', 'shift': 0, 'mask': 0xfff, 'version': 2}, 52955a95caaSYouMin Chen 'lp3_f5_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'ddr_freq4_5', 'shift': 12, 'mask': 0xfff, 'version': 2}, 53055a95caaSYouMin 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}, 53155a95caaSYouMin 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}, 53255a95caaSYouMin 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}, 53355a95caaSYouMin 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}, 53455a95caaSYouMin 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}, 53555a95caaSYouMin 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}, 53655a95caaSYouMin 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}, 53755a95caaSYouMin 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}, 53855a95caaSYouMin 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}, 53955a95caaSYouMin Chen 'phy_lp3_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'odt_info', 'shift': 8, 'mask': 0x3ff, 'version': 2}, 54055a95caaSYouMin Chen 'lp3_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 54155a95caaSYouMin Chen 'phy_lp3_odt_pull_up_en': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'odt_info', 'shift': 18, 'mask': 0x1, 'version': 2}, 54255a95caaSYouMin Chen 'phy_lp3_odt_pull_dn_en': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'odt_info', 'shift': 19, 'mask': 0x1, 'version': 2}, 54355a95caaSYouMin Chen 'reserved_lp3_odt_info_bit20_31': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'odt_info', 'shift': 20, 'mask': 0xfff, 'version': 2}, 54455a95caaSYouMin Chen 'phy_lp3_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'odten_freq', 'shift': 12, 'mask': 0xfff, 'version': 2}, 54555a95caaSYouMin Chen 'lp3_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 54655a95caaSYouMin Chen 'reserved_lp3_odten_freq_bit24_31': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'odten_freq', 'shift': 24, 'mask': 0xff, 'version': 2}, 54755a95caaSYouMin 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}, 54855a95caaSYouMin 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}, 54955a95caaSYouMin 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}, 55055a95caaSYouMin 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}, 55155a95caaSYouMin 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}, 55255a95caaSYouMin 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}, 55355a95caaSYouMin 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}, 55455a95caaSYouMin 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}, 55555a95caaSYouMin 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}, 55655a95caaSYouMin Chen 'lp3_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'vref_when_odten', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 55755a95caaSYouMin Chen 'lp3_ca_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'vref_when_odten', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 55855a95caaSYouMin 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}, 55955a95caaSYouMin 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}, 56055a95caaSYouMin Chen 'lp3_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'vref_when_odtoff', 'shift': 10, 'mask': 0x3ff, 'version': 5}, 56155a95caaSYouMin Chen 'lp3_ca_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp3_index', 'position': 'vref_when_odtoff', 'shift': 20, 'mask': 0x3ff, 'version': 5}, 56255a95caaSYouMin 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}, 56355a95caaSYouMin Chen 56455a95caaSYouMin Chen 'lp4_f1_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'ddr_freq0_1', 'shift': 12, 'mask': 0xfff, 'version': 2}, 56555a95caaSYouMin 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}, 56655a95caaSYouMin Chen 'lp4_f2_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'ddr_freq2_3', 'shift': 0, 'mask': 0xfff, 'version': 2}, 56755a95caaSYouMin Chen 'lp4_f3_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'ddr_freq2_3', 'shift': 12, 'mask': 0xfff, 'version': 2}, 56855a95caaSYouMin 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}, 56955a95caaSYouMin Chen 'lp4_f4_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'ddr_freq4_5', 'shift': 0, 'mask': 0xfff, 'version': 2}, 57055a95caaSYouMin Chen 'lp4_f5_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'ddr_freq4_5', 'shift': 12, 'mask': 0xfff, 'version': 2}, 57155a95caaSYouMin 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}, 57255a95caaSYouMin 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}, 57355a95caaSYouMin 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}, 57455a95caaSYouMin 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}, 57555a95caaSYouMin 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}, 57655a95caaSYouMin 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}, 57755a95caaSYouMin 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}, 57855a95caaSYouMin 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}, 57955a95caaSYouMin 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}, 58055a95caaSYouMin Chen 'phy_lp4_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'odt_info', 'shift': 8, 'mask': 0x3ff, 'version': 2}, 58155a95caaSYouMin Chen 'lp4_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 58255a95caaSYouMin Chen 'lp4_ca_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'odt_info', 'shift': 18, 'mask': 0xff, 'version': 2}, 58355a95caaSYouMin Chen 'lp4_drv_pu_cal_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'odt_info', 'shift': 26, 'mask': 0x1, 'version': 2}, 58455a95caaSYouMin Chen 'lp4_drv_pu_cal_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'odt_info', 'shift': 27, 'mask': 0x1, 'version': 2}, 58555a95caaSYouMin 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}, 58655a95caaSYouMin 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}, 58755a95caaSYouMin Chen 'reserved_lp4_odt_info_bit31': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'odt_info', 'shift': 31, 'mask': 0x1, 'version': 2}, 58855a95caaSYouMin Chen 'phy_lp4_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'dq_odten_freq', 'shift': 12, 'mask': 0xfff, 'version': 2}, 58955a95caaSYouMin Chen 'lp4_dq_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'dq_odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 59055a95caaSYouMin 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}, 59155a95caaSYouMin 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}, 59255a95caaSYouMin 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}, 59355a95caaSYouMin 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}, 59455a95caaSYouMin 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}, 59555a95caaSYouMin 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}, 59655a95caaSYouMin 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}, 59755a95caaSYouMin 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}, 59855a95caaSYouMin 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}, 59955a95caaSYouMin Chen 'lp4_ca_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'ca_odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 60055a95caaSYouMin 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}, 60155a95caaSYouMin 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}, 60255a95caaSYouMin 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}, 60355a95caaSYouMin Chen 'lp4_odte_ck': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'cs_drv_ca_odt_info', 'shift': 16, 'mask': 0x1, 'version': 2}, 60455a95caaSYouMin 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}, 60555a95caaSYouMin 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}, 60655a95caaSYouMin 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}, 60755a95caaSYouMin 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}, 60855a95caaSYouMin Chen 'lp4_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'vref_when_odten', 'shift': 10, 'mask': 0x3ff, 'version': 2}, 60955a95caaSYouMin Chen 'lp4_ca_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'vref_when_odten', 'shift': 20, 'mask': 0x3ff, 'version': 2}, 61055a95caaSYouMin 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}, 61155a95caaSYouMin 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}, 61255a95caaSYouMin Chen 'lp4_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'vref_when_odtoff', 'shift': 10, 'mask': 0x3ff, 'version': 2}, 61355a95caaSYouMin Chen 'lp4_ca_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4_index', 'position': 'vref_when_odtoff', 'shift': 20, 'mask': 0x3ff, 'version': 2}, 61455a95caaSYouMin 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}, 61555a95caaSYouMin Chen 61655a95caaSYouMin Chen 'ddr2_bytes_map': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'byte_map_0', 'shift': 16, 'mask': 0xff, 'version': 2}, 61755a95caaSYouMin Chen 'ddr3_bytes_map': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'byte_map_0', 'shift': 24, 'mask': 0xff, 'version': 2}, 61855a95caaSYouMin Chen 'ddr4_bytes_map': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'byte_map_0', 'shift': 0, 'mask': 0xff, 'version': 2}, 61955a95caaSYouMin 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}, 62055a95caaSYouMin Chen 'lp2_bytes_map': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'byte_map_1', 'shift': 8, 'mask': 0xff, 'version': 2}, 62155a95caaSYouMin Chen 'lp3_bytes_map': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'byte_map_1', 'shift': 16, 'mask': 0xff, 'version': 2}, 62255a95caaSYouMin Chen 'lp4_bytes_map': {'value': 0, 'num_base': 'hex', 'index': 'dq_map_index', 'position': 'byte_map_1', 'shift': 24, 'mask': 0xff, 'version': 2}, 62355a95caaSYouMin 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}, 62455a95caaSYouMin 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}, 62555a95caaSYouMin 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}, 62655a95caaSYouMin 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}, 62755a95caaSYouMin 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}, 62855a95caaSYouMin 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}, 62955a95caaSYouMin 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}, 63055a95caaSYouMin Chen 63155a95caaSYouMin Chen 'lp4x_f1_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'ddr_freq0_1', 'shift': 12, 'mask': 0xfff, 'version': 2}, 63255a95caaSYouMin 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}, 63355a95caaSYouMin Chen 'lp4x_f2_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'ddr_freq2_3', 'shift': 0, 'mask': 0xfff, 'version': 2}, 63455a95caaSYouMin Chen 'lp4x_f3_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'ddr_freq2_3', 'shift': 12, 'mask': 0xfff, 'version': 2}, 63555a95caaSYouMin 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}, 63655a95caaSYouMin Chen 'lp4x_f4_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'ddr_freq4_5', 'shift': 0, 'mask': 0xfff, 'version': 2}, 63755a95caaSYouMin Chen 'lp4x_f5_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'ddr_freq4_5', 'shift': 12, 'mask': 0xfff, 'version': 2}, 63855a95caaSYouMin 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}, 63955a95caaSYouMin 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}, 64055a95caaSYouMin 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}, 64155a95caaSYouMin 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}, 64255a95caaSYouMin 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}, 64355a95caaSYouMin 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}, 64455a95caaSYouMin 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}, 64555a95caaSYouMin 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}, 64655a95caaSYouMin 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}, 64755a95caaSYouMin Chen 'phy_lp4x_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'odt_info', 'shift': 8, 'mask': 0x3ff, 'version': 2}, 64855a95caaSYouMin Chen 'lp4x_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 64955a95caaSYouMin Chen 'lp4x_ca_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'odt_info', 'shift': 18, 'mask': 0xff, 'version': 2}, 65055a95caaSYouMin Chen 'lp4x_drv_pu_cal_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'odt_info', 'shift': 26, 'mask': 0x1, 'version': 2}, 65155a95caaSYouMin Chen 'lp4x_drv_pu_cal_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'odt_info', 'shift': 27, 'mask': 0x1, 'version': 2}, 65255a95caaSYouMin 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}, 65355a95caaSYouMin 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}, 65455a95caaSYouMin Chen 'reserved_lp4x_odt_info_bit31': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'odt_info', 'shift': 31, 'mask': 0x1, 'version': 2}, 65555a95caaSYouMin Chen 'phy_lp4x_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'dq_odten_freq', 'shift': 12, 'mask': 0xfff, 'version': 2}, 65655a95caaSYouMin Chen 'lp4x_dq_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'dq_odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 65755a95caaSYouMin 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}, 65855a95caaSYouMin 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}, 65955a95caaSYouMin 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}, 66055a95caaSYouMin 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}, 66155a95caaSYouMin 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}, 66255a95caaSYouMin 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}, 66355a95caaSYouMin 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}, 66455a95caaSYouMin 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}, 66555a95caaSYouMin 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}, 66655a95caaSYouMin Chen 'lp4x_ca_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'ca_odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 66755a95caaSYouMin 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}, 66855a95caaSYouMin 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}, 66955a95caaSYouMin 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}, 67055a95caaSYouMin Chen 'lp4x_odte_ck': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'cs_drv_ca_odt_info', 'shift': 16, 'mask': 0x1, 'version': 2}, 67155a95caaSYouMin 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}, 67255a95caaSYouMin 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}, 67355a95caaSYouMin 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}, 67455a95caaSYouMin 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}, 67555a95caaSYouMin Chen 'lp4x_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'vref_when_odten', 'shift': 10, 'mask': 0x3ff, 'version': 2}, 67655a95caaSYouMin Chen 'lp4x_ca_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'vref_when_odten', 'shift': 20, 'mask': 0x3ff, 'version': 2}, 67755a95caaSYouMin 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}, 67855a95caaSYouMin 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}, 67955a95caaSYouMin Chen 'lp4x_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'vref_when_odtoff', 'shift': 10, 'mask': 0x3ff, 'version': 2}, 68055a95caaSYouMin Chen 'lp4x_ca_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp4x_index', 'position': 'vref_when_odtoff', 'shift': 20, 'mask': 0x3ff, 'version': 2}, 68155a95caaSYouMin 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}, 68255a95caaSYouMin Chen 68355a95caaSYouMin Chen 'lp5_f1_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ddr_freq0_1', 'shift': 12, 'mask': 0xfff, 'version': 2}, 68455a95caaSYouMin 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}, 68555a95caaSYouMin Chen 'lp5_f2_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ddr_freq2_3', 'shift': 0, 'mask': 0xfff, 'version': 2}, 68655a95caaSYouMin Chen 'lp5_f3_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ddr_freq2_3', 'shift': 12, 'mask': 0xfff, 'version': 2}, 68755a95caaSYouMin 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}, 68855a95caaSYouMin Chen 'lp5_f4_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ddr_freq4_5', 'shift': 0, 'mask': 0xfff, 'version': 2}, 68955a95caaSYouMin Chen 'lp5_f5_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ddr_freq4_5', 'shift': 12, 'mask': 0xfff, 'version': 2}, 69055a95caaSYouMin 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}, 69155a95caaSYouMin 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}, 69255a95caaSYouMin 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}, 69355a95caaSYouMin 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}, 69455a95caaSYouMin 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}, 69555a95caaSYouMin 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}, 69655a95caaSYouMin 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}, 69755a95caaSYouMin 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}, 69855a95caaSYouMin 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}, 69955a95caaSYouMin Chen 'phy_lp5_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'odt_info', 'shift': 8, 'mask': 0x3ff, 'version': 2}, 70055a95caaSYouMin Chen 'lp5_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'odt_info', 'shift': 0, 'mask': 0xff, 'version': 2}, 70155a95caaSYouMin Chen 'lp5_ca_odt_ohm': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'odt_info', 'shift': 18, 'mask': 0xff, 'version': 2}, 70255a95caaSYouMin Chen 'lp5_drv_pu_cal_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'odt_info', 'shift': 26, 'mask': 0x1, 'version': 2}, 70355a95caaSYouMin Chen 'lp5_drv_pu_cal_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'odt_info', 'shift': 27, 'mask': 0x1, 'version': 2}, 70455a95caaSYouMin 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}, 70555a95caaSYouMin 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}, 70655a95caaSYouMin Chen 'reserved_lp5_odt_info_bit31': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'odt_info', 'shift': 31, 'mask': 0x1, 'version': 2}, 70755a95caaSYouMin Chen 'phy_lp5_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'dq_odten_freq', 'shift': 12, 'mask': 0xfff, 'version': 2}, 70855a95caaSYouMin Chen 'lp5_dq_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'dq_odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 70955a95caaSYouMin 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}, 71055a95caaSYouMin 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}, 71155a95caaSYouMin 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}, 71255a95caaSYouMin 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}, 71355a95caaSYouMin 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}, 71455a95caaSYouMin 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}, 71555a95caaSYouMin 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}, 71655a95caaSYouMin 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}, 71755a95caaSYouMin 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}, 71855a95caaSYouMin Chen 'lp5_ca_odten_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ca_odten_freq', 'shift': 0, 'mask': 0xfff, 'version': 2}, 71955a95caaSYouMin Chen 'lp5_wck_odt_en_freq': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ca_odten_freq', 'shift': 12, 'mask': 0xfff, 'version': 2}, 72055a95caaSYouMin Chen 'lp5_wck_odt': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'ca_odten_freq', 'shift': 24, 'mask': 0xff, 'version': 2}, 72155a95caaSYouMin 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}, 72255a95caaSYouMin 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}, 72355a95caaSYouMin Chen 'lp5_odte_ck': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'cs_drv_ca_odt_info', 'shift': 16, 'mask': 0x1, 'version': 2}, 72455a95caaSYouMin 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}, 72555a95caaSYouMin 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}, 72655a95caaSYouMin Chen 'lp5_nt_odt': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'cs_drv_ca_odt_info', 'shift': 24, 'mask': 0xff, 'version': 2}, 72755a95caaSYouMin 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}, 72855a95caaSYouMin 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}, 72955a95caaSYouMin Chen 'lp5_dq_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'vref_when_odten', 'shift': 10, 'mask': 0x3ff, 'version': 2}, 73055a95caaSYouMin Chen 'lp5_ca_vref_when_odten': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'vref_when_odten', 'shift': 20, 'mask': 0x3ff, 'version': 2}, 73155a95caaSYouMin 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}, 73255a95caaSYouMin 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}, 73355a95caaSYouMin Chen 'lp5_dq_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'vref_when_odtoff', 'shift': 10, 'mask': 0x3ff, 'version': 2}, 73455a95caaSYouMin Chen 'lp5_ca_vref_when_odtoff': {'value': 0, 'num_base': 'dec', 'index': 'lp5_index', 'position': 'vref_when_odtoff', 'shift': 20, 'mask': 0x3ff, 'version': 2}, 73555a95caaSYouMin 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}, 73655a95caaSYouMin Chen 73755a95caaSYouMin 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}, 73855a95caaSYouMin 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}, 73955a95caaSYouMin 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}, 74055a95caaSYouMin 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}, 74155a95caaSYouMin 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}, 74255a95caaSYouMin 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}, 74355a95caaSYouMin Chen 'lp4_4x_rank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp4_4x_hash_index', 'position': 'rank_mask0', 'shift': 0, 'mask': 0xffffffff, 'version': 3}, 74455a95caaSYouMin Chen 'lp4_4x_rank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp4_4x_hash_index', 'position': 'rank_mask1', 'shift': 0, 'mask': 0xffffffff, 'version': 3}, 74555a95caaSYouMin Chen 74655a95caaSYouMin Chen 'lp5_ch_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp5_hash_index', 'position': 'ch_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 74755a95caaSYouMin Chen 'lp5_ch_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp5_hash_index', 'position': 'ch_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 74855a95caaSYouMin Chen 'lp5_bank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp5_hash_index', 'position': 'bank_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 74955a95caaSYouMin Chen 'lp5_bank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp5_hash_index', 'position': 'bank_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 75055a95caaSYouMin Chen 'lp5_bank_mask2': {'value': 0, 'num_base': 'hex', 'index': 'lp5_hash_index', 'position': 'bank_mask_2', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 75155a95caaSYouMin Chen 'lp5_bank_mask3': {'value': 0, 'num_base': 'hex', 'index': 'lp5_hash_index', 'position': 'bank_mask_3', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 75255a95caaSYouMin Chen 'lp5_rank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp5_hash_index', 'position': 'rank_mask0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 75355a95caaSYouMin Chen 'lp5_rank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp5_hash_index', 'position': 'rank_mask1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 75455a95caaSYouMin Chen 75555a95caaSYouMin Chen 'ddr4_ch_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr4_hash_index', 'position': 'ch_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 75655a95caaSYouMin Chen 'ddr4_ch_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr4_hash_index', 'position': 'ch_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 75755a95caaSYouMin Chen 'ddr4_bank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr4_hash_index', 'position': 'bank_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 75855a95caaSYouMin Chen 'ddr4_bank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr4_hash_index', 'position': 'bank_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 75955a95caaSYouMin Chen 'ddr4_bank_mask2': {'value': 0, 'num_base': 'hex', 'index': 'ddr4_hash_index', 'position': 'bank_mask_2', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 76055a95caaSYouMin Chen 'ddr4_bank_mask3': {'value': 0, 'num_base': 'hex', 'index': 'ddr4_hash_index', 'position': 'bank_mask_3', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 76155a95caaSYouMin Chen 'ddr4_rank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr4_hash_index', 'position': 'rank_mask0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 76255a95caaSYouMin Chen 'ddr4_rank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr4_hash_index', 'position': 'rank_mask1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 76355a95caaSYouMin Chen 76455a95caaSYouMin Chen 'lp3_ch_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp3_hash_index', 'position': 'ch_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 76555a95caaSYouMin Chen 'lp3_ch_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp3_hash_index', 'position': 'ch_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 76655a95caaSYouMin Chen 'lp3_bank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp3_hash_index', 'position': 'bank_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 76755a95caaSYouMin Chen 'lp3_bank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp3_hash_index', 'position': 'bank_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 76855a95caaSYouMin Chen 'lp3_bank_mask2': {'value': 0, 'num_base': 'hex', 'index': 'lp3_hash_index', 'position': 'bank_mask_2', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 76955a95caaSYouMin Chen 'lp3_bank_mask3': {'value': 0, 'num_base': 'hex', 'index': 'lp3_hash_index', 'position': 'bank_mask_3', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 77055a95caaSYouMin Chen 'lp3_rank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp3_hash_index', 'position': 'rank_mask0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 77155a95caaSYouMin Chen 'lp3_rank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp3_hash_index', 'position': 'rank_mask1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 77255a95caaSYouMin Chen 77355a95caaSYouMin Chen 'ddr3_ch_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr3_hash_index', 'position': 'ch_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 77455a95caaSYouMin Chen 'ddr3_ch_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr3_hash_index', 'position': 'ch_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 77555a95caaSYouMin Chen 'ddr3_bank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr3_hash_index', 'position': 'bank_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 77655a95caaSYouMin Chen 'ddr3_bank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr3_hash_index', 'position': 'bank_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 77755a95caaSYouMin Chen 'ddr3_bank_mask2': {'value': 0, 'num_base': 'hex', 'index': 'ddr3_hash_index', 'position': 'bank_mask_2', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 77855a95caaSYouMin Chen 'ddr3_bank_mask3': {'value': 0, 'num_base': 'hex', 'index': 'ddr3_hash_index', 'position': 'bank_mask_3', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 77955a95caaSYouMin Chen 'ddr3_rank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr3_hash_index', 'position': 'rank_mask0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 78055a95caaSYouMin Chen 'ddr3_rank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr3_hash_index', 'position': 'rank_mask1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 78155a95caaSYouMin Chen 78255a95caaSYouMin Chen 'lp2_ch_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp2_hash_index', 'position': 'ch_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 78355a95caaSYouMin Chen 'lp2_ch_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp2_hash_index', 'position': 'ch_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 78455a95caaSYouMin Chen 'lp2_bank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp2_hash_index', 'position': 'bank_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 78555a95caaSYouMin Chen 'lp2_bank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp2_hash_index', 'position': 'bank_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 78655a95caaSYouMin Chen 'lp2_bank_mask2': {'value': 0, 'num_base': 'hex', 'index': 'lp2_hash_index', 'position': 'bank_mask_2', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 78755a95caaSYouMin Chen 'lp2_bank_mask3': {'value': 0, 'num_base': 'hex', 'index': 'lp2_hash_index', 'position': 'bank_mask_3', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 78855a95caaSYouMin Chen 'lp2_rank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'lp2_hash_index', 'position': 'rank_mask0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 78955a95caaSYouMin Chen 'lp2_rank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'lp2_hash_index', 'position': 'rank_mask1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 79055a95caaSYouMin Chen 79155a95caaSYouMin Chen 'ddr2_ch_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr2_hash_index', 'position': 'ch_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 79255a95caaSYouMin Chen 'ddr2_ch_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr2_hash_index', 'position': 'ch_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 79355a95caaSYouMin Chen 'ddr2_bank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr2_hash_index', 'position': 'bank_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 79455a95caaSYouMin Chen 'ddr2_bank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr2_hash_index', 'position': 'bank_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 79555a95caaSYouMin Chen 'ddr2_bank_mask2': {'value': 0, 'num_base': 'hex', 'index': 'ddr2_hash_index', 'position': 'bank_mask_2', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 79655a95caaSYouMin Chen 'ddr2_bank_mask3': {'value': 0, 'num_base': 'hex', 'index': 'ddr2_hash_index', 'position': 'bank_mask_3', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 79755a95caaSYouMin Chen 'ddr2_rank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr2_hash_index', 'position': 'rank_mask0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 79855a95caaSYouMin Chen 'ddr2_rank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr2_hash_index', 'position': 'rank_mask1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 79955a95caaSYouMin Chen 80055a95caaSYouMin Chen 'ddr5_ch_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr5_hash_index', 'position': 'ch_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 80155a95caaSYouMin Chen 'ddr5_ch_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr5_hash_index', 'position': 'ch_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 80255a95caaSYouMin Chen 'ddr5_bank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr5_hash_index', 'position': 'bank_mask_0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 80355a95caaSYouMin Chen 'ddr5_bank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr5_hash_index', 'position': 'bank_mask_1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 80455a95caaSYouMin Chen 'ddr5_bank_mask2': {'value': 0, 'num_base': 'hex', 'index': 'ddr5_hash_index', 'position': 'bank_mask_2', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 80555a95caaSYouMin Chen 'ddr5_bank_mask3': {'value': 0, 'num_base': 'hex', 'index': 'ddr5_hash_index', 'position': 'bank_mask_3', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 80655a95caaSYouMin Chen 'ddr5_rank_mask0': {'value': 0, 'num_base': 'hex', 'index': 'ddr5_hash_index', 'position': 'rank_mask0', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 80755a95caaSYouMin Chen 'ddr5_rank_mask1': {'value': 0, 'num_base': 'hex', 'index': 'ddr5_hash_index', 'position': 'rank_mask1', 'shift': 0, 'mask': 0xffffffff, 'version': 4}, 80855a95caaSYouMin Chen 80955a95caaSYouMin 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}, 81055a95caaSYouMin Chen 'ddr3_skew_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'skew_index', 'position': 'ddr3_skew_freq', 'shift': 0, 'mask': 0xfff, 'version': 4}, 81155a95caaSYouMin Chen 'ddr3_ca0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_2', 'shift': 8, 'mask': 0xff, 'version': 4}, 81255a95caaSYouMin Chen 'ddr3_ca1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_0', 'shift': 0, 'mask': 0xff, 'version': 4}, 81355a95caaSYouMin Chen 'ddr3_ca2_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_1', 'shift': 24, 'mask': 0xff, 'version': 4}, 81455a95caaSYouMin Chen 'ddr3_ca3_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_1', 'shift': 8, 'mask': 0xff, 'version': 4}, 81555a95caaSYouMin Chen 'ddr3_ca4_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_1', 'shift': 16, 'mask': 0xff, 'version': 4}, 81655a95caaSYouMin Chen 'ddr3_ca5_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_2', 'shift': 24, 'mask': 0xff, 'version': 4}, 81755a95caaSYouMin Chen 'ddr3_ca6_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_1', 'shift': 0, 'mask': 0xff, 'version': 4}, 81855a95caaSYouMin Chen 'ddr3_ca7_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_2', 'shift': 0, 'mask': 0xff, 'version': 4}, 81955a95caaSYouMin Chen 'ddr3_ca8_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_3', 'shift': 16, 'mask': 0xff, 'version': 4}, 82055a95caaSYouMin Chen 'ddr3_ca9_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_0', 'shift': 24, 'mask': 0xff, 'version': 4}, 82155a95caaSYouMin Chen 'ddr3_ca10_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_3', 'shift': 24, 'mask': 0xff, 'version': 4}, 82255a95caaSYouMin Chen 'ddr3_ca11_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_2', 'shift': 16, 'mask': 0xff, 'version': 4}, 82355a95caaSYouMin Chen 'ddr3_ca12_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_4', 'shift': 0, 'mask': 0xff, 'version': 4}, 82455a95caaSYouMin Chen 'ddr3_ca13_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_0', 'shift': 8, 'mask': 0xff, 'version': 4}, 82555a95caaSYouMin Chen 'ddr3_ca14_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_0', 'shift': 16, 'mask': 0xff, 'version': 4}, 82655a95caaSYouMin Chen 'ddr3_ca15_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_5', 'shift': 16, 'mask': 0xff, 'version': 4}, 82755a95caaSYouMin Chen 'ddr3_ras_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_5', 'shift': 8, 'mask': 0xff, 'version': 4}, 82855a95caaSYouMin Chen 'ddr3_cas_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_7', 'shift': 24, 'mask': 0xff, 'version': 4}, 82955a95caaSYouMin Chen 'ddr3_ba0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_5', 'shift': 24, 'mask': 0xff, 'version': 4}, 83055a95caaSYouMin Chen 'ddr3_ba1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_3', 'shift': 0, 'mask': 0xff, 'version': 4}, 83155a95caaSYouMin Chen 'ddr3_ba2_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_4', 'shift': 8, 'mask': 0xff, 'version': 4}, 83255a95caaSYouMin Chen 'ddr3_we_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_6', 'shift': 8, 'mask': 0xff, 'version': 4}, 83355a95caaSYouMin Chen 'ddr3_cke0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_4', 'shift': 24, 'mask': 0xff, 'version': 4}, 83455a95caaSYouMin Chen 'ddr3_cke1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_5', 'shift': 0, 'mask': 0xff, 'version': 4}, 83555a95caaSYouMin Chen 'ddr3_ckn_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_6', 'shift': 24, 'mask': 0xff, 'version': 4}, 83655a95caaSYouMin Chen 'ddr3_ckp_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_6', 'shift': 16, 'mask': 0xff, 'version': 4}, 83755a95caaSYouMin Chen 'ddr3_odt0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_3', 'shift': 8, 'mask': 0xff, 'version': 4}, 83855a95caaSYouMin Chen 'ddr3_odt1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_6', 'shift': 0, 'mask': 0xff, 'version': 4}, 83955a95caaSYouMin Chen 'ddr3_cs0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_7', 'shift': 0, 'mask': 0xff, 'version': 4}, 84055a95caaSYouMin Chen 'ddr3_cs1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_7', 'shift': 16, 'mask': 0xff, 'version': 4}, 84155a95caaSYouMin Chen 'ddr3_resetn_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr3_ca_skew_7', 'shift': 8, 'mask': 0xff, 'version': 4}, 84255a95caaSYouMin Chen 84355a95caaSYouMin 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}, 84455a95caaSYouMin Chen 'ddr4_skew_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'skew_index', 'position': 'ddr4_skew_freq', 'shift': 0, 'mask': 0xfff, 'version': 4}, 84555a95caaSYouMin Chen 'ddr4_ca0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_0', 'shift': 24, 'mask': 0xff, 'version': 4}, 84655a95caaSYouMin Chen 'ddr4_ca1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_0', 'shift': 16, 'mask': 0xff, 'version': 4}, 84755a95caaSYouMin Chen 'ddr4_ca2_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_0', 'shift': 8, 'mask': 0xff, 'version': 4}, 84855a95caaSYouMin Chen 'ddr4_ca3_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_0', 'shift': 0, 'mask': 0xff, 'version': 4}, 84955a95caaSYouMin Chen 'ddr4_ca4_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_1', 'shift': 24, 'mask': 0xff, 'version': 4}, 85055a95caaSYouMin Chen 'ddr4_ca5_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_1', 'shift': 16, 'mask': 0xff, 'version': 4}, 85155a95caaSYouMin Chen 'ddr4_ca6_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_1', 'shift': 8, 'mask': 0xff, 'version': 4}, 85255a95caaSYouMin Chen 'ddr4_ca7_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_1', 'shift': 0, 'mask': 0xff, 'version': 4}, 85355a95caaSYouMin Chen 'ddr4_ca8_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_2', 'shift': 24, 'mask': 0xff, 'version': 4}, 85455a95caaSYouMin Chen 'ddr4_ca9_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_2', 'shift': 16, 'mask': 0xff, 'version': 4}, 85555a95caaSYouMin Chen 'ddr4_ca10_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_2', 'shift': 8, 'mask': 0xff, 'version': 4}, 85655a95caaSYouMin Chen 'ddr4_ca11_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_2', 'shift': 0, 'mask': 0xff, 'version': 4}, 85755a95caaSYouMin Chen 'ddr4_ca12_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_3', 'shift': 24, 'mask': 0xff, 'version': 4}, 85855a95caaSYouMin Chen 'ddr4_ca13_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_3', 'shift': 16, 'mask': 0xff, 'version': 4}, 85955a95caaSYouMin Chen 'ddr4_ca14_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_3', 'shift': 8, 'mask': 0xff, 'version': 4}, 86055a95caaSYouMin Chen 'ddr4_ca15_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_3', 'shift': 0, 'mask': 0xff, 'version': 4}, 86155a95caaSYouMin Chen 'ddr4_ca16_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_4', 'shift': 24, 'mask': 0xff, 'version': 4}, 86255a95caaSYouMin Chen 'ddr4_ca17_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_4', 'shift': 16, 'mask': 0xff, 'version': 4}, 86355a95caaSYouMin Chen 'ddr4_ba0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_4', 'shift': 8, 'mask': 0xff, 'version': 4}, 86455a95caaSYouMin Chen 'ddr4_ba1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_4', 'shift': 0, 'mask': 0xff, 'version': 4}, 86555a95caaSYouMin Chen 'ddr4_bg0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_5', 'shift': 24, 'mask': 0xff, 'version': 4}, 86655a95caaSYouMin Chen 'ddr4_bg1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_5', 'shift': 16, 'mask': 0xff, 'version': 4}, 86755a95caaSYouMin Chen 'ddr4_cke0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_5', 'shift': 8, 'mask': 0xff, 'version': 4}, 86855a95caaSYouMin Chen 'ddr4_cke1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_5', 'shift': 0, 'mask': 0xff, 'version': 4}, 86955a95caaSYouMin Chen 'ddr4_ckn_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_6', 'shift': 24, 'mask': 0xff, 'version': 4}, 87055a95caaSYouMin Chen 'ddr4_ckp_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_6', 'shift': 16, 'mask': 0xff, 'version': 4}, 87155a95caaSYouMin Chen 'ddr4_odt0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_6', 'shift': 8, 'mask': 0xff, 'version': 4}, 87255a95caaSYouMin Chen 'ddr4_odt1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_6', 'shift': 0, 'mask': 0xff, 'version': 4}, 87355a95caaSYouMin Chen 'ddr4_cs0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_7', 'shift': 24, 'mask': 0xff, 'version': 4}, 87455a95caaSYouMin Chen 'ddr4_cs1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_7', 'shift': 16, 'mask': 0xff, 'version': 4}, 87555a95caaSYouMin Chen 'ddr4_resetn_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_7', 'shift': 8, 'mask': 0xff, 'version': 4}, 87655a95caaSYouMin Chen 'ddr4_actn_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'ddr4_ca_skew_7', 'shift': 0, 'mask': 0xff, 'version': 4}, 87755a95caaSYouMin Chen 87855a95caaSYouMin 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}, 87955a95caaSYouMin Chen 'lp3_skew_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'skew_index', 'position': 'lp3_skew_freq', 'shift': 0, 'mask': 0xfff, 'version': 4}, 88055a95caaSYouMin Chen 'lp3_ca0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_3', 'shift': 0, 'mask': 0xff, 'version': 4}, 88155a95caaSYouMin Chen 'lp3_ca1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_4', 'shift': 0, 'mask': 0xff, 'version': 4}, 88255a95caaSYouMin Chen 'lp3_ca2_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_2', 'shift': 16, 'mask': 0xff, 'version': 4}, 88355a95caaSYouMin Chen 'lp3_ca3_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_3', 'shift': 16, 'mask': 0xff, 'version': 4}, 88455a95caaSYouMin Chen 'lp3_ca4_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_3', 'shift': 24, 'mask': 0xff, 'version': 4}, 88555a95caaSYouMin Chen 'lp3_ca5_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_1', 'shift': 24, 'mask': 0xff, 'version': 4}, 88655a95caaSYouMin Chen 'lp3_ca6_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_2', 'shift': 24, 'mask': 0xff, 'version': 4}, 88755a95caaSYouMin Chen 'lp3_ca7_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_2', 'shift': 0, 'mask': 0xff, 'version': 4}, 88855a95caaSYouMin Chen 'lp3_ca8_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_5', 'shift': 24, 'mask': 0xff, 'version': 4}, 88955a95caaSYouMin Chen 'lp3_ca9_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_7', 'shift': 0, 'mask': 0xff, 'version': 4}, 89055a95caaSYouMin Chen 'lp3_cke0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_4', 'shift': 8, 'mask': 0xff, 'version': 4}, 89155a95caaSYouMin Chen 'lp3_cke1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_5', 'shift': 0, 'mask': 0xff, 'version': 4}, 89255a95caaSYouMin Chen 'lp3_ckn_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_6', 'shift': 24, 'mask': 0xff, 'version': 4}, 89355a95caaSYouMin Chen 'lp3_ckp_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_6', 'shift': 16, 'mask': 0xff, 'version': 4}, 89455a95caaSYouMin Chen 'lp3_odt0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_6', 'shift': 8, 'mask': 0xff, 'version': 4}, 89555a95caaSYouMin Chen 'lp3_odt1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_6', 'shift': 0, 'mask': 0xff, 'version': 4}, 89655a95caaSYouMin Chen 'lp3_odt2_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_0', 'shift': 24, 'mask': 0xff, 'version': 4}, 89755a95caaSYouMin Chen 'lp3_odt3_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_0', 'shift': 8, 'mask': 0xff, 'version': 4}, 89855a95caaSYouMin Chen 'lp3_cs0_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_7', 'shift': 16, 'mask': 0xff, 'version': 4}, 89955a95caaSYouMin Chen 'lp3_cs1_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_7', 'shift': 24, 'mask': 0xff, 'version': 4}, 90055a95caaSYouMin Chen 'lp3_cs2_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_1', 'shift': 8, 'mask': 0xff, 'version': 4}, 90155a95caaSYouMin Chen 'lp3_cs3_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'lp3_ca_skew_3', 'shift': 8, 'mask': 0xff, 'version': 4}, 90255a95caaSYouMin Chen 90355a95caaSYouMin Chen 'reserved_skew_lp4_skew_freq_bit12_31': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 90455a95caaSYouMin Chen 'lp4_skew_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 90555a95caaSYouMin Chen 'lp4_ca0_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 90655a95caaSYouMin Chen 'lp4_ca1_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 90755a95caaSYouMin Chen 'lp4_ca2_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 90855a95caaSYouMin Chen 'lp4_ca3_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 90955a95caaSYouMin Chen 'lp4_ca4_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 91055a95caaSYouMin Chen 'lp4_ca5_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 91155a95caaSYouMin Chen 'lp4_odt0_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 91255a95caaSYouMin Chen 'lp4_odt1_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 91355a95caaSYouMin Chen 'lp4_cke0_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 91455a95caaSYouMin Chen 'lp4_cke1_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 91555a95caaSYouMin Chen 'lp4_ckn_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 91655a95caaSYouMin Chen 'lp4_ckp_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 91755a95caaSYouMin Chen 'lp4_cs0_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 91855a95caaSYouMin Chen 'lp4_cs1_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 91955a95caaSYouMin Chen 'lp4_ca0_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 92055a95caaSYouMin Chen 'lp4_ca1_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 92155a95caaSYouMin Chen 'lp4_ca2_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 92255a95caaSYouMin Chen 'lp4_ca3_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 92355a95caaSYouMin Chen 'lp4_ca4_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 92455a95caaSYouMin Chen 'lp4_ca5_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 92555a95caaSYouMin Chen 'lp4_odt0_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 92655a95caaSYouMin Chen 'lp4_odt1_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 92755a95caaSYouMin Chen 'lp4_cke0_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 92855a95caaSYouMin Chen 'lp4_cke1_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 92955a95caaSYouMin Chen 'lp4_ckn_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 93055a95caaSYouMin Chen 'lp4_ckp_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 93155a95caaSYouMin Chen 'lp4_cs0_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 93255a95caaSYouMin Chen 'lp4_cs1_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 93355a95caaSYouMin Chen 'lp4_resetn_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 93455a95caaSYouMin Chen 93555a95caaSYouMin Chen 'reserved_skew_lp5_skew_freq_bit12_31': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 93655a95caaSYouMin Chen 'lp5_skew_freq_mhz': {'value': 0, 'num_base': 'dec', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 93755a95caaSYouMin Chen 'lp5_ca0_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 93855a95caaSYouMin Chen 'lp5_ca1_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 93955a95caaSYouMin Chen 'lp5_ca2_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 94055a95caaSYouMin Chen 'lp5_ca3_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 94155a95caaSYouMin Chen 'lp5_ca4_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 94255a95caaSYouMin Chen 'lp5_ca5_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 94355a95caaSYouMin Chen 'lp5_ca6_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 94455a95caaSYouMin Chen 'lp5_ckn_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 94555a95caaSYouMin Chen 'lp5_ckp_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 94655a95caaSYouMin Chen 'lp5_cs0_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 94755a95caaSYouMin Chen 'lp5_cs1_a_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 94855a95caaSYouMin Chen 'lp5_ca0_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 94955a95caaSYouMin Chen 'lp5_ca1_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 95055a95caaSYouMin Chen 'lp5_ca2_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 95155a95caaSYouMin Chen 'lp5_ca3_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 95255a95caaSYouMin Chen 'lp5_ca4_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 95355a95caaSYouMin Chen 'lp5_ca5_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 95455a95caaSYouMin Chen 'lp5_ca6_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 95555a95caaSYouMin Chen 'lp5_ckn_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 95655a95caaSYouMin Chen 'lp5_ckp_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 95755a95caaSYouMin Chen 'lp5_cs0_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 95855a95caaSYouMin Chen 'lp5_cs1_b_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 95955a95caaSYouMin Chen 'lp5_resetn_skew': {'value': 0, 'num_base': 'hex', 'index': 'skew_index', 'position': 'null', 'shift': 0, 'mask': 0, 'version': 4}, 960*4026ce53SZhihuan He 961*4026ce53SZhihuan He 'uart_addr': {'value': 0, 'num_base': 'hex', 'index': 'uart_iomux_index_u16', 'position': 'uart_addr', 'shift': 0, 'mask': 0xffffffff, 'version': 6}, 96255a95caaSYouMin Chen} 96355a95caaSYouMin Chen 964*4026ce53SZhihuan Heuart_iomux_info_template = { 965*4026ce53SZhihuan He 'uart_iomux_addr0': {'value': 0, 'num_base': 'hex', 'index': 'uart_iomux_index_u16', 'position': 'uart_iomux_addr0', 'shift': 0, 'mask': 0xffffffff, 'version': 6}, 966*4026ce53SZhihuan He 'uart_iomux_mask0': {'value': 0, 'num_base': 'hex', 'index': 'uart_iomux_index_u16', 'position': 'uart_iomux_val0', 'shift': 0, 'mask': 0xffffffff, 'version': 6}, 967*4026ce53SZhihuan He 'uart_iomux_val0': {'value': 0, 'num_base': 'hex', 'index': 'uart_iomux_index_u16', 'position': 'uart_iomux_val0', 'shift': 0, 'mask': 0xffffffff, 'version': 6}, 968*4026ce53SZhihuan He} 96955a95caaSYouMin Chen 97055a95caaSYouMin Chendef bin_data_2_info(info_from_bin, read_out, ddrbin_index, version, info_from_txt): 97155a95caaSYouMin Chen info_from_bin['start tag']['value'] = 0x12345678 97255a95caaSYouMin Chen 97355a95caaSYouMin Chen if version < 2: 97455a95caaSYouMin Chen for key, value in info_from_bin.items(): 97555a95caaSYouMin Chen if value['version'] <= version: 97655a95caaSYouMin Chen for i in range(len(read_out)): 97755a95caaSYouMin Chen # read_out is sdram_head_info_v0 = [[offset, value], ...] 97855a95caaSYouMin Chen # info_from_bin v0_info = [offset, shift, mask] 97955a95caaSYouMin Chen if value['v0_info'][0] == read_out[i][0]: 98055a95caaSYouMin Chen temp_value = (read_out[i][1] >> value['v0_info'][1]) & value['v0_info'][2] 98155a95caaSYouMin Chen info_from_bin[key]['value'] = temp_value 98255a95caaSYouMin Chen #print(f"D: {key} = {value} {hex(value['v0_info'][0])}={read_out[i][1]}") 98355a95caaSYouMin Chen elif version <= version_max: 98455a95caaSYouMin Chen for index_name in ddrbin_index: 985*4026ce53SZhihuan He if "reserved" in index_name: 986*4026ce53SZhihuan He continue 987*4026ce53SZhihuan He if "index_u16" in index_name: 988*4026ce53SZhihuan He head_info_name = index_name[:-10]+'_info' 989*4026ce53SZhihuan He else: 99055a95caaSYouMin Chen head_info_name = index_name[:-6]+'_info' 99155a95caaSYouMin Chen if ddrbin_index[index_name]['offset'] != 0 and 'skew' not in index_name: 99255a95caaSYouMin Chen for key, value in info_from_bin.items(): 99355a95caaSYouMin Chen if value['index'] == index_name and value['version'] <= version: 99455a95caaSYouMin Chen temp_value = read_out[head_info_name][value['position']] 99555a95caaSYouMin Chen temp_value = (temp_value >> value['shift']) & value['mask'] 99655a95caaSYouMin Chen info_from_bin[key]['value'] = temp_value 99755a95caaSYouMin Chen #print(f"D: {key} = {value} {value['position']}={temp_value}") 99855a95caaSYouMin Chen elif ddrbin_index[index_name]['offset'] != 0 and 'skew' in index_name: 99955a95caaSYouMin Chen if chip_info == 'rk3528': 100055a95caaSYouMin Chen for key, value in info_from_bin.items(): 100155a95caaSYouMin Chen if value['index'] == index_name and value['version'] <= version: 100255a95caaSYouMin Chen position_1 = value['position'][ : value['position'].find('_')] 100355a95caaSYouMin Chen position_2 = value['position'][value['position'].find('_') + 1 : ] 100455a95caaSYouMin Chen # read_out is sdram_head_info_v2 or sdram_head_info_v5 100555a95caaSYouMin Chen if position_1 in list(read_out[head_info_name].keys()): 100655a95caaSYouMin Chen temp_value = read_out[head_info_name][position_1][position_2] 100755a95caaSYouMin Chen temp_value = (temp_value >> value['shift']) & value['mask'] 100855a95caaSYouMin Chen info_from_bin[key]['value'] = temp_value 100955a95caaSYouMin Chen #print(f"D: {key} = {value} {value['position']}={temp_value}") 101055a95caaSYouMin Chen 101155a95caaSYouMin Chen return 0 101255a95caaSYouMin Chen 101355a95caaSYouMin Chen 101455a95caaSYouMin Chendef modefy_2_bin_data(info_from_txt, write_in, ddrbin_index, version): 101555a95caaSYouMin Chen global rk3528_skew_info 101655a95caaSYouMin Chen 101755a95caaSYouMin Chen if version < 2: 101855a95caaSYouMin Chen for key, value in info_from_txt.items(): 101955a95caaSYouMin Chen if value['version'] <= version: 102055a95caaSYouMin Chen for i in range(len(write_in)): 102155a95caaSYouMin Chen if value['v0_info'][0] == write_in[i][0]: 102255a95caaSYouMin Chen write_in[i][1] |= (value['value'] << value['v0_info'][1]) 102355a95caaSYouMin Chen elif version <= version_max: 102455a95caaSYouMin Chen for index_name in ddrbin_index: 1025*4026ce53SZhihuan He if "reserved" in index_name: 1026*4026ce53SZhihuan He continue 1027*4026ce53SZhihuan He if "index_u16" in index_name: 1028*4026ce53SZhihuan He head_info_name = index_name[:-10]+'_info' 1029*4026ce53SZhihuan He else: 103055a95caaSYouMin Chen head_info_name = index_name[:-6]+'_info' 103155a95caaSYouMin Chen if ddrbin_index[index_name]['offset'] != 0 and 'skew' not in index_name: 103255a95caaSYouMin Chen position_name = 'null' 103355a95caaSYouMin Chen for key, value in info_from_txt.items(): 103455a95caaSYouMin Chen if value['index'] == index_name and value['version'] <= version: 103555a95caaSYouMin Chen if position_name != value['position']: 103655a95caaSYouMin Chen position_name = value['position'] 103755a95caaSYouMin Chen position_value = 0 103855a95caaSYouMin Chen position_value |= (value['value'] << value['shift']) 103955a95caaSYouMin Chen write_in[head_info_name][value['position']] = position_value 104055a95caaSYouMin Chen #print(f"D: {key} = {value}, {value['position']}={position_value}") 104155a95caaSYouMin Chen elif ddrbin_index[index_name]['offset'] != 0 and 'skew' in index_name: 104255a95caaSYouMin Chen if chip_info == 'rk3528': 104355a95caaSYouMin Chen write_in.update({'skew_info' : rk3528_skew_info}) 104455a95caaSYouMin Chen if rk3528_skew_info['skew_sub_version'] == 0x1: 104555a95caaSYouMin Chen for key, value in info_from_txt.items(): 104655a95caaSYouMin Chen if value['index'] == index_name and value['version'] <= version: 104755a95caaSYouMin Chen position_1 = value['position'][ : value['position'].find('_')] 104855a95caaSYouMin Chen position_2 = value['position'][value['position'].find('_') + 1 : ] 104955a95caaSYouMin Chen if position_1 in list(write_in[head_info_name].keys()): 105055a95caaSYouMin Chen temp_value = write_in[head_info_name][position_1][position_2] 105155a95caaSYouMin Chen temp_value &= ~(value['mask'] << value['shift']) 105255a95caaSYouMin Chen temp_value |= value['value'] << value['shift'] 105355a95caaSYouMin Chen write_in[head_info_name][position_1][position_2] = temp_value 105455a95caaSYouMin Chen #print(f"D: {key} = {value}, {temp_value}") 105555a95caaSYouMin Chen 105655a95caaSYouMin Chen #print(f"D: write_in = {write_in}") 105755a95caaSYouMin Chen return 0 105855a95caaSYouMin Chen 105955a95caaSYouMin Chen 106055a95caaSYouMin Chendef write_in_bin_data_v2(filebin, bin_skew_offset, write_in, ddrbin_index, info_from_txt, version): 106155a95caaSYouMin Chen for index_name in ddrbin_index: 1062*4026ce53SZhihuan He if "reserved" in index_name: 1063*4026ce53SZhihuan He continue 1064*4026ce53SZhihuan He if "index_u16" in index_name: 1065*4026ce53SZhihuan He head_info_name = index_name[:-10]+'_info' 1066*4026ce53SZhihuan He else: 106755a95caaSYouMin Chen head_info_name = index_name[:-6]+'_info' 1068*4026ce53SZhihuan He if head_info_name not in write_in: 1069*4026ce53SZhihuan He continue 107055a95caaSYouMin Chen if ddrbin_index[index_name]['offset'] != 0 and 'skew' not in index_name: 107155a95caaSYouMin Chen filebin.seek(bin_skew_offset + (ddrbin_index[index_name]['offset'] - 1) * 4) 107255a95caaSYouMin Chen index_size = ddrbin_index[index_name]['size'] 107355a95caaSYouMin Chen for key in write_in[head_info_name]: 107455a95caaSYouMin Chen if index_size > 0: 107555a95caaSYouMin Chen try: 107655a95caaSYouMin Chen filebin.write(write_in[head_info_name][key].to_bytes(4,byteorder='little')) 107755a95caaSYouMin Chen #print(f"D: {head_info_name} {key} = {write_in[head_info_name][key]}") 107855a95caaSYouMin Chen index_size -= 1 107955a95caaSYouMin Chen except: 108055a95caaSYouMin Chen print("write bin {} to file fail".format(head_info_name)) 108155a95caaSYouMin Chen return -1 108255a95caaSYouMin Chen elif ddrbin_index[index_name]['offset'] != 0 and 'skew' in index_name: 108355a95caaSYouMin Chen if chip_info == 'rk3528' and write_in[head_info_name]["skew_sub_version"] == 1: 108455a95caaSYouMin Chen filebin.seek(bin_skew_offset + (ddrbin_index[index_name]['offset'] - 1) * 4) 108555a95caaSYouMin Chen index_size = ddrbin_index[index_name]['size'] 108655a95caaSYouMin Chen for key in write_in[head_info_name]: 108755a95caaSYouMin Chen if key == 'skew_sub_version': 108855a95caaSYouMin Chen temp_value = write_in[head_info_name]["skew_sub_version"] 108955a95caaSYouMin Chen filebin.write(temp_value.to_bytes(4,byteorder='little')) 109055a95caaSYouMin Chen continue 109155a95caaSYouMin Chen for key_1 in write_in[head_info_name][key]: 109255a95caaSYouMin Chen if index_size > 0: 109355a95caaSYouMin Chen try: 109455a95caaSYouMin Chen temp_value = write_in[head_info_name][key][key_1] 109555a95caaSYouMin Chen #print(f"D: {head_info_name} {key}.{key_1} = {temp_value}") 109655a95caaSYouMin Chen filebin.write(temp_value.to_bytes(4,byteorder='little')) 109755a95caaSYouMin Chen index_size -= 1 109855a95caaSYouMin Chen except: 109955a95caaSYouMin Chen print("write bin {} to file fail".format(head_info_name)) 110055a95caaSYouMin Chen return -1 110155a95caaSYouMin Chen 110255a95caaSYouMin Chen return 0 110355a95caaSYouMin Chen 1104*4026ce53SZhihuan Hedef modify_global_uart_2_uart_iomux(info_from_txt, ddrbin_index, version): 1105*4026ce53SZhihuan He if version < 6: 1106*4026ce53SZhihuan He return 0 1107*4026ce53SZhihuan He uart_id = info_from_txt.get('uart id', {}).get('value') 1108*4026ce53SZhihuan He uart_iomux = info_from_txt.get('uart iomux', {}).get('value') 1109*4026ce53SZhihuan He 1110*4026ce53SZhihuan He for chips, config in uart_id_2_iomux.items(): 1111*4026ce53SZhihuan He if chip_info in chips: 1112*4026ce53SZhihuan He uart = 'uart' + str(uart_id) 1113*4026ce53SZhihuan He uart_config = config.get(uart) 1114*4026ce53SZhihuan He if not uart_config: 1115*4026ce53SZhihuan He print("Warn: uart_iomux_index_u16: {} will disable uart!".format(uart)) 1116*4026ce53SZhihuan He for key, value in info_from_txt.items(): 1117*4026ce53SZhihuan He if value['index'] == 'uart_iomux_index_u16': 1118*4026ce53SZhihuan He value['value'] = 0 1119*4026ce53SZhihuan He return 0 1120*4026ce53SZhihuan He 1121*4026ce53SZhihuan He mode = 'm' + str(uart_iomux) 1122*4026ce53SZhihuan He iomux_config = uart_config.get(mode) 1123*4026ce53SZhihuan He if not iomux_config: 1124*4026ce53SZhihuan He print("Error: uart_iomux_index_u16: Mode {} not found for {} in configuration for chip {}.".format(mode, uart, chip_info)) 1125*4026ce53SZhihuan He return -1 1126*4026ce53SZhihuan He 1127*4026ce53SZhihuan He i = 0 1128*4026ce53SZhihuan He for key, value in info_from_txt.items(): 1129*4026ce53SZhihuan He if value['index'] == 'uart_iomux_index_u16': 1130*4026ce53SZhihuan He value['value'] = iomux_config[i] 1131*4026ce53SZhihuan He i += 1 1132*4026ce53SZhihuan He #print(f"D: update info_from_txt[{key}] = {value['value']}") 1133*4026ce53SZhihuan He 1134*4026ce53SZhihuan He return 0 113555a95caaSYouMin Chen 113655a95caaSYouMin Chen#info from bin + info from txt generate to loader parameters 113755a95caaSYouMin Chendef txt_data_2_bin_data(info_from_txt, info_from_bin, ddrbin_index, write_in, version): 113855a95caaSYouMin Chen print("\nnew bin config:") 113955a95caaSYouMin Chen 1140*4026ce53SZhihuan He need_modify_uart_iomux = False 114155a95caaSYouMin Chen for key, value in info_from_txt.items(): 114255a95caaSYouMin Chen if key == 'start tag': 114355a95caaSYouMin Chen continue 114455a95caaSYouMin Chen if (info_from_txt[key]['value'] == 0) and (key not in update_key_list): 114555a95caaSYouMin Chen info_from_txt[key]['value'] = info_from_bin[key]['value'] 114655a95caaSYouMin Chen else: 1147*4026ce53SZhihuan He if info_from_txt[key]['index'] == 'uart_iomux_index_u16': 1148*4026ce53SZhihuan He continue 114955a95caaSYouMin Chen if info_from_txt[key]['num_base'] == 'hex': 115055a95caaSYouMin Chen print("{}: {}".format(key, hex(info_from_txt[key]['value']))) 115155a95caaSYouMin Chen else: 115255a95caaSYouMin Chen print("{}: {}".format(key, info_from_txt[key]['value'])) 1153*4026ce53SZhihuan He if key == 'uart id' or key == 'uart iomux': 1154*4026ce53SZhihuan He need_modify_uart_iomux = True 1155*4026ce53SZhihuan He 1156*4026ce53SZhihuan He if need_modify_uart_iomux: 1157*4026ce53SZhihuan He ret = modify_global_uart_2_uart_iomux(info_from_txt, ddrbin_index, version) 1158*4026ce53SZhihuan He if ret != 0: 1159*4026ce53SZhihuan He return -1 116055a95caaSYouMin Chen #print(info_from_txt) 116155a95caaSYouMin Chen 116255a95caaSYouMin Chen modefy_2_bin_data(info_from_txt, write_in, ddrbin_index, version) 116355a95caaSYouMin Chen 116455a95caaSYouMin Chen return 0 116555a95caaSYouMin Chen 1166*4026ce53SZhihuan Hedef uart_iomux_count_calculation(ddrbin_index, info_from_txt, info_from_bin, read_out, version): 1167*4026ce53SZhihuan He if version <= version_max: 1168*4026ce53SZhihuan He index_size = 0 1169*4026ce53SZhihuan He for index_name in ddrbin_index: 1170*4026ce53SZhihuan He if "uart_iomux_index_u16" in index_name: 1171*4026ce53SZhihuan He index_size = ddrbin_index[index_name]['size'] 1172*4026ce53SZhihuan He if (index_size == 0): 1173*4026ce53SZhihuan He return -1 1174*4026ce53SZhihuan He head_info_name = 'uart_iomux_info' 1175*4026ce53SZhihuan He for i in range(index_size // 3): 1176*4026ce53SZhihuan He addr = 'uart_iomux_addr' + str(i) 1177*4026ce53SZhihuan He mask = 'uart_iomux_mask' + str(i) 1178*4026ce53SZhihuan He value = 'uart_iomux_val' + str(i) 1179*4026ce53SZhihuan He read_out[head_info_name][addr] = 0 1180*4026ce53SZhihuan He read_out[head_info_name][mask] = 0 1181*4026ce53SZhihuan He read_out[head_info_name][value] = 0 1182*4026ce53SZhihuan He #print(f"D: read_out[head_info_name] = {read_out[head_info_name]}") 1183*4026ce53SZhihuan He new_addr_dic2 = {addr: uart_iomux_info_template['uart_iomux_addr0'].copy()} 1184*4026ce53SZhihuan He new_mask_dic2 = {mask: uart_iomux_info_template['uart_iomux_mask0'].copy()} 1185*4026ce53SZhihuan He new_val_dic2 = {value: uart_iomux_info_template['uart_iomux_val0'].copy()} 1186*4026ce53SZhihuan He new_addr_dic2[addr]['position'] = f'uart_iomux_addr{i}' 1187*4026ce53SZhihuan He new_mask_dic2[mask]['position'] = f'uart_iomux_mask{i}' 1188*4026ce53SZhihuan He new_val_dic2[value]['position'] = f'uart_iomux_val{i}' 1189*4026ce53SZhihuan He info_from_txt.update(new_addr_dic2) 1190*4026ce53SZhihuan He info_from_txt.update(new_mask_dic2) 1191*4026ce53SZhihuan He info_from_txt.update(new_val_dic2) 1192*4026ce53SZhihuan He info_from_bin.update(new_addr_dic2) 1193*4026ce53SZhihuan He info_from_bin.update(new_mask_dic2) 1194*4026ce53SZhihuan He info_from_bin.update(new_val_dic2) 119555a95caaSYouMin Chen 119655a95caaSYouMin Chendef bin_data_readout(filebin, ddrbin_index, read_out, bin_skew_offset, version, info_from_txt): 119755a95caaSYouMin Chen global rk3528_skew_info 119855a95caaSYouMin Chen 119955a95caaSYouMin Chen if version < 2: 120055a95caaSYouMin Chen for i in range(len(read_out)): 120155a95caaSYouMin Chen try: 120255a95caaSYouMin Chen read_out[i][1] = int.from_bytes(filebin.read(4), byteorder='little') 120355a95caaSYouMin Chen #print(f"D: read_out {hex(read_out[i][0])} = {read_out[i][1]}") 120455a95caaSYouMin Chen except: 120555a95caaSYouMin Chen print("read bin file fail") 120655a95caaSYouMin Chen return -1 120755a95caaSYouMin Chen elif version <= version_max: 120855a95caaSYouMin Chen for index_name in ddrbin_index: 1209*4026ce53SZhihuan He if "reserved" in index_name: 1210*4026ce53SZhihuan He continue 1211*4026ce53SZhihuan He if "_perf_" in index_name: 1212*4026ce53SZhihuan He continue 1213*4026ce53SZhihuan He if "index_u16" in index_name: 1214*4026ce53SZhihuan He head_info_name = index_name[:-10]+'_info' 1215*4026ce53SZhihuan He else: 121655a95caaSYouMin Chen head_info_name = index_name[:-6]+'_info' 121755a95caaSYouMin Chen if ddrbin_index[index_name]['offset'] != 0 and 'skew' not in index_name: 121855a95caaSYouMin Chen filebin.seek(bin_skew_offset + (ddrbin_index[index_name]['offset'] - 1) * 4) 121955a95caaSYouMin Chen index_size = ddrbin_index[index_name]['size'] 122055a95caaSYouMin Chen for key in read_out[head_info_name]: 122155a95caaSYouMin Chen if index_size > 0: 122255a95caaSYouMin Chen try: 122355a95caaSYouMin Chen temp_value = int.from_bytes(filebin.read(4), byteorder='little') 122455a95caaSYouMin Chen read_out[head_info_name][key] = temp_value 122555a95caaSYouMin Chen #print(f"D: {head_info_name} {key} = {read_out[head_info_name][key]}") 122655a95caaSYouMin Chen index_size -= 1 122755a95caaSYouMin Chen except: 122855a95caaSYouMin Chen print("read {} from bin file fail".format(head_info_name)) 122955a95caaSYouMin Chen return -1 123055a95caaSYouMin Chen elif ddrbin_index[index_name]['offset'] != 0 and 'skew' in index_name: 123155a95caaSYouMin Chen try: 123255a95caaSYouMin Chen filebin.seek(bin_skew_offset + (ddrbin_index[index_name]['offset'] - 1) * 4) 123355a95caaSYouMin Chen skew_sub_ver = int.from_bytes(filebin.read(4), byteorder='little') & 0xff 123455a95caaSYouMin Chen except: 123555a95caaSYouMin Chen print("read skew_sub_ver from bin file fail") 123655a95caaSYouMin Chen return -1 123755a95caaSYouMin Chen if chip_info == 'rk3528' and skew_sub_ver == 0x1: 123855a95caaSYouMin Chen for i in rk3528_skew_info: 123955a95caaSYouMin Chen if i == 'skew_sub_version': 124055a95caaSYouMin Chen rk3528_skew_info[i] = skew_sub_ver 124155a95caaSYouMin Chen continue 124255a95caaSYouMin Chen for j in rk3528_skew_info[i]: 124355a95caaSYouMin Chen try: 124455a95caaSYouMin Chen temp_value = int.from_bytes(filebin.read(4), byteorder='little') 124555a95caaSYouMin Chen rk3528_skew_info[i][j] = temp_value 124655a95caaSYouMin Chen #print(f"D: {i}.{j}={rk3528_skew_info[i][j]}") 124755a95caaSYouMin Chen except: 124855a95caaSYouMin Chen print("read {} from bin file fail".format(head_info_name)) 124955a95caaSYouMin Chen return -1 125055a95caaSYouMin Chen 125155a95caaSYouMin Chen read_out.update({'skew_info' : rk3528_skew_info}) 125255a95caaSYouMin Chen 125355a95caaSYouMin Chen return 0 125455a95caaSYouMin Chen 125555a95caaSYouMin Chen 125655a95caaSYouMin Chendef gen_info_from_bin(filegen_path, info_from_bin, verinfo_full, version): 125755a95caaSYouMin Chen with open(filegen_path, 'w+', encoding='utf-8') as file: 125855a95caaSYouMin Chen file.write('/* ' + verinfo_full + ' */\n') 125955a95caaSYouMin Chen 126055a95caaSYouMin Chen with open(filegen_path, 'a', encoding='utf-8') as file: 126155a95caaSYouMin Chen for key, value in info_from_bin.items(): 126255a95caaSYouMin Chen if "reserved" in key: 126355a95caaSYouMin Chen continue 126455a95caaSYouMin Chen 126555a95caaSYouMin Chen if value['num_base'] == 'hex': 126655a95caaSYouMin Chen value_str = str(hex(value['value'])) 126755a95caaSYouMin Chen else: 126855a95caaSYouMin Chen value_str = str(value['value']) 126955a95caaSYouMin Chen 1270*4026ce53SZhihuan He if value['index'] == 'uart_iomux_index_u16': 1271*4026ce53SZhihuan He write_buff = '/* ' + key + '=' + value_str + ' */' 1272*4026ce53SZhihuan He else: 127355a95caaSYouMin Chen write_buff = key + '=' + value_str 127455a95caaSYouMin Chen #print(f"D: {write_buff}") 127555a95caaSYouMin Chen file.write(write_buff + '\n') 127655a95caaSYouMin Chen 127755a95caaSYouMin Chen with open(filegen_path, 'a', encoding='utf-8') as file: 127855a95caaSYouMin Chen file.write('end' + '\n') 127955a95caaSYouMin Chen 128055a95caaSYouMin Chen return 0 128155a95caaSYouMin Chen 128255a95caaSYouMin Chen 128355a95caaSYouMin Chendef print_help(): 128455a95caaSYouMin Chen print( 128555a95caaSYouMin Chen "For more details, please refer to the ddrbin_tool_user_guide.txt\n"\ 128655a95caaSYouMin Chen "This tools support two functions\n"\ 128755a95caaSYouMin Chen "for example:\n"\ 128855a95caaSYouMin Chen "function 1: modify ddr.bin file from ddrbin_param.txt.\n"\ 128955a95caaSYouMin Chen " 1) modify 'ddrbin_param.txt', set ddr frequency, uart info etc what you want.\n"\ 129055a95caaSYouMin Chen " If want to keep items default, please keep these items blank.\n"\ 129155a95caaSYouMin Chen " The date & time in the version information will be updated by default.\n"\ 1292*4026ce53SZhihuan He " like: ./ddrbin_tool.py px30 ddrbin_param.txt px30_ddr_333MHz_v1.13.bin\n"\ 129355a95caaSYouMin Chen "\n"\ 129455a95caaSYouMin Chen " OPTION: --verinfo_editable=TEXT The TEXT(max 17 chars) will replace\n"\ 129555a95caaSYouMin Chen " the date & time in the version information.\n"\ 1296*4026ce53SZhihuan He " like: ./ddrbin_tool.py px30 ddrbin_param.txt px30_ddr_333MHz_v1.13.bin [OPTION]\n"\ 129755a95caaSYouMin Chen "\n"\ 129855a95caaSYouMin Chen "function 2: get ddr.bin file config to gen_param.txt file\n"\ 129955a95caaSYouMin Chen " If want to get ddrbin file config, please run like that:\n"\ 1300*4026ce53SZhihuan He " ./ddrbin_tool.py px30 -g gen_param.txt px30_ddr_333MHz_v1.15.bin\n"\ 130155a95caaSYouMin Chen " The config will show in gen_param.txt.\n"\ 130255a95caaSYouMin Chen "\n"\ 130355a95caaSYouMin Chen "Note: The function 1 and function 2 are two separate functions\n"\ 130455a95caaSYouMin Chen "The gen_param.txt file which is generated by function 2 is no need used in function 1.\n"\ 130555a95caaSYouMin Chen "\n"\ 130655a95caaSYouMin Chen "For more details, please refer to the ddrbin_tool_user_guide.txt\n"\ 130755a95caaSYouMin Chen ) 130855a95caaSYouMin Chen 130955a95caaSYouMin Chen 131055a95caaSYouMin Chendef ddrbin_tool(argc, argv): 131155a95caaSYouMin Chen global updata_key_list 131255a95caaSYouMin Chen global chip_info 131355a95caaSYouMin Chen 131455a95caaSYouMin Chen info_from_txt = copy.deepcopy(base_info_full) 131555a95caaSYouMin Chen info_from_bin = copy.deepcopy(base_info_full) 131655a95caaSYouMin Chen ddrbin_index = copy.deepcopy(sdram_head_info_index_v2) 131755a95caaSYouMin Chen 131855a95caaSYouMin Chen version_old_hit = 0 131955a95caaSYouMin Chen gen_txt_from_bin = 0 132055a95caaSYouMin Chen 132155a95caaSYouMin Chen verinfo_full = '' 132255a95caaSYouMin Chen verinfo_full_offset = 0 132355a95caaSYouMin Chen verinfo_full_length = 0 132455a95caaSYouMin Chen verinfo_editable = '' 132555a95caaSYouMin Chen verinfo_editable_offset = 0 132655a95caaSYouMin Chen verinfo_editable_length = 17 132755a95caaSYouMin Chen 1328*4026ce53SZhihuan He print("version v1.22 20250115") 132955a95caaSYouMin Chen print("python {}, {}, {}".format(sys.version.split(' ', 1)[0], platform.system(), platform.machine())) 133055a95caaSYouMin Chen if sys.version_info < (3, 6): 133155a95caaSYouMin Chen print("Warning: Please installed Python 3.6 or later.") 133255a95caaSYouMin Chen 133355a95caaSYouMin Chen if argc == 1: 133455a95caaSYouMin Chen print_help() 133555a95caaSYouMin Chen return -1 133655a95caaSYouMin Chen 133755a95caaSYouMin Chen chip_info = argv[1] 133855a95caaSYouMin Chen if chip_info not in chip_list: 133955a95caaSYouMin Chen chip_info = 'others chip' 134055a95caaSYouMin Chen print("chip: {}".format(chip_info)) 134155a95caaSYouMin Chen 134255a95caaSYouMin Chen try: 134355a95caaSYouMin Chen opts, args = getopt.gnu_getopt(argv, 'g:h', ['verinfo_editable=']) 134455a95caaSYouMin Chen except: 134555a95caaSYouMin Chen print_help() 134655a95caaSYouMin Chen return -1 134755a95caaSYouMin Chen 134855a95caaSYouMin Chen for opt, arg in opts: 134955a95caaSYouMin Chen if opt == '-g': 135055a95caaSYouMin Chen gen_txt_from_bin = 1 135155a95caaSYouMin Chen filegen_path = arg 135255a95caaSYouMin Chen elif opt == '--verinfo_editable': 135355a95caaSYouMin Chen verinfo_editable = arg 135455a95caaSYouMin Chen if len(verinfo_editable) > verinfo_editable_length: 135555a95caaSYouMin Chen print("The character count of 'verinfo_editable' exceeds the allowed limit of 17.") 135655a95caaSYouMin Chen return -1 135755a95caaSYouMin Chen elif opt == '-h': 135855a95caaSYouMin Chen print_help() 135955a95caaSYouMin Chen return -1 136055a95caaSYouMin Chen 136155a95caaSYouMin Chen if gen_txt_from_bin == 1: 136255a95caaSYouMin Chen # function: get ddr.bin file config to gen_param.txt file 136355a95caaSYouMin Chen if argc < 5: 136455a95caaSYouMin Chen print("The number of parameters error") 136555a95caaSYouMin Chen print_help() 136655a95caaSYouMin Chen return -1 136755a95caaSYouMin Chen 136855a95caaSYouMin Chen filebin_path = argv[4] 136955a95caaSYouMin Chen if os.path.exists(filebin_path) != True: 137055a95caaSYouMin Chen print("The file {} not exist".format(filebin_path)) 137155a95caaSYouMin Chen return -1 137255a95caaSYouMin Chen 137355a95caaSYouMin Chen #print(f"D: filegen_path={filegen_path}, {filebin_path}") 137455a95caaSYouMin Chen else: 137555a95caaSYouMin Chen # function: modify ddr.bin file from ddrbin_param.txt. 137655a95caaSYouMin Chen if argc < 4: 137755a95caaSYouMin Chen print("The number of parameters error") 137855a95caaSYouMin Chen print_help() 137955a95caaSYouMin Chen return -1 138055a95caaSYouMin Chen 138155a95caaSYouMin Chen fileskew_path = argv[2] 138255a95caaSYouMin Chen if os.path.exists(fileskew_path) != True: 138355a95caaSYouMin Chen print("The file {} not exist".format(fileskew_path)) 138455a95caaSYouMin Chen return -1 138555a95caaSYouMin Chen 138655a95caaSYouMin Chen filebin_path = argv[3] 138755a95caaSYouMin Chen if os.path.exists(filebin_path) != True: 138855a95caaSYouMin Chen print("The file {} not exist".format(filebin_path)) 138955a95caaSYouMin Chen return -1 139055a95caaSYouMin Chen 139155a95caaSYouMin Chen for key in version_old_list: 139255a95caaSYouMin Chen if key in argv[3]: 139355a95caaSYouMin Chen version_old_hit = 1 139455a95caaSYouMin Chen #print(f"D: fileskew_path={fileskew_path},{filebin_path},version_old_hit={version_old_hit}") 139555a95caaSYouMin Chen 139655a95caaSYouMin Chen if gen_txt_from_bin != 1: 139755a95caaSYouMin Chen # Read the parameters that need to be modified from the txt file. 139855a95caaSYouMin Chen key_list = list(info_from_txt.keys()) 139955a95caaSYouMin Chen hot = 0 140055a95caaSYouMin Chen try: 140155a95caaSYouMin Chen with open(fileskew_path,'r', encoding='UTF-8') as file: 140255a95caaSYouMin Chen for line in file: 140355a95caaSYouMin Chen if '/*' in line: 140455a95caaSYouMin Chen continue 140555a95caaSYouMin Chen 140655a95caaSYouMin Chen if '=' in line: 140755a95caaSYouMin Chen index_of_line = line.find('=') 140855a95caaSYouMin Chen if line[index_of_line : ].strip() != '=': 140955a95caaSYouMin Chen info_dict_key = line[ : index_of_line] 141055a95caaSYouMin Chen info_dict_value = line[index_of_line + 1 : -1] 141155a95caaSYouMin Chen 141255a95caaSYouMin Chen if '0x' in info_dict_value: 141355a95caaSYouMin Chen info_dict_value = int(info_dict_value[2:], 16) 141455a95caaSYouMin Chen else: 141555a95caaSYouMin Chen info_dict_value = int(info_dict_value) 141655a95caaSYouMin Chen 141755a95caaSYouMin Chen info_from_txt[info_dict_key]['value'] = info_dict_value 141855a95caaSYouMin Chen 141955a95caaSYouMin Chen # append info_dict_key to update_key_list, need updata value from txt 142055a95caaSYouMin Chen update_key_list.append(info_dict_key) 142155a95caaSYouMin Chen #print(f"D: update_key_list append, {info_dict_key}={info_dict_value}") 142255a95caaSYouMin Chen 142355a95caaSYouMin Chen hot = hot + 1 142455a95caaSYouMin Chen except (KeyError, ValueError): 142555a95caaSYouMin Chen print("KeyError or ValueError: {}={}".format(info_dict_key, info_dict_value)) 142655a95caaSYouMin Chen return -1 142755a95caaSYouMin Chen except Exception: 142855a95caaSYouMin Chen print("The file {} read failed".format(fileskew_path)) 142955a95caaSYouMin Chen return -1 143055a95caaSYouMin Chen 143155a95caaSYouMin Chen if hot == 0: 143255a95caaSYouMin Chen print("Failed to read DRAM parameters from the file") 143355a95caaSYouMin Chen return -1 143455a95caaSYouMin Chen else: 143555a95caaSYouMin Chen info_from_txt['start tag']['value'] = 0x12345678 143655a95caaSYouMin Chen 143755a95caaSYouMin Chen # get info from bin file 143855a95caaSYouMin Chen with open(filebin_path, 'rb') as file: 143955a95caaSYouMin Chen content = file.read() 144055a95caaSYouMin Chen # convert the target byte sequence 'start tag' into bytes, byteorder little 144155a95caaSYouMin Chen target_bytes = struct.pack('<I', info_from_txt['start tag']['value']) 144255a95caaSYouMin Chen start_position = 0 144355a95caaSYouMin Chen while True: 144455a95caaSYouMin Chen position = content.find(target_bytes, start_position) 144555a95caaSYouMin Chen if position == -1: 144655a95caaSYouMin Chen break 144755a95caaSYouMin Chen 144855a95caaSYouMin Chen version = int.from_bytes(content[position + 4: position + 8], byteorder='little') 144955a95caaSYouMin Chen if version >= 0 and version <= version_max: 145055a95caaSYouMin Chen break 145155a95caaSYouMin Chen else: 145255a95caaSYouMin Chen start_position = position + len(target_bytes) 145355a95caaSYouMin Chen 145455a95caaSYouMin Chen if position == -1: 145555a95caaSYouMin Chen if start_position == 0: 145655a95caaSYouMin Chen print("Find the 'start tag' in the ddrbin file failed") 145755a95caaSYouMin Chen else: 145855a95caaSYouMin Chen print("version = {}, invalid.".format(version)) 145955a95caaSYouMin Chen if version > version_max and version < (version_max + 5): 146055a95caaSYouMin Chen print("Please check if there is a new version of the tool available.") 146155a95caaSYouMin Chen return -1 146255a95caaSYouMin Chen 146355a95caaSYouMin Chen # get ddrbin parameters version 146455a95caaSYouMin Chen try: 146555a95caaSYouMin Chen bin_skew_offset = position + 4 146655a95caaSYouMin Chen filebin = open(filebin_path, 'rb+') 146755a95caaSYouMin Chen filebin.seek(bin_skew_offset) 146855a95caaSYouMin Chen version = int.from_bytes(filebin.read(4), byteorder='little') 146955a95caaSYouMin Chen except: 147055a95caaSYouMin Chen print("get version fail") 147155a95caaSYouMin Chen filebin.close() 147255a95caaSYouMin Chen return -1 147355a95caaSYouMin Chen 147455a95caaSYouMin Chen print("version {}".format(version)) 147555a95caaSYouMin Chen 147655a95caaSYouMin Chen # get ddrbin version information from bin file 147755a95caaSYouMin Chen # eg: DDR 03ea844c5d typ 24/09/03-10:42:57,fwver: v1.23 147855a95caaSYouMin Chen target_bytes = b'DDR ' 147955a95caaSYouMin Chen target_bytes_1 = b',fwver:' 148055a95caaSYouMin Chen start_position = 0 148155a95caaSYouMin Chen while True: 148255a95caaSYouMin Chen position = content.find(target_bytes, start_position) 148355a95caaSYouMin Chen position_1 = content.find(target_bytes_1, start_position) 148455a95caaSYouMin Chen if position == -1 or position_1 == -1: 148555a95caaSYouMin Chen break 148655a95caaSYouMin Chen elif (position_1 - position) < 100: 148755a95caaSYouMin Chen verinfo_full = content[position: position_1+30].decode('utf-8', errors='replace') 148855a95caaSYouMin Chen verinfo_full = verinfo_full[:verinfo_full.find('\n')] 148955a95caaSYouMin Chen if content[position_1 - verinfo_editable_length - 1].to_bytes(1, 'little') == b' ': 149055a95caaSYouMin Chen verinfo_editable_offset = position_1 - verinfo_editable_length 149155a95caaSYouMin Chen verinfo_full_offset = position 149255a95caaSYouMin Chen verinfo_full_length = len(verinfo_full.encode('utf-8')) 149355a95caaSYouMin Chen print("{}".format(verinfo_full)) 149455a95caaSYouMin Chen break 149555a95caaSYouMin Chen else: 149655a95caaSYouMin Chen start_position = position + len(target_bytes) 149755a95caaSYouMin Chen 149855a95caaSYouMin Chen if version < 2: 149955a95caaSYouMin Chen read_out = copy.deepcopy(sdram_head_info_v0) 150055a95caaSYouMin Chen write_in = copy.deepcopy(sdram_head_info_v0) 150155a95caaSYouMin Chen 150255a95caaSYouMin Chen # skip gcpu_gen_freq after version_info 150355a95caaSYouMin Chen filebin.seek(bin_skew_offset + 8) 1504*4026ce53SZhihuan He elif version <= version_max: 150555a95caaSYouMin Chen if version >= 3: 150655a95caaSYouMin Chen ddrbin_index.update(sdram_head_info_index_v2_3) 150755a95caaSYouMin Chen if version >= 4: 150855a95caaSYouMin Chen ddrbin_index.update(sdram_head_info_index_v3_4) 1509*4026ce53SZhihuan He if version >= 5: 1510*4026ce53SZhihuan He ddrbin_index.update(sdram_head_info_index_v5) 1511*4026ce53SZhihuan He if version >= 6: 1512*4026ce53SZhihuan He ddrbin_index.update(sdram_head_info_index_v6) 151355a95caaSYouMin Chen 151455a95caaSYouMin Chen if version < 5: 151555a95caaSYouMin Chen read_out = copy.deepcopy(sdram_head_info_v2) 151655a95caaSYouMin Chen write_in = copy.deepcopy(sdram_head_info_v2) 1517*4026ce53SZhihuan He elif version == 5: 151855a95caaSYouMin Chen read_out = copy.deepcopy(sdram_head_info_v5) 151955a95caaSYouMin Chen write_in = copy.deepcopy(sdram_head_info_v5) 1520*4026ce53SZhihuan He else: 1521*4026ce53SZhihuan He read_out = copy.deepcopy(sdram_head_info_v6) 1522*4026ce53SZhihuan He write_in = copy.deepcopy(sdram_head_info_v6) 152355a95caaSYouMin Chen 152455a95caaSYouMin Chen #index_info read out 152555a95caaSYouMin Chen for key in ddrbin_index: 1526*4026ce53SZhihuan He if '_u16' in key: 1527*4026ce53SZhihuan He try: 1528*4026ce53SZhihuan He ddrbin_index[key]['offset'] = int.from_bytes(filebin.read(2), byteorder='little') 1529*4026ce53SZhihuan He ddrbin_index[key]['size'] = int.from_bytes(filebin.read(2), byteorder='little') 1530*4026ce53SZhihuan He except: 1531*4026ce53SZhihuan He filebin.close() 1532*4026ce53SZhihuan He print("readout ddrbin_index perf_index fail") 1533*4026ce53SZhihuan He return -1 1534*4026ce53SZhihuan He else: 153555a95caaSYouMin Chen try: 153655a95caaSYouMin Chen ddrbin_index[key]['offset'] = int.from_bytes(filebin.read(1), byteorder='little') 153755a95caaSYouMin Chen ddrbin_index[key]['size'] = int.from_bytes(filebin.read(1), byteorder='little') 153855a95caaSYouMin Chen except: 153955a95caaSYouMin Chen filebin.close() 154055a95caaSYouMin Chen print("readout ddrbin_index fail") 154155a95caaSYouMin Chen return -1 1542*4026ce53SZhihuan He #print(f"D: {key} = {ddrbin_index[key]}",ddrbin_index[key]["offset"],ddrbin_index[key]["size"]) 154355a95caaSYouMin Chen else: 154455a95caaSYouMin Chen filebin.close() 154555a95caaSYouMin Chen print("version not support") 154655a95caaSYouMin Chen return -1 154755a95caaSYouMin Chen 1548*4026ce53SZhihuan He uart_iomux_count_calculation(ddrbin_index, info_from_txt, info_from_bin, read_out, version) 1549*4026ce53SZhihuan He 155055a95caaSYouMin Chen if bin_data_readout(filebin, ddrbin_index, read_out, bin_skew_offset, version, info_from_txt) != 0: 155155a95caaSYouMin Chen filebin.close() 155255a95caaSYouMin Chen print("bin_data_readout failed") 155355a95caaSYouMin Chen return -1 155455a95caaSYouMin Chen 155555a95caaSYouMin Chen bin_data_2_info(info_from_bin, read_out, ddrbin_index, version, info_from_txt) 155655a95caaSYouMin Chen if gen_txt_from_bin == 1: 155755a95caaSYouMin Chen if gen_info_from_bin(filegen_path, info_from_bin, verinfo_full, version) == 0: 155855a95caaSYouMin Chen print("generate info from bin file ok.") 155955a95caaSYouMin Chen filebin.close() 156055a95caaSYouMin Chen return 0 156155a95caaSYouMin Chen else: 156255a95caaSYouMin Chen print("generate info fail.") 156355a95caaSYouMin Chen filebin.close() 156455a95caaSYouMin Chen return -1 156555a95caaSYouMin Chen 1566*4026ce53SZhihuan He ret = txt_data_2_bin_data(info_from_txt, info_from_bin, ddrbin_index, write_in, version) 1567*4026ce53SZhihuan He if ret != 0: 1568*4026ce53SZhihuan He filebin.close() 1569*4026ce53SZhihuan He print("modify ddrbin failed") 1570*4026ce53SZhihuan He return -1 157155a95caaSYouMin Chen 157255a95caaSYouMin Chen if version < 2: 157355a95caaSYouMin Chen if version_old_hit == 0: 157455a95caaSYouMin Chen filebin.seek(bin_skew_offset + 8) 157555a95caaSYouMin Chen for i in range(len(write_in)): 157655a95caaSYouMin Chen try: 157755a95caaSYouMin Chen filebin.write(write_in[i][1].to_bytes(4,byteorder='little')) 157855a95caaSYouMin Chen except: 157955a95caaSYouMin Chen print("write bin file fail") 158055a95caaSYouMin Chen else: 158155a95caaSYouMin Chen filebin.seek(bin_skew_offset + 20) 158255a95caaSYouMin Chen for i in range(3, len(write_in)): 158355a95caaSYouMin Chen try: 158455a95caaSYouMin Chen filebin.write(write_in[i][1].to_bytes(4,byteorder='little')) 158555a95caaSYouMin Chen except: 158655a95caaSYouMin Chen print("write bin file fail") 158755a95caaSYouMin Chen elif version <= version_max: 158855a95caaSYouMin Chen write_in_bin_data_v2(filebin, bin_skew_offset, write_in, ddrbin_index, info_from_txt, version) 158955a95caaSYouMin Chen print("modify end\n") 159055a95caaSYouMin Chen 159155a95caaSYouMin Chen # update ddrbin version information to bin file 159255a95caaSYouMin Chen if verinfo_editable_offset != 0: 159355a95caaSYouMin Chen if verinfo_editable == '': 159455a95caaSYouMin Chen #print(f"position_1={position_1}, position_2={position_2}, {old_verinfo_editable}") 159555a95caaSYouMin Chen current_time = datetime.now() 159655a95caaSYouMin Chen verinfo_editable = current_time.strftime("%y/%m/%d-%H:%M.%S") 159755a95caaSYouMin Chen if len(verinfo_editable) < verinfo_editable_length: 159855a95caaSYouMin Chen verinfo_editable = verinfo_editable.ljust(verinfo_editable_length) 159955a95caaSYouMin Chen 160055a95caaSYouMin Chen verinfo_editable_bytes = verinfo_editable.encode('utf-8')[:verinfo_editable_length] 160155a95caaSYouMin Chen try: 160255a95caaSYouMin Chen filebin.seek(verinfo_editable_offset) 160355a95caaSYouMin Chen filebin.write(verinfo_editable_bytes) 160455a95caaSYouMin Chen filebin.seek(verinfo_full_offset) 160555a95caaSYouMin Chen new_verinfo_full = filebin.read(verinfo_full_length).decode('utf-8', errors='replace') 160655a95caaSYouMin Chen print("new ddrbin version information: {}".format(new_verinfo_full)) 160755a95caaSYouMin Chen except: 160855a95caaSYouMin Chen print("change verinfo_editable error") 160955a95caaSYouMin Chen 161055a95caaSYouMin Chen filebin.close() 161155a95caaSYouMin Chen 161255a95caaSYouMin Chen return 0 161355a95caaSYouMin Chen 161455a95caaSYouMin Chen 161555a95caaSYouMin Chenif __name__ == '__main__': 161655a95caaSYouMin Chen #print(f"D: argc = {len(sys.argv)}, argv = {sys.argv}") 161755a95caaSYouMin Chen ddrbin_tool(len(sys.argv), sys.argv) 161855a95caaSYouMin Chen 1619