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 164026ce53SZhihuan 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', 246348802dSWesley Yao 'rv1126', 'rv1126b'] 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 554026ce53SZhihuan He# struct perf_index_info, u16 564026ce53SZhihuan Heperf_index_info = { 574026ce53SZhihuan He 'offset' : 0, 584026ce53SZhihuan He 'size' : 0 594026ce53SZhihuan He} 604026ce53SZhihuan 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(), 75*70cb6a2fSYouMin Chen 'lp4x_index' : index_info.copy(), 7655a95caaSYouMin Chen} 7755a95caaSYouMin Chen 7855a95caaSYouMin Chensdram_head_info_index_v2_3 = { 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(), 904026ce53SZhihuan He 'reserved0_index' : index_info.copy(), 914026ce53SZhihuan He} 924026ce53SZhihuan He 934026ce53SZhihuan Hesdram_head_info_index_v5 = { 944026ce53SZhihuan He 'ch_perf_index_u16' : perf_index_info.copy(), 954026ce53SZhihuan He 'com_perf_index_u16' : perf_index_info.copy(), 964026ce53SZhihuan He} 974026ce53SZhihuan He 984026ce53SZhihuan Hesdram_head_info_index_v6 = { 994026ce53SZhihuan 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 1834026ce53SZhihuan Heuart_id_2_iomux = { 1844026ce53SZhihuan He # uart0 : m0 : addr, iomux addr0, iomux mask0, iomux val0, iomux addr1, iomux mask1, iomux val1... 1854026ce53SZhihuan He ('rk3568', 'rk3566', 'rk356x') : { 1864026ce53SZhihuan He 'uart0' : {'m0' : [0xfdd50000, 0xfdc20100, 0, 0x3000000, 0xfdc20010, 0, 0x770033, 0, 0, 0]}, 1874026ce53SZhihuan He 'uart1' : {'m0' : [0xfe650000, 0xfdc6030c, 0, 0x1000000, 0xfdc60028, 0, 0x70002000, 0xfdc6002c, 0, 0x70002], 1884026ce53SZhihuan He 'm1' : [0xfe650000, 0xfdc6030c, 0, 0x1000100, 0xfdc6005c, 0, 0x77004400, 0, 0, 0]}, 1894026ce53SZhihuan He 'uart2' : {'m0' : [0xfe660000, 0xfdc6030c, 0, 0x0c000000, 0xfdc20018, 0, 0x00770011, 0, 0, 0], 1904026ce53SZhihuan He 'm1' : [0xfe660000, 0xfdc6030c, 0, 0xc000400, 0xfdc6001c, 0, 0x7700220, 0, 0, 0]}, 1914026ce53SZhihuan He 'uart3' : {'m0' : [0xfe670000, 0xfdc6030c, 0, 0x10000000, 0xfdc60000, 0, 0x770022, 0, 0, 0], 1924026ce53SZhihuan He 'm1' : [0xfe670000, 0xfdc6030c, 0, 0x10001000, 0xfdc6004c, 0, 0x70004000, 0xfdc60050, 0, 0x70004]}, 1934026ce53SZhihuan He 'uart4' : {'m0' : [0xfe680000, 0xfdc6030c, 0, 0x40000000, 0xfdc60004, 0, 0x7070202, 0, 0, 0], 1944026ce53SZhihuan He 'm1' : [0xfe680000, 0xfdc6030c, 0, 0x40004000, 0xfdc60048, 0, 0x7700440, 0, 0, 0]}, 1954026ce53SZhihuan He 'uart5' : {'m0' : [0xfe690000, 0xfdc60310, 0, 0x10000, 0xfdc60020, 0, 0x7700330, 0, 0, 0], 1964026ce53SZhihuan He 'm1' : [0xfe690000, 0xfdc60310, 0, 0x10001, 0xfdc60050, 0, 0x77004400, 0, 0, 0]}, 1974026ce53SZhihuan He 'uart6' : {'m0' : [0xfe6a0000, 0xfdc60310, 0, 0x40000, 0xfdc60020, 0, 0x70003000, 0xfdc60024, 0, 0x70003], 1984026ce53SZhihuan He 'm1' : [0xfe6a0000, 0xfdc60310, 0, 0x40004, 0xfdc6001c, 0, 0x7700330, 0, 0, 0]}, 1994026ce53SZhihuan He 'uart7' : {'m0' : [0xfe6b0000, 0xfdc60310, 0, 0x300000, 0xfdc60024, 0, 0x7700330, 0, 0, 0], 2004026ce53SZhihuan He 'm1' : [0xfe6b0000, 0xfdc60310, 0, 0x300010, 0xfdc60054, 0, 0x770044, 0, 0, 0], 2014026ce53SZhihuan He 'm2' : [0xfe6b0000, 0xfdc60310, 0, 0x300020, 0xfdc60060, 0, 0x77004400, 0, 0, 0]}, 2024026ce53SZhihuan He 'uart8' : {'m0' : [0xfe6c0000, 0xfdc60310, 0, 0x400000, 0xfdc60034, 0, 0x7700230, 0, 0, 0], 2034026ce53SZhihuan He 'm1' : [0xfe6c0000, 0xfdc60310, 0, 0x400040, 0xfdc6003c, 0, 0x70074004, 0, 0, 0]}, 2044026ce53SZhihuan He 'uart9' : {'m0' : [0xfe6d0000, 0xfdc60310, 0, 0x3000000, 0xfdc60024, 0, 0x70003000, 0xfdc60028, 0, 0x70003], 2054026ce53SZhihuan He 'm1' : [0xfe6d0000, 0xfdc60310, 0, 0x3000100, 0xfdc60074, 0, 0x7700440, 0, 0, 0], 2064026ce53SZhihuan He 'm2' : [0xfe6d0000, 0xfdc60310, 0, 0x3000200, 0xfdc60064, 0, 0x770044, 0, 0, 0]}, 2074026ce53SZhihuan He }, 2084026ce53SZhihuan He ('rk3528') : { 2094026ce53SZhihuan He 'uart0' : {'m0' : [0xff9f0000, 0xff550094, 0, 0xf0001000, 0xff550098, 0, 0xf0001, 0, 0, 0], 2104026ce53SZhihuan He 'm1' : [0xff9f0000, 0xff570040, 0, 0xf0002, 0xff570040, 0, 0xf00020, 0, 0, 0]}, 2114026ce53SZhihuan He 'uart1' : {'m0' : [0xff9f8000, 0xff560084, 0, 0xf0002000, 0xff560084, 0, 0xf000200, 0, 0, 0], 2124026ce53SZhihuan He 'm1' : [0xff9f8000, 0xff550094, 0, 0xf000200, 0xff550094, 0, 0xf00020, 0, 0, 0]}, 2134026ce53SZhihuan He 'uart2' : {'m0' : [0xffa00000, 0xff560060, 0, 0xf0001, 0xff560060, 0, 0xf00010, 0, 0, 0], 2144026ce53SZhihuan He 'm1' : [0xffa00000, 0xff560028, 0, 0xf0001, 0xff560028, 0, 0xf00010, 0, 0, 0]}, 2154026ce53SZhihuan He 'uart3' : {'m0' : [0xffa08000, 0xff550088, 0, 0xf0002, 0xff550088, 0, 0xf00020, 0, 0, 0], 2164026ce53SZhihuan He 'm1' : [0xffa08000, 0xff55008c, 0, 0xf0003000, 0xff550090, 0, 0xf0003, 0, 0, 0]}, 2174026ce53SZhihuan He 'uart4' : {'m0' : [0xffa10000, 0xff570040, 0, 0xf000300, 0xff570040, 0, 0xf0003000, 0, 0, 0]}, 2184026ce53SZhihuan He 'uart5' : {'m0' : [0xffa18000, 0xff560020, 0, 0xf000200, 0xff560020, 0, 0xf0002000, 0, 0, 0], 2194026ce53SZhihuan He 'm1' : [0xffa18000, 0xff56003c, 0, 0xf0002, 0xff56003c, 0, 0xf0002000, 0, 0, 0]}, 2204026ce53SZhihuan He 'uart6' : {'m0' : [0xffa20000, 0xff560064, 0, 0xf0004000, 0xff560064, 0, 0xf000400, 0, 0, 0], 2214026ce53SZhihuan He 'm1' : [0xffa20000, 0xff560070, 0, 0xf0004000, 0xff560070, 0, 0xf00040, 0, 0, 0]}, 2224026ce53SZhihuan He 'uart7' : {'m0' : [0xffa28000, 0xff560068, 0, 0xf0004000, 0xff560068, 0, 0xf000400, 0, 0, 0], 2234026ce53SZhihuan He 'm1' : [0xffa28000, 0xff560028, 0, 0xf0004000, 0xff560028, 0, 0xf000400, 0, 0, 0]}, 2244026ce53SZhihuan He 2254026ce53SZhihuan He }, 2264026ce53SZhihuan He} 2274026ce53SZhihuan He 2284026ce53SZhihuan Heuart_iomux_info = { 2294026ce53SZhihuan He 'uart_addr' : 0, 2304026ce53SZhihuan He} 2314026ce53SZhihuan 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 2784026ce53SZhihuan He# struct sdram_head_info_v6 2794026ce53SZhihuan Hesdram_head_info_v6 = { 2804026ce53SZhihuan He 'global_info' : global_info.copy(), 2814026ce53SZhihuan He 'ddr2_info' : ddr2_3_4_lp2_3_info_v5.copy(), 2824026ce53SZhihuan He 'ddr3_info' : ddr2_3_4_lp2_3_info_v5.copy(), 2834026ce53SZhihuan He 'ddr4_info' : ddr2_3_4_lp2_3_info_v5.copy(), 2844026ce53SZhihuan He 'ddr5_info' : ddr2_3_4_lp2_3_info_v5.copy(), 2854026ce53SZhihuan He 'lp2_info' : ddr2_3_4_lp2_3_info_v5.copy(), 2864026ce53SZhihuan He 'lp3_info' : ddr2_3_4_lp2_3_info_v5.copy(), 2874026ce53SZhihuan He 'lp4_info' : lp4_info.copy(), 2884026ce53SZhihuan He 'dq_map_info' : dq_map_info.copy(), 2894026ce53SZhihuan He 'lp4x_info' : lp4_info.copy(), 2904026ce53SZhihuan He 'lp5_info' : lp4_info.copy(), 2914026ce53SZhihuan He 'lp4_4x_hash_info' : hash_info.copy(), 2924026ce53SZhihuan He 'lp5_hash_info' : hash_info.copy(), 2934026ce53SZhihuan He 'ddr4_hash_info' : hash_info.copy(), 2944026ce53SZhihuan He 'lp3_hash_info' : hash_info.copy(), 2954026ce53SZhihuan He 'ddr3_hash_info' : hash_info.copy(), 2964026ce53SZhihuan He 'lp2_hash_info' : hash_info.copy(), 2974026ce53SZhihuan He 'ddr2_hash_info' : hash_info.copy(), 2984026ce53SZhihuan He 'ddr5_hash_info' : hash_info.copy(), 2994026ce53SZhihuan He 'uart_iomux_info' : uart_iomux_info.copy(), 3004026ce53SZhihuan He} 3014026ce53SZhihuan 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}, 3494026ce53SZhihuan He 'periodic_interval': {'value': 0, 'num_base': 'dec', 'index': 'global_index', 'position': 'reserved_1', 'shift': 11, 'mask': 0x7f, 'version': 2}, 3504026ce53SZhihuan 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}, 3554026ce53SZhihuan 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}, 9604026ce53SZhihuan He 9614026ce53SZhihuan 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 9644026ce53SZhihuan Heuart_iomux_info_template = { 9654026ce53SZhihuan He 'uart_iomux_addr0': {'value': 0, 'num_base': 'hex', 'index': 'uart_iomux_index_u16', 'position': 'uart_iomux_addr0', 'shift': 0, 'mask': 0xffffffff, 'version': 6}, 9664026ce53SZhihuan He 'uart_iomux_mask0': {'value': 0, 'num_base': 'hex', 'index': 'uart_iomux_index_u16', 'position': 'uart_iomux_val0', 'shift': 0, 'mask': 0xffffffff, 'version': 6}, 9674026ce53SZhihuan He 'uart_iomux_val0': {'value': 0, 'num_base': 'hex', 'index': 'uart_iomux_index_u16', 'position': 'uart_iomux_val0', 'shift': 0, 'mask': 0xffffffff, 'version': 6}, 9684026ce53SZhihuan 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: 9854026ce53SZhihuan He if "reserved" in index_name: 9864026ce53SZhihuan He continue 9874026ce53SZhihuan He if "index_u16" in index_name: 9884026ce53SZhihuan He head_info_name = index_name[:-10]+'_info' 9894026ce53SZhihuan 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: 10254026ce53SZhihuan He if "reserved" in index_name: 10264026ce53SZhihuan He continue 10274026ce53SZhihuan He if "index_u16" in index_name: 10284026ce53SZhihuan He head_info_name = index_name[:-10]+'_info' 10294026ce53SZhihuan 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: 10624026ce53SZhihuan He if "reserved" in index_name: 10634026ce53SZhihuan He continue 10644026ce53SZhihuan He if "index_u16" in index_name: 10654026ce53SZhihuan He head_info_name = index_name[:-10]+'_info' 10664026ce53SZhihuan He else: 106755a95caaSYouMin Chen head_info_name = index_name[:-6]+'_info' 10684026ce53SZhihuan He if head_info_name not in write_in: 10694026ce53SZhihuan 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 11044026ce53SZhihuan Hedef modify_global_uart_2_uart_iomux(info_from_txt, ddrbin_index, version): 11054026ce53SZhihuan He if version < 6: 11064026ce53SZhihuan He return 0 11074026ce53SZhihuan He uart_id = info_from_txt.get('uart id', {}).get('value') 11084026ce53SZhihuan He uart_iomux = info_from_txt.get('uart iomux', {}).get('value') 11094026ce53SZhihuan He 11104026ce53SZhihuan He for chips, config in uart_id_2_iomux.items(): 11114026ce53SZhihuan He if chip_info in chips: 11124026ce53SZhihuan He uart = 'uart' + str(uart_id) 11134026ce53SZhihuan He uart_config = config.get(uart) 11144026ce53SZhihuan He if not uart_config: 11154026ce53SZhihuan He print("Warn: uart_iomux_index_u16: {} will disable uart!".format(uart)) 11164026ce53SZhihuan He for key, value in info_from_txt.items(): 11174026ce53SZhihuan He if value['index'] == 'uart_iomux_index_u16': 11184026ce53SZhihuan He value['value'] = 0 11194026ce53SZhihuan He return 0 11204026ce53SZhihuan He 11214026ce53SZhihuan He mode = 'm' + str(uart_iomux) 11224026ce53SZhihuan He iomux_config = uart_config.get(mode) 11234026ce53SZhihuan He if not iomux_config: 11244026ce53SZhihuan He print("Error: uart_iomux_index_u16: Mode {} not found for {} in configuration for chip {}.".format(mode, uart, chip_info)) 11254026ce53SZhihuan He return -1 11264026ce53SZhihuan He 11274026ce53SZhihuan He i = 0 11284026ce53SZhihuan He for key, value in info_from_txt.items(): 11294026ce53SZhihuan He if value['index'] == 'uart_iomux_index_u16': 11304026ce53SZhihuan He value['value'] = iomux_config[i] 11314026ce53SZhihuan He i += 1 11324026ce53SZhihuan He #print(f"D: update info_from_txt[{key}] = {value['value']}") 11334026ce53SZhihuan He 11344026ce53SZhihuan He return 0 113555a95caaSYouMin Chen 11366348802dSWesley Yaodef txt_data_check_availability(info_from_txt, chip_info): 11376348802dSWesley Yao # RV1126B: lp4_f1_freq_mhz and lp4x_f1_freq_mhz required less than 400MHz. 11386348802dSWesley Yao if chip_info == 'rv1126b': 11396348802dSWesley Yao for key in ['lp4_f1_freq_mhz', 'lp4x_f1_freq_mhz']: 11406348802dSWesley Yao if info_from_txt[key]['value'] > 400: 11416348802dSWesley Yao print("Error: {}={} out of range, required 324MHz-400MHz.".format(key, info_from_txt[key]['value'])) 11426348802dSWesley Yao return -1 11436348802dSWesley Yao 11446348802dSWesley Yao # RK3588,RK3576: the frequency of F0 must be maximum. 11456348802dSWesley Yao if chip_info in ['rk3588', 'rk3576']: 11466348802dSWesley Yao lp4_freq_keys = ['lp4_freq', 'lp4_f1_freq_mhz', 'lp4_f2_freq_mhz', 'lp4_f3_freq_mhz'] 11476348802dSWesley Yao lp4x_freq_keys = ['lp4x_freq', 'lp4x_f1_freq_mhz', 'lp4x_f2_freq_mhz', 'lp4x_f3_freq_mhz'] 11486348802dSWesley Yao lp5_freq_keys = ['lp5_freq', 'lp5_f1_freq_mhz', 'lp5_f2_freq_mhz', 'lp5_f3_freq_mhz'] 11496348802dSWesley Yao for freq_keys in lp4_freq_keys, lp4x_freq_keys, lp5_freq_keys: 11506348802dSWesley Yao if info_from_txt[freq_keys[0]]['value'] != max([info_from_txt[key]['value'] for key in freq_keys]): 11516348802dSWesley Yao freq_values = {key: info_from_txt[key]['value'] for key in freq_keys} 11526348802dSWesley Yao print("Error: {} value must be maximum, current {}.".format(freq_keys[0], freq_values)) 11536348802dSWesley Yao return -1 11546348802dSWesley Yao 11556348802dSWesley Yao return 0 11566348802dSWesley Yao 115755a95caaSYouMin Chen#info from bin + info from txt generate to loader parameters 115855a95caaSYouMin Chendef txt_data_2_bin_data(info_from_txt, info_from_bin, ddrbin_index, write_in, version): 115955a95caaSYouMin Chen print("\nnew bin config:") 116055a95caaSYouMin Chen 11614026ce53SZhihuan He need_modify_uart_iomux = False 116255a95caaSYouMin Chen for key, value in info_from_txt.items(): 116355a95caaSYouMin Chen if key == 'start tag': 116455a95caaSYouMin Chen continue 116555a95caaSYouMin Chen if (info_from_txt[key]['value'] == 0) and (key not in update_key_list): 116655a95caaSYouMin Chen info_from_txt[key]['value'] = info_from_bin[key]['value'] 116755a95caaSYouMin Chen else: 11684026ce53SZhihuan He if info_from_txt[key]['index'] == 'uart_iomux_index_u16': 11694026ce53SZhihuan He continue 117055a95caaSYouMin Chen if info_from_txt[key]['num_base'] == 'hex': 117155a95caaSYouMin Chen print("{}: {}".format(key, hex(info_from_txt[key]['value']))) 117255a95caaSYouMin Chen else: 117355a95caaSYouMin Chen print("{}: {}".format(key, info_from_txt[key]['value'])) 11744026ce53SZhihuan He if key == 'uart id' or key == 'uart iomux': 11754026ce53SZhihuan He need_modify_uart_iomux = True 11764026ce53SZhihuan He 11774026ce53SZhihuan He if need_modify_uart_iomux: 11784026ce53SZhihuan He ret = modify_global_uart_2_uart_iomux(info_from_txt, ddrbin_index, version) 11794026ce53SZhihuan He if ret != 0: 11804026ce53SZhihuan He return -1 118155a95caaSYouMin Chen #print(info_from_txt) 118255a95caaSYouMin Chen 118355a95caaSYouMin Chen modefy_2_bin_data(info_from_txt, write_in, ddrbin_index, version) 118455a95caaSYouMin Chen 118555a95caaSYouMin Chen return 0 118655a95caaSYouMin Chen 11874026ce53SZhihuan Hedef uart_iomux_count_calculation(ddrbin_index, info_from_txt, info_from_bin, read_out, version): 11884026ce53SZhihuan He if version <= version_max: 11894026ce53SZhihuan He index_size = 0 11904026ce53SZhihuan He for index_name in ddrbin_index: 11914026ce53SZhihuan He if "uart_iomux_index_u16" in index_name: 11924026ce53SZhihuan He index_size = ddrbin_index[index_name]['size'] 11934026ce53SZhihuan He if (index_size == 0): 11944026ce53SZhihuan He return -1 11954026ce53SZhihuan He head_info_name = 'uart_iomux_info' 11964026ce53SZhihuan He for i in range(index_size // 3): 11974026ce53SZhihuan He addr = 'uart_iomux_addr' + str(i) 11984026ce53SZhihuan He mask = 'uart_iomux_mask' + str(i) 11994026ce53SZhihuan He value = 'uart_iomux_val' + str(i) 12004026ce53SZhihuan He read_out[head_info_name][addr] = 0 12014026ce53SZhihuan He read_out[head_info_name][mask] = 0 12024026ce53SZhihuan He read_out[head_info_name][value] = 0 12034026ce53SZhihuan He #print(f"D: read_out[head_info_name] = {read_out[head_info_name]}") 12044026ce53SZhihuan He new_addr_dic2 = {addr: uart_iomux_info_template['uart_iomux_addr0'].copy()} 12054026ce53SZhihuan He new_mask_dic2 = {mask: uart_iomux_info_template['uart_iomux_mask0'].copy()} 12064026ce53SZhihuan He new_val_dic2 = {value: uart_iomux_info_template['uart_iomux_val0'].copy()} 12074026ce53SZhihuan He new_addr_dic2[addr]['position'] = f'uart_iomux_addr{i}' 12084026ce53SZhihuan He new_mask_dic2[mask]['position'] = f'uart_iomux_mask{i}' 12094026ce53SZhihuan He new_val_dic2[value]['position'] = f'uart_iomux_val{i}' 12104026ce53SZhihuan He info_from_txt.update(new_addr_dic2) 12114026ce53SZhihuan He info_from_txt.update(new_mask_dic2) 12124026ce53SZhihuan He info_from_txt.update(new_val_dic2) 12134026ce53SZhihuan He info_from_bin.update(new_addr_dic2) 12144026ce53SZhihuan He info_from_bin.update(new_mask_dic2) 12154026ce53SZhihuan He info_from_bin.update(new_val_dic2) 121655a95caaSYouMin Chen 121755a95caaSYouMin Chendef bin_data_readout(filebin, ddrbin_index, read_out, bin_skew_offset, version, info_from_txt): 121855a95caaSYouMin Chen global rk3528_skew_info 121955a95caaSYouMin Chen 122055a95caaSYouMin Chen if version < 2: 122155a95caaSYouMin Chen for i in range(len(read_out)): 122255a95caaSYouMin Chen try: 122355a95caaSYouMin Chen read_out[i][1] = int.from_bytes(filebin.read(4), byteorder='little') 122455a95caaSYouMin Chen #print(f"D: read_out {hex(read_out[i][0])} = {read_out[i][1]}") 122555a95caaSYouMin Chen except: 122655a95caaSYouMin Chen print("read bin file fail") 122755a95caaSYouMin Chen return -1 122855a95caaSYouMin Chen elif version <= version_max: 122955a95caaSYouMin Chen for index_name in ddrbin_index: 12304026ce53SZhihuan He if "reserved" in index_name: 12314026ce53SZhihuan He continue 12324026ce53SZhihuan He if "_perf_" in index_name: 12334026ce53SZhihuan He continue 12344026ce53SZhihuan He if "index_u16" in index_name: 12354026ce53SZhihuan He head_info_name = index_name[:-10]+'_info' 12364026ce53SZhihuan He else: 123755a95caaSYouMin Chen head_info_name = index_name[:-6]+'_info' 123855a95caaSYouMin Chen if ddrbin_index[index_name]['offset'] != 0 and 'skew' not in index_name: 123955a95caaSYouMin Chen filebin.seek(bin_skew_offset + (ddrbin_index[index_name]['offset'] - 1) * 4) 124055a95caaSYouMin Chen index_size = ddrbin_index[index_name]['size'] 124155a95caaSYouMin Chen for key in read_out[head_info_name]: 124255a95caaSYouMin Chen if index_size > 0: 124355a95caaSYouMin Chen try: 124455a95caaSYouMin Chen temp_value = int.from_bytes(filebin.read(4), byteorder='little') 124555a95caaSYouMin Chen read_out[head_info_name][key] = temp_value 124655a95caaSYouMin Chen #print(f"D: {head_info_name} {key} = {read_out[head_info_name][key]}") 124755a95caaSYouMin Chen index_size -= 1 124855a95caaSYouMin Chen except: 124955a95caaSYouMin Chen print("read {} from bin file fail".format(head_info_name)) 125055a95caaSYouMin Chen return -1 125155a95caaSYouMin Chen elif ddrbin_index[index_name]['offset'] != 0 and 'skew' in index_name: 125255a95caaSYouMin Chen try: 125355a95caaSYouMin Chen filebin.seek(bin_skew_offset + (ddrbin_index[index_name]['offset'] - 1) * 4) 125455a95caaSYouMin Chen skew_sub_ver = int.from_bytes(filebin.read(4), byteorder='little') & 0xff 125555a95caaSYouMin Chen except: 125655a95caaSYouMin Chen print("read skew_sub_ver from bin file fail") 125755a95caaSYouMin Chen return -1 125855a95caaSYouMin Chen if chip_info == 'rk3528' and skew_sub_ver == 0x1: 125955a95caaSYouMin Chen for i in rk3528_skew_info: 126055a95caaSYouMin Chen if i == 'skew_sub_version': 126155a95caaSYouMin Chen rk3528_skew_info[i] = skew_sub_ver 126255a95caaSYouMin Chen continue 126355a95caaSYouMin Chen for j in rk3528_skew_info[i]: 126455a95caaSYouMin Chen try: 126555a95caaSYouMin Chen temp_value = int.from_bytes(filebin.read(4), byteorder='little') 126655a95caaSYouMin Chen rk3528_skew_info[i][j] = temp_value 126755a95caaSYouMin Chen #print(f"D: {i}.{j}={rk3528_skew_info[i][j]}") 126855a95caaSYouMin Chen except: 126955a95caaSYouMin Chen print("read {} from bin file fail".format(head_info_name)) 127055a95caaSYouMin Chen return -1 127155a95caaSYouMin Chen 127255a95caaSYouMin Chen read_out.update({'skew_info' : rk3528_skew_info}) 127355a95caaSYouMin Chen 127455a95caaSYouMin Chen return 0 127555a95caaSYouMin Chen 127655a95caaSYouMin Chen 127755a95caaSYouMin Chendef gen_info_from_bin(filegen_path, info_from_bin, verinfo_full, version): 127855a95caaSYouMin Chen with open(filegen_path, 'w+', encoding='utf-8') as file: 127955a95caaSYouMin Chen file.write('/* ' + verinfo_full + ' */\n') 128055a95caaSYouMin Chen 128155a95caaSYouMin Chen with open(filegen_path, 'a', encoding='utf-8') as file: 128255a95caaSYouMin Chen for key, value in info_from_bin.items(): 128355a95caaSYouMin Chen if "reserved" in key: 128455a95caaSYouMin Chen continue 128555a95caaSYouMin Chen 128655a95caaSYouMin Chen if value['num_base'] == 'hex': 128755a95caaSYouMin Chen value_str = str(hex(value['value'])) 128855a95caaSYouMin Chen else: 128955a95caaSYouMin Chen value_str = str(value['value']) 129055a95caaSYouMin Chen 12914026ce53SZhihuan He if value['index'] == 'uart_iomux_index_u16': 12924026ce53SZhihuan He write_buff = '/* ' + key + '=' + value_str + ' */' 12934026ce53SZhihuan He else: 129455a95caaSYouMin Chen write_buff = key + '=' + value_str 129555a95caaSYouMin Chen #print(f"D: {write_buff}") 129655a95caaSYouMin Chen file.write(write_buff + '\n') 129755a95caaSYouMin Chen 129855a95caaSYouMin Chen with open(filegen_path, 'a', encoding='utf-8') as file: 129955a95caaSYouMin Chen file.write('end' + '\n') 130055a95caaSYouMin Chen 130155a95caaSYouMin Chen return 0 130255a95caaSYouMin Chen 130355a95caaSYouMin Chen 130455a95caaSYouMin Chendef print_help(): 130555a95caaSYouMin Chen print( 130655a95caaSYouMin Chen "For more details, please refer to the ddrbin_tool_user_guide.txt\n"\ 130755a95caaSYouMin Chen "This tools support two functions\n"\ 130855a95caaSYouMin Chen "for example:\n"\ 130955a95caaSYouMin Chen "function 1: modify ddr.bin file from ddrbin_param.txt.\n"\ 131055a95caaSYouMin Chen " 1) modify 'ddrbin_param.txt', set ddr frequency, uart info etc what you want.\n"\ 131155a95caaSYouMin Chen " If want to keep items default, please keep these items blank.\n"\ 131255a95caaSYouMin Chen " The date & time in the version information will be updated by default.\n"\ 13134026ce53SZhihuan He " like: ./ddrbin_tool.py px30 ddrbin_param.txt px30_ddr_333MHz_v1.13.bin\n"\ 131455a95caaSYouMin Chen "\n"\ 131555a95caaSYouMin Chen " OPTION: --verinfo_editable=TEXT The TEXT(max 17 chars) will replace\n"\ 131655a95caaSYouMin Chen " the date & time in the version information.\n"\ 13174026ce53SZhihuan He " like: ./ddrbin_tool.py px30 ddrbin_param.txt px30_ddr_333MHz_v1.13.bin [OPTION]\n"\ 131855a95caaSYouMin Chen "\n"\ 131955a95caaSYouMin Chen "function 2: get ddr.bin file config to gen_param.txt file\n"\ 132055a95caaSYouMin Chen " If want to get ddrbin file config, please run like that:\n"\ 13214026ce53SZhihuan He " ./ddrbin_tool.py px30 -g gen_param.txt px30_ddr_333MHz_v1.15.bin\n"\ 132255a95caaSYouMin Chen " The config will show in gen_param.txt.\n"\ 132355a95caaSYouMin Chen "\n"\ 132455a95caaSYouMin Chen "Note: The function 1 and function 2 are two separate functions\n"\ 132555a95caaSYouMin Chen "The gen_param.txt file which is generated by function 2 is no need used in function 1.\n"\ 132655a95caaSYouMin Chen "\n"\ 132755a95caaSYouMin Chen "For more details, please refer to the ddrbin_tool_user_guide.txt\n"\ 132855a95caaSYouMin Chen ) 132955a95caaSYouMin Chen 133055a95caaSYouMin Chen 133155a95caaSYouMin Chendef ddrbin_tool(argc, argv): 133255a95caaSYouMin Chen global updata_key_list 133355a95caaSYouMin Chen global chip_info 133455a95caaSYouMin Chen 133555a95caaSYouMin Chen info_from_txt = copy.deepcopy(base_info_full) 133655a95caaSYouMin Chen info_from_bin = copy.deepcopy(base_info_full) 133755a95caaSYouMin Chen ddrbin_index = copy.deepcopy(sdram_head_info_index_v2) 133855a95caaSYouMin Chen 133955a95caaSYouMin Chen version_old_hit = 0 134055a95caaSYouMin Chen gen_txt_from_bin = 0 134155a95caaSYouMin Chen 134255a95caaSYouMin Chen verinfo_full = '' 134355a95caaSYouMin Chen verinfo_full_offset = 0 134455a95caaSYouMin Chen verinfo_full_length = 0 134555a95caaSYouMin Chen verinfo_editable = '' 134655a95caaSYouMin Chen verinfo_editable_offset = 0 134755a95caaSYouMin Chen verinfo_editable_length = 17 134855a95caaSYouMin Chen 1349*70cb6a2fSYouMin Chen print("version v1.24 20250610") 135055a95caaSYouMin Chen print("python {}, {}, {}".format(sys.version.split(' ', 1)[0], platform.system(), platform.machine())) 135155a95caaSYouMin Chen if sys.version_info < (3, 6): 135255a95caaSYouMin Chen print("Warning: Please installed Python 3.6 or later.") 135355a95caaSYouMin Chen 135455a95caaSYouMin Chen if argc == 1: 135555a95caaSYouMin Chen print_help() 135655a95caaSYouMin Chen return -1 135755a95caaSYouMin Chen 135855a95caaSYouMin Chen chip_info = argv[1] 135955a95caaSYouMin Chen if chip_info not in chip_list: 136055a95caaSYouMin Chen chip_info = 'others chip' 136155a95caaSYouMin Chen print("chip: {}".format(chip_info)) 136255a95caaSYouMin Chen 136355a95caaSYouMin Chen try: 136455a95caaSYouMin Chen opts, args = getopt.gnu_getopt(argv, 'g:h', ['verinfo_editable=']) 136555a95caaSYouMin Chen except: 136655a95caaSYouMin Chen print_help() 136755a95caaSYouMin Chen return -1 136855a95caaSYouMin Chen 136955a95caaSYouMin Chen for opt, arg in opts: 137055a95caaSYouMin Chen if opt == '-g': 137155a95caaSYouMin Chen gen_txt_from_bin = 1 137255a95caaSYouMin Chen filegen_path = arg 137355a95caaSYouMin Chen elif opt == '--verinfo_editable': 137455a95caaSYouMin Chen verinfo_editable = arg 137555a95caaSYouMin Chen if len(verinfo_editable) > verinfo_editable_length: 137655a95caaSYouMin Chen print("The character count of 'verinfo_editable' exceeds the allowed limit of 17.") 137755a95caaSYouMin Chen return -1 137855a95caaSYouMin Chen elif opt == '-h': 137955a95caaSYouMin Chen print_help() 138055a95caaSYouMin Chen return -1 138155a95caaSYouMin Chen 138255a95caaSYouMin Chen if gen_txt_from_bin == 1: 138355a95caaSYouMin Chen # function: get ddr.bin file config to gen_param.txt file 138455a95caaSYouMin Chen if argc < 5: 138555a95caaSYouMin Chen print("The number of parameters error") 138655a95caaSYouMin Chen print_help() 138755a95caaSYouMin Chen return -1 138855a95caaSYouMin Chen 138955a95caaSYouMin Chen filebin_path = argv[4] 139055a95caaSYouMin Chen if os.path.exists(filebin_path) != True: 139155a95caaSYouMin Chen print("The file {} not exist".format(filebin_path)) 139255a95caaSYouMin Chen return -1 139355a95caaSYouMin Chen 139455a95caaSYouMin Chen #print(f"D: filegen_path={filegen_path}, {filebin_path}") 139555a95caaSYouMin Chen else: 139655a95caaSYouMin Chen # function: modify ddr.bin file from ddrbin_param.txt. 139755a95caaSYouMin Chen if argc < 4: 139855a95caaSYouMin Chen print("The number of parameters error") 139955a95caaSYouMin Chen print_help() 140055a95caaSYouMin Chen return -1 140155a95caaSYouMin Chen 140255a95caaSYouMin Chen fileskew_path = argv[2] 140355a95caaSYouMin Chen if os.path.exists(fileskew_path) != True: 140455a95caaSYouMin Chen print("The file {} not exist".format(fileskew_path)) 140555a95caaSYouMin Chen return -1 140655a95caaSYouMin Chen 140755a95caaSYouMin Chen filebin_path = argv[3] 140855a95caaSYouMin Chen if os.path.exists(filebin_path) != True: 140955a95caaSYouMin Chen print("The file {} not exist".format(filebin_path)) 141055a95caaSYouMin Chen return -1 141155a95caaSYouMin Chen 141255a95caaSYouMin Chen for key in version_old_list: 141355a95caaSYouMin Chen if key in argv[3]: 141455a95caaSYouMin Chen version_old_hit = 1 141555a95caaSYouMin Chen #print(f"D: fileskew_path={fileskew_path},{filebin_path},version_old_hit={version_old_hit}") 141655a95caaSYouMin Chen 141755a95caaSYouMin Chen if gen_txt_from_bin != 1: 141855a95caaSYouMin Chen # Read the parameters that need to be modified from the txt file. 141955a95caaSYouMin Chen key_list = list(info_from_txt.keys()) 142055a95caaSYouMin Chen hot = 0 142155a95caaSYouMin Chen try: 142255a95caaSYouMin Chen with open(fileskew_path,'r', encoding='UTF-8') as file: 142355a95caaSYouMin Chen for line in file: 142455a95caaSYouMin Chen if '/*' in line: 142555a95caaSYouMin Chen continue 142655a95caaSYouMin Chen 142755a95caaSYouMin Chen if '=' in line: 142855a95caaSYouMin Chen index_of_line = line.find('=') 142955a95caaSYouMin Chen if line[index_of_line : ].strip() != '=': 143055a95caaSYouMin Chen info_dict_key = line[ : index_of_line] 143155a95caaSYouMin Chen info_dict_value = line[index_of_line + 1 : -1] 143255a95caaSYouMin Chen 143355a95caaSYouMin Chen if '0x' in info_dict_value: 143455a95caaSYouMin Chen info_dict_value = int(info_dict_value[2:], 16) 143555a95caaSYouMin Chen else: 143655a95caaSYouMin Chen info_dict_value = int(info_dict_value) 143755a95caaSYouMin Chen 143855a95caaSYouMin Chen info_from_txt[info_dict_key]['value'] = info_dict_value 143955a95caaSYouMin Chen 144055a95caaSYouMin Chen # append info_dict_key to update_key_list, need updata value from txt 144155a95caaSYouMin Chen update_key_list.append(info_dict_key) 144255a95caaSYouMin Chen #print(f"D: update_key_list append, {info_dict_key}={info_dict_value}") 144355a95caaSYouMin Chen 144455a95caaSYouMin Chen hot = hot + 1 144555a95caaSYouMin Chen except (KeyError, ValueError): 144655a95caaSYouMin Chen print("KeyError or ValueError: {}={}".format(info_dict_key, info_dict_value)) 144755a95caaSYouMin Chen return -1 144855a95caaSYouMin Chen except Exception: 144955a95caaSYouMin Chen print("The file {} read failed".format(fileskew_path)) 145055a95caaSYouMin Chen return -1 145155a95caaSYouMin Chen 145255a95caaSYouMin Chen if hot == 0: 145355a95caaSYouMin Chen print("Failed to read DRAM parameters from the file") 145455a95caaSYouMin Chen return -1 145555a95caaSYouMin Chen else: 145655a95caaSYouMin Chen info_from_txt['start tag']['value'] = 0x12345678 145755a95caaSYouMin Chen 145855a95caaSYouMin Chen # get info from bin file 145955a95caaSYouMin Chen with open(filebin_path, 'rb') as file: 146055a95caaSYouMin Chen content = file.read() 146155a95caaSYouMin Chen # convert the target byte sequence 'start tag' into bytes, byteorder little 146255a95caaSYouMin Chen target_bytes = struct.pack('<I', info_from_txt['start tag']['value']) 146355a95caaSYouMin Chen start_position = 0 146455a95caaSYouMin Chen while True: 146555a95caaSYouMin Chen position = content.find(target_bytes, start_position) 146655a95caaSYouMin Chen if position == -1: 146755a95caaSYouMin Chen break 146855a95caaSYouMin Chen 146955a95caaSYouMin Chen version = int.from_bytes(content[position + 4: position + 8], byteorder='little') 147055a95caaSYouMin Chen if version >= 0 and version <= version_max: 147155a95caaSYouMin Chen break 147255a95caaSYouMin Chen else: 147355a95caaSYouMin Chen start_position = position + len(target_bytes) 147455a95caaSYouMin Chen 147555a95caaSYouMin Chen if position == -1: 147655a95caaSYouMin Chen if start_position == 0: 147755a95caaSYouMin Chen print("Find the 'start tag' in the ddrbin file failed") 147855a95caaSYouMin Chen else: 147955a95caaSYouMin Chen print("version = {}, invalid.".format(version)) 148055a95caaSYouMin Chen if version > version_max and version < (version_max + 5): 148155a95caaSYouMin Chen print("Please check if there is a new version of the tool available.") 148255a95caaSYouMin Chen return -1 148355a95caaSYouMin Chen 148455a95caaSYouMin Chen # get ddrbin parameters version 148555a95caaSYouMin Chen try: 148655a95caaSYouMin Chen bin_skew_offset = position + 4 148755a95caaSYouMin Chen filebin = open(filebin_path, 'rb+') 148855a95caaSYouMin Chen filebin.seek(bin_skew_offset) 148955a95caaSYouMin Chen version = int.from_bytes(filebin.read(4), byteorder='little') 149055a95caaSYouMin Chen except: 149155a95caaSYouMin Chen print("get version fail") 149255a95caaSYouMin Chen filebin.close() 149355a95caaSYouMin Chen return -1 149455a95caaSYouMin Chen 149555a95caaSYouMin Chen print("version {}".format(version)) 149655a95caaSYouMin Chen 149755a95caaSYouMin Chen # get ddrbin version information from bin file 149855a95caaSYouMin Chen # eg: DDR 03ea844c5d typ 24/09/03-10:42:57,fwver: v1.23 149955a95caaSYouMin Chen target_bytes = b'DDR ' 150055a95caaSYouMin Chen target_bytes_1 = b',fwver:' 150155a95caaSYouMin Chen start_position = 0 150255a95caaSYouMin Chen while True: 150355a95caaSYouMin Chen position = content.find(target_bytes, start_position) 150455a95caaSYouMin Chen position_1 = content.find(target_bytes_1, start_position) 150555a95caaSYouMin Chen if position == -1 or position_1 == -1: 150655a95caaSYouMin Chen break 150755a95caaSYouMin Chen elif (position_1 - position) < 100: 150855a95caaSYouMin Chen verinfo_full = content[position: position_1+30].decode('utf-8', errors='replace') 150955a95caaSYouMin Chen verinfo_full = verinfo_full[:verinfo_full.find('\n')] 151055a95caaSYouMin Chen if content[position_1 - verinfo_editable_length - 1].to_bytes(1, 'little') == b' ': 151155a95caaSYouMin Chen verinfo_editable_offset = position_1 - verinfo_editable_length 151255a95caaSYouMin Chen verinfo_full_offset = position 151355a95caaSYouMin Chen verinfo_full_length = len(verinfo_full.encode('utf-8')) 151455a95caaSYouMin Chen print("{}".format(verinfo_full)) 151555a95caaSYouMin Chen break 151655a95caaSYouMin Chen else: 151755a95caaSYouMin Chen start_position = position + len(target_bytes) 151855a95caaSYouMin Chen 151955a95caaSYouMin Chen if version < 2: 152055a95caaSYouMin Chen read_out = copy.deepcopy(sdram_head_info_v0) 152155a95caaSYouMin Chen write_in = copy.deepcopy(sdram_head_info_v0) 152255a95caaSYouMin Chen 152355a95caaSYouMin Chen # skip gcpu_gen_freq after version_info 152455a95caaSYouMin Chen filebin.seek(bin_skew_offset + 8) 15254026ce53SZhihuan He elif version <= version_max: 152655a95caaSYouMin Chen if version >= 3: 152755a95caaSYouMin Chen ddrbin_index.update(sdram_head_info_index_v2_3) 152855a95caaSYouMin Chen if version >= 4: 152955a95caaSYouMin Chen ddrbin_index.update(sdram_head_info_index_v3_4) 15304026ce53SZhihuan He if version >= 5: 15314026ce53SZhihuan He ddrbin_index.update(sdram_head_info_index_v5) 15324026ce53SZhihuan He if version >= 6: 15334026ce53SZhihuan He ddrbin_index.update(sdram_head_info_index_v6) 153455a95caaSYouMin Chen 153555a95caaSYouMin Chen if version < 5: 153655a95caaSYouMin Chen read_out = copy.deepcopy(sdram_head_info_v2) 153755a95caaSYouMin Chen write_in = copy.deepcopy(sdram_head_info_v2) 15384026ce53SZhihuan He elif version == 5: 153955a95caaSYouMin Chen read_out = copy.deepcopy(sdram_head_info_v5) 154055a95caaSYouMin Chen write_in = copy.deepcopy(sdram_head_info_v5) 15414026ce53SZhihuan He else: 15424026ce53SZhihuan He read_out = copy.deepcopy(sdram_head_info_v6) 15434026ce53SZhihuan He write_in = copy.deepcopy(sdram_head_info_v6) 154455a95caaSYouMin Chen 154555a95caaSYouMin Chen #index_info read out 154655a95caaSYouMin Chen for key in ddrbin_index: 15474026ce53SZhihuan He if '_u16' in key: 15484026ce53SZhihuan He try: 15494026ce53SZhihuan He ddrbin_index[key]['offset'] = int.from_bytes(filebin.read(2), byteorder='little') 15504026ce53SZhihuan He ddrbin_index[key]['size'] = int.from_bytes(filebin.read(2), byteorder='little') 15514026ce53SZhihuan He except: 15524026ce53SZhihuan He filebin.close() 15534026ce53SZhihuan He print("readout ddrbin_index perf_index fail") 15544026ce53SZhihuan He return -1 15554026ce53SZhihuan He else: 155655a95caaSYouMin Chen try: 155755a95caaSYouMin Chen ddrbin_index[key]['offset'] = int.from_bytes(filebin.read(1), byteorder='little') 155855a95caaSYouMin Chen ddrbin_index[key]['size'] = int.from_bytes(filebin.read(1), byteorder='little') 155955a95caaSYouMin Chen except: 156055a95caaSYouMin Chen filebin.close() 156155a95caaSYouMin Chen print("readout ddrbin_index fail") 156255a95caaSYouMin Chen return -1 15634026ce53SZhihuan He #print(f"D: {key} = {ddrbin_index[key]}",ddrbin_index[key]["offset"],ddrbin_index[key]["size"]) 156455a95caaSYouMin Chen else: 156555a95caaSYouMin Chen filebin.close() 156655a95caaSYouMin Chen print("version not support") 156755a95caaSYouMin Chen return -1 156855a95caaSYouMin Chen 15694026ce53SZhihuan He uart_iomux_count_calculation(ddrbin_index, info_from_txt, info_from_bin, read_out, version) 15704026ce53SZhihuan He 157155a95caaSYouMin Chen if bin_data_readout(filebin, ddrbin_index, read_out, bin_skew_offset, version, info_from_txt) != 0: 157255a95caaSYouMin Chen filebin.close() 157355a95caaSYouMin Chen print("bin_data_readout failed") 157455a95caaSYouMin Chen return -1 157555a95caaSYouMin Chen 157655a95caaSYouMin Chen bin_data_2_info(info_from_bin, read_out, ddrbin_index, version, info_from_txt) 157755a95caaSYouMin Chen if gen_txt_from_bin == 1: 157855a95caaSYouMin Chen if gen_info_from_bin(filegen_path, info_from_bin, verinfo_full, version) == 0: 157955a95caaSYouMin Chen print("generate info from bin file ok.") 158055a95caaSYouMin Chen filebin.close() 158155a95caaSYouMin Chen return 0 158255a95caaSYouMin Chen else: 158355a95caaSYouMin Chen print("generate info fail.") 158455a95caaSYouMin Chen filebin.close() 158555a95caaSYouMin Chen return -1 158655a95caaSYouMin Chen 15876348802dSWesley Yao if txt_data_check_availability(info_from_txt, chip_info) != 0: 15886348802dSWesley Yao filebin.close() 15896348802dSWesley Yao print("Error: modify ddrbin failed") 15906348802dSWesley Yao return -1 15916348802dSWesley Yao 15924026ce53SZhihuan He ret = txt_data_2_bin_data(info_from_txt, info_from_bin, ddrbin_index, write_in, version) 15934026ce53SZhihuan He if ret != 0: 15944026ce53SZhihuan He filebin.close() 15954026ce53SZhihuan He print("modify ddrbin failed") 15964026ce53SZhihuan He return -1 159755a95caaSYouMin Chen 159855a95caaSYouMin Chen if version < 2: 159955a95caaSYouMin Chen if version_old_hit == 0: 160055a95caaSYouMin Chen filebin.seek(bin_skew_offset + 8) 160155a95caaSYouMin Chen for i in range(len(write_in)): 160255a95caaSYouMin Chen try: 160355a95caaSYouMin Chen filebin.write(write_in[i][1].to_bytes(4,byteorder='little')) 160455a95caaSYouMin Chen except: 160555a95caaSYouMin Chen print("write bin file fail") 160655a95caaSYouMin Chen else: 160755a95caaSYouMin Chen filebin.seek(bin_skew_offset + 20) 160855a95caaSYouMin Chen for i in range(3, len(write_in)): 160955a95caaSYouMin Chen try: 161055a95caaSYouMin Chen filebin.write(write_in[i][1].to_bytes(4,byteorder='little')) 161155a95caaSYouMin Chen except: 161255a95caaSYouMin Chen print("write bin file fail") 161355a95caaSYouMin Chen elif version <= version_max: 161455a95caaSYouMin Chen write_in_bin_data_v2(filebin, bin_skew_offset, write_in, ddrbin_index, info_from_txt, version) 161555a95caaSYouMin Chen print("modify end\n") 161655a95caaSYouMin Chen 161755a95caaSYouMin Chen # update ddrbin version information to bin file 161855a95caaSYouMin Chen if verinfo_editable_offset != 0: 161955a95caaSYouMin Chen if verinfo_editable == '': 162055a95caaSYouMin Chen #print(f"position_1={position_1}, position_2={position_2}, {old_verinfo_editable}") 162155a95caaSYouMin Chen current_time = datetime.now() 162255a95caaSYouMin Chen verinfo_editable = current_time.strftime("%y/%m/%d-%H:%M.%S") 162355a95caaSYouMin Chen if len(verinfo_editable) < verinfo_editable_length: 162455a95caaSYouMin Chen verinfo_editable = verinfo_editable.ljust(verinfo_editable_length) 162555a95caaSYouMin Chen 162655a95caaSYouMin Chen verinfo_editable_bytes = verinfo_editable.encode('utf-8')[:verinfo_editable_length] 162755a95caaSYouMin Chen try: 162855a95caaSYouMin Chen filebin.seek(verinfo_editable_offset) 162955a95caaSYouMin Chen filebin.write(verinfo_editable_bytes) 163055a95caaSYouMin Chen filebin.seek(verinfo_full_offset) 163155a95caaSYouMin Chen new_verinfo_full = filebin.read(verinfo_full_length).decode('utf-8', errors='replace') 163255a95caaSYouMin Chen print("new ddrbin version information: {}".format(new_verinfo_full)) 163355a95caaSYouMin Chen except: 163455a95caaSYouMin Chen print("change verinfo_editable error") 163555a95caaSYouMin Chen 163655a95caaSYouMin Chen filebin.close() 163755a95caaSYouMin Chen 163855a95caaSYouMin Chen return 0 163955a95caaSYouMin Chen 164055a95caaSYouMin Chen 164155a95caaSYouMin Chenif __name__ == '__main__': 164255a95caaSYouMin Chen #print(f"D: argc = {len(sys.argv)}, argv = {sys.argv}") 164355a95caaSYouMin Chen ddrbin_tool(len(sys.argv), sys.argv) 164455a95caaSYouMin Chen 1645