From 8edfcbea7ba55e4820bf8fb97db83121137a4fd3 Mon Sep 17 00:00:00 2001 From: Zhihuan He Date: Tue, 30 Nov 2021 18:32:17 +0800 Subject: [PATCH] tool: ddrbin_tool: update to v1.09 20211130 updata: add support rk3588 Signed-off-by: Zhihuan He Change-Id: I025871d99b45ebacbc891f99d1594f99cbbc9d0b --- tools/ddrbin_param.txt | 55 +++++++++++++++++++++++++++++++ tools/ddrbin_tool | Bin 62398 -> 69166 bytes tools/ddrbin_tool_user_guide.txt | 13 ++++++-- 3 files changed, 66 insertions(+), 2 deletions(-) diff --git a/tools/ddrbin_param.txt b/tools/ddrbin_param.txt index ace50ecd..aa60e390 100644 --- a/tools/ddrbin_param.txt +++ b/tools/ddrbin_param.txt @@ -7,6 +7,7 @@ lp3_freq= ddr4_freq= lp4_freq= lp4x_freq= +lp5_freq= uart id= uart iomux= @@ -20,6 +21,7 @@ channel mask= stride type= standby_idle= +dis_cbt_for_lp4_lp4x= dis_printf_training= ssmod_downspread= @@ -253,4 +255,57 @@ phy_lp4x_dq_vref_when_odtoff= lp4x_dq_vref_when_odtoff= lp4x_ca_vref_when_odtoff= +lp5_f1_freq_mhz= +lp5_f2_freq_mhz= +lp5_f3_freq_mhz= +lp5_f4_freq_mhz= +lp5_f5_freq_mhz= +phy_lp5_dq_drv_when_odten_ohm= +phy_lp5_ca_drv_when_odten_ohm= +phy_lp5_clk_drv_when_odten_ohm= +lp5_dq_drv_when_odten_ohm= +phy_lp5_dq_drv_when_odtoff_ohm= +phy_lp5_ca_drv_when_odtoff_ohm= +phy_lp5_clk_drv_when_odtoff_ohm= +lp5_dq_drv_when_odtoff_ohm= +phy_lp5_odt_ohm= +lp5_odt_ohm= +lp5_ca_odt_ohm= +lp5_drv_pu_cal_odten= +lp5_drv_pu_cal_odtoff= +phy_lp5_drv_pull_dn_en_odten= +phy_lp5_drv_pull_dn_en_odtoff= +phy_lp5_odten_freq_mhz= +lp5_dq_odten_freq_mhz= +phy_lp5_dq_sr_when_odten= +phy_lp5_ca_sr_when_odten= +phy_lp5_clk_sr_when_odten= +phy_lp5_dq_sr_when_odtoff= +phy_lp5_ca_sr_when_odtoff= +phy_lp5_clk_sr_when_odtoff= +lp5_ca_odten_freq_mhz= +lp5_wck_odt_en_freq= +lp5_wck_odt= +phy_lp5_cs_drv_odten= +phy_lp5_cs_drv_odtoff= +lp5_odte_ck= +lp5_odte_cs_en= +lp5_odtd_ca_en= +lp5_nt_odt= +phy_lp5_dq_vref_when_odten= +lp5_dq_vref_when_odten= +lp5_ca_vref_when_odten= +phy_lp5_dq_vref_when_odtoff= +lp5_dq_vref_when_odtoff= +lp5_ca_vref_when_odtoff= + +ch_mask0= +ch_mask1= +bank_mask0= +bank_mask1= +bank_mask2= +bank_mask3= +rank_mask0= +rank_mask1= + end diff --git a/tools/ddrbin_tool b/tools/ddrbin_tool index 6c124166ad52cc9b233134211513e456483fa04a..9b22b267a1f5a5bf1aecdd6c16235fd79d26458f 100755 GIT binary patch literal 69166 zcmeIb4R}?>wLiSiIZ4itL=qrkRMewDMdc$Q0i#lTRH8wmB1H>IJqh_Bk&wjX1fs=? z4Ys5K8xSjPX^Abhv_(r>YEe;w(t_68VlP$N(l({ohC+L>Qp>Hhd4FqW&EB&=PT)TO z|9$S;_q|)mn)NYj)~vN=W`CX850#eR7!HLjeT1!REy7}%aY<5tEi3tXf0CauL8Z{3{77LP}4&Hs`_0V`xd!~QHque(G+U60J8dU387=Xx6UuwfeN{!!oP-yH7WoNyc% z;c)`ibotkTBumGvx0BUWF8`cF0pqfuVS^%D8tQttqaN9LriZq3Hn*43FWkR=h77Dp z4fPAA7EfxZp3qR=*w#Lwy=3Zysl^jpnAP>?R#lMjXwK5r=1vmo#&c;8|JskgX z@Gl$xPIu`3kQ|4~(!L>oQd*FmL-CLDj_lIM5EQ5mwM%-W|H*(*o}{5^eq%{7gXg;>?1L{;6QL~Uh#gH^k*CfRDWCR^~o zRohxqv&aIasTmcM)lF?ltG2lyImOj;bB$8^AF(OgM%9$Ucex{j0Xc5jSfT+e)=0H;)__GzGH4<8*z*sk{@WgSODWmg?& z9aEcg5hmBNj^0pNXL=2U2J(I&g}Tx|LRGFh&~oU9={KMlqUP@Y=qt6gwG(qLT7fQ5 zy${ZM4DC?6$>G~23ATxk?kqt=1AQNTrMsJWWt|W9mvy%Fm37{6p!1gfWnHEHXfmy= zv-Eh!gZo1{pLz}{0%~8E)%o(SKjxA^=d3iMkerK}%~au{=Be5_-`}U|!d1GiO(V6W z4>fICKGU+5wo$6~7>By6Kfm+kjzc+$G0tIhzWneZM25_Ut>c-I>$0lAq1r7LGcC{6 zVu?d_w>ZsYnU5mGAV z6W9|klOdMHaw;DACQcO)!f?(bPoe~&13Aye!z+4oR=kFg?kPP*W3#LDRN1b+a9KnL zSi9N9aQAzhi|27Rc*xk!Ubj|?FM3KX+Gup3yuU2Zy?h+tok95Gd!!rcq??#e9v((yWJi zW(+VQKviK#bMbcdXUiDc>q*=!{pf#4B&Dv%8u+#~X23Ndp;(iNFZKUYhxdA~bN%M3Ci zvjb&(0Tx;;ctqv~vQ6jarI2u(o3ABYL(Y!hs6e*aL@b4b)5I7^@Q4(~h`d<&+ZlDP zNo!W#;3IOJZg!9nIX+Ov=j8$|Hpqx94wUh!D$!!WBXU|G+w^8Ug@ohH>46f)XeiSH z!6ULfkZsy9D}{t(!<;|~!-lz9z%@?ntf~lP!v^<=oS#C>9Ff&2WXv^^E~e$E9b`l{ z2g>*Y+@QsRM`SXPZ92C-g@ohWWm+P5L@p0xn@y}pA>lN!5)wQjvyBm1H28=VgOA8n zy4gWSWOty9&&%ty*dQZveV~j_)dnpVJR*An*`_x)rI2vExj9h67!6yrK=6p%8pt+n z*p@=Vv0;0lgki%DEf72+cL%azgL_2wrVuknB+B z!-kj^2p*B+0@<*^JtD`X5Hm;Q_!Khch%C@DgN#UeH11zVeE}}kV!kH}makx$}|I_}_<4n89D2Op92@LhUvkP$gIP{!xw z`C4p{5m^x^<5N|w#ezpiU&#*>~nCm9J zJRwJ?%idl6=DOLCLdIM-o3)HNWbho>{n)NM87St?xOOdLjxfiC%L3VE7?-DzaKgAk zO9Zc*D+AeP6RT24I8AhGi9y!Qby_BP-CQ5YHqF?OLc&}(ds4`l>*l5uGUmFuS<4Kv zZf*&b@vUN8Q;2z1v29vxkacr=pp37@9Vx^-E%ri;C+y)gfoI}XA*`DV2cNKGgHPDI zb=!kX*n0zIe8cB;EjGx6y)RJ4r)s|z3!bnK1hUQCJD5Vk83KKQ62@eCSPKMC*!_WQ z(}rUyBpe%#2TB+=oX`TU3D91+P6e`IgL}e0nL^B&u<7OJpo!L;u+vh=m=m^0A!AP1 z*(qeq2|HKI3_fA!1&X;R?0hW~JYkOtWSe1(rI2vKI7UkZPuSxE*=7^tQ%E>X6ljS- zChX!s8Q<6{2^2GuZkiSdp7`T|Y_mJlQ%IN-e_09{bK);gA!APbvjSy|-ptVggRBg5 z17&>k^!yZJo_V@Liw&|e&@VOQfOE7Hb9J5hVy7;_zRW<#?Ply`$NF7 zQY1Yq1z#96>qg8afO$#HGv{>XwQHU^Ni%Pm=9!Zx^OkF#IjJ#kh31(9pLr`a&m76j zTLm7ylwy7Km4J6L)q9u?xXy%E`n%$3$d5y^W>;K{#e0s{ke9*f>m*uV*=qTACgid^ zckTKu%jGJ$y`5o}p|>z0lV`}}du8Z-PRNWQ8TqbUSA1MYU(T++{2{v(Ydoq9SVJ7O z++2a7w%DtdUI>NS5<~4Yx7zqvbjsS*m#f>E?$se*)ar`Q@7&e#TX}<`D?V3N3iawb zb6Cj`O_N%R2R;py2T`nplV?wd6htk z(a z1wpUUwe(J)PcOX(NSUOw!I*ZG-u0&5bxH+JnV_AGUAqB98JFRj(xWLdQZgltDNE_4 z*ZEvdTe}Gqzu%1cOjV>e`0S3-%X+?!Zc~aRE7$IsasHtc(UfQ_+7YCv7evQnPSVL& z@*Y%4mk$~AP~Uu$s%K}rd$wEYIZfWJrFZY#73noQze~K?x0c?tb64CSSkaqQY3peNHUHx6~%%Sjqxht8Bov+ z$jNvyn(-xLp1Wt`l%CTi<9LX35dBXo(!z$OU6^aiWbfx`~%yUjA;0LGZmEwDVpU~#L1XTGvlw}1zf0jUcXT@W4^m*bCe!W&wR-^7h>*; z^8+jTlCi>9u{yA#FB$6~X8W=Mh|ibJN|8GmlTvb!WNbI}E(_ATJV@^fk6vFgt}^wm zR4Uxb*lp;wuVL1KC^PgteO0qwQ_k0v4Vp4aQ+hPz0{gndf8_%icgQw@;-3b5S-b^e zw&%A3@p*omQgpg3-fk+|5u~U$P?2$eRb4{uR$@p}zVl$*6;%>@&8A)tYHA;d($V(i z#ePlEw*l53(3Ih}Ta7!Gs-=UFk#0qB6{QapxK#!_Q%C5qLCmwY8Fw00-F~08V@5?= z+i`;^wee_|?{1V}zQ<_yyt|?FpHLMMDd*PA+LItUw{_N@vSn;LedFI!shsnDbuVFU z8gTU4J@$kYa>kx-GRTGiN6GEjss}{(EV@Zk>{)cPrVKKRZh?$@7TpSpZx-EV5C@q>xBIm1 zFe=)!Xs2=nzRy>2e_%!5 zXg>fkJLe7p@#S2fQsf@(ho$5oqrKnMdn`!r@gTh?JbHbj{gkQqq*5X4*rVM-RP;Jy zkM=YW-J@M-iapx1HN_t7^gLVE8f3KRL&hEJJW$SHw9_MO+w(CXKF^O)icUA$$C--8 z2PvY*(Ap)=oj%`aFNT=AD z=LC90EM@E<&XKB|r1PC<&4qw_ilAq|zA2)@APzD`RQt5m85Qj*qQM}VQ-pk^dkDev zKf+Z*n;zh%cr3Oy>F|7Gz1`vYhBH0DWu3kSc)7##4XYIn&v#0+(&71*tW}an&nxsJ z+>T=fw6#uW+hN*Sr>ygqeKdTKBUVz&-QlohdN77c9ovQHY}0S!=3WU>hq+j ztnd`FKQxmpC(Xw#PUaNvQiTkvS(x8btY(=y4QWu0$4kF#1-{$YRq z_Xh^bI!=a?IXm}uV7sD|-y0Y>@|b#YmP|=o(QBKMb|$7QRHk4YXj9V9(3I7v$)+49 zQx=mc!Z8I8Y;039&cu|1Pynyc!yWcY^bAc2JEr8XfGLNz!ITFPK-MD+Q?Q@N=>v4T zGUZ~&6zu+TMgdxin(UQ0neq`b&Z1t!J9{?58LOV0A8V6J*;Bb8Jg0IntEK3DLvnTDc3lr;My|z0P7riCZ^;lQ|LOB ztDSR(rcBYMWbQmlrko8^ScSYY>vB}$%515gc=FH0s{5e}4x+0#R(b9jTD6g^P-&C< z2&{VO+i=i%n3h-%P8;pC!E1b{kJX={0H)9>CaV~6hNk2>rj(E=C$_?r&p3LpJSCU0 z&hyU1lqzLP(ou2#8Jg0Gn$j!TJ1fYPdYE!FDi@8T>D%#s$iS=W^`DMov#@qx(P-O; z#bYlPkKXB>r8{8d0p6RfpDfnhF012YW}ChFR#)01 zG3*xEaWdRy{2rpe>kcd=hp-jc9ml(dcjg|wrsKg=xk=iViyxi$cR4SwbY=gbx2M9| zz7|cZbxQW5|Lt#~PoeIP(o>;_A3SvlLZ0)<7WAy^7MPE&bhY)$ZeU#-{>y;@S;_9T zTrrK!=+J3eHQ|WTlN}H43oV^0F=Lf`X%vM4$|j&)@@>wF7Az_|KTjSR0@{&#fub&U zL7S&mn?7EH8=y;;RnXEa4z)|?Rjh$lSKThJuBqBx;k2t4 zRJ+{@Z@b@r+U~FQNwoU}@FR3J!tK&h+NjHe`#IZbSFfJjZu$y}vB%RNbXp!qEnh$_ zf81%AR?Zx?a)yaj<*;b^)JF00naUYUsTCCjy<%#k=*17OQJc5e?wCbJtptALh*}pY z{Ipu?mU*>I)$%_`m1k^7ERYMB(()$Rd^L3p?cvI4=LaFxKLZ3q^rZx~3c)u> zu(Nb;S;vEWt+tC%r?)HjxhmqW#{0MOs!gqiOCfpmA{M9(5V(_6Q6F=6xCm;c1<-r4x~wQqdOMlk{{iT- zm)jU!pz&p8<-`6Y1>xiPX=54YD`^KIn*=dq}G>4XVoE=1#yk-P>XE)60 zU-z|v0e*}5;bYy{p11SGWq%=meXp6op3)u|ihXoTH#4Lc1PNF6?kVk+`0DR1hq$CY zzm^0#|At_{TlUSe)!)ngTQFx&>2g_jPw7gA-30fPu4h!G)avi`yss5p3y!I}`yYXv zJ*9`0rhWxz3Wi>K8xDY8pR;yOT#w#=_9?_lb~yC$cv;sYvd`GowyX=yyu7^>GS6Wp z0z%$>_o5?z3O7UHW~&XG;_7Zd z#;@?*ucG-bG>?(-eUy*j)=LXn>OPm$h?g2c z-?@B81+I@xPR@$qa$M8vC)SY+{8bK1%X#EKK=JesFO0Jv`oB#Ucb0Ph42MC+-@g&m zr?Ik6>3d3JP_n20BG8U5z)4`o$%Sn7BW*5B_vc%<8%Yzgu~nX5X^aZO~P^`MS=Nq~_2&Fz&2xL8NT;9m_HKE15@V4Iuti z2o@!C+qGS1cS@<%l11kd>h|d}NMc^i*?E%M{c8`}y^zev#|LKme@|$RG-IZ!O=|-; zB^9aR!PeY!oLqG=Bh^46mv!!vw|wQraQ|plnJiT5BBX9?SNft4lhxt2 z^U7A=0!KbhHg#d&cd1}c|4m0Q^TetBpKe48G+`x4JKVUZ|2K-%qeyb9e_fF_D-vwj z)BhYua%8@Wz2(a~8^#An#yV$1B() z|7hDE%ev-|!Q$F5Cbzt+dQ5&fO0n{;S8^^Q*IMtwCiAfO<1gz< z7qANhW*~X)3-nne-gp0~z&`$6*pL6@K-)XK!@k<V^wvPjg2)87Q@)$%GO2nHIw@4nppDwX8Hh1Wn=Y% z`&Gs2`qo6%f@Gq$sU^|STulGkEh4H9uOyN!_~uD{<3g*ob#YU5qPl5mBfiNZzm=j0 z^-Gw=WOOhwImzBAl-)@zu6uw9$}t8(xy2wTrx*m~5=nr+o9pgRNKaSam#A)8l2}?- z)0k+gPSW4H#Rk8s@-+O0ML`0C>85z6YQL$rRvKXQJ?;DXp7ymskO7)!D@TWAYf@Mv zE^c#MLqnpiIf1X{`03S+UOL=Isq461xzwiFI^cHXp5t{#J35?-gRZ7vxz(Ycsr0#7 zZiU2yCy+|+d;`IqZy>ny4VXLMKnTpYqQv0&R+R9>+mnyrd*aOk((V+xjePU9?@0+? z`+mNseJv1VfaY=3i)eu9d~*;N*Pm}nP|{ubCh4Ah^U-YG?gVkNS#~%usg$czu-xj< zPn~aGeQs7@z9Dnm`38bJ-#~EZ8wmK{7-+x(^R4(a`Br?Id;{MTZztbU>NfJtC*w&8 zU;BQ(r+qDed^^2zBj1Ycl%K zy!zZMf4<3c3M1VlZe*LpjbxL!k!un+QjI!HG#D7LjB0L*NsZS*s-GgwQmdvU!=YR7 zw6C+o=6fvg^HZc*fC0L$ZdxZ9iR!Y+^Q4#-^UP>WHWMs>r1iS=4$1+J7_+nrZ|>m>WcKLZgXMP4Zf z2UkgzS6*dKUiq}Cyh4(=@(Q>suYkMq3ON4Pt0P^F`18uQcDVA&w=CJop#q@h>cG58 zrC4T_&P$(=CvSZ1`}ryJDy431y3QqXj9EsAO_X}q+=jq65E=6Y$-9Y8Pv*&DS`I45JTJr)*hUdOS5E*s7WNio>?P6(jQqjGt zNFJwRlM@T>Pu8?17FRZ_ODGpwY;b8^ahNo!7jo^n7i)-rqCx1%+g4$hUY zbH7104F?CzE4<#ow3H`G;HA**oG1BZ5I_5VLs0vEe(H(GXMnFV27zo%w&X(4Z5QsI zXw*P}e%G8txyN~|S>_ajN~YgsRg>?kE{CUU4wAj`ke$|2%tDAy(CrK5S@+E0jAq$V z@I>U*=dzhn!Bb6#FqPfTykj=+P)WZIj-HO%nNL*|)aG~GLq znD(TYeEf~r=6ba$21cN3AOm-eW8kh~4BRz}f#ZLDBB6pmCB-PyTv(EN{7y+dd{gOl zoj3S|&`)#zfPQ!Letyc~n^L##nKM487-Lm7X|mj7RE8U>Qw&_qF~_By2|-K>tYMJ* zv{rT@F!d$J7%N5_@K_3ldw3aDke@~s(sBB!sG`na}Cp!W~R*NHR7Yo(El3#6)Eo^97P}vZxZ>(*KC7WUk z>KkLV^$j&K`EhtDsO0EOXD}(tvgL}-P_8(ITw@cS!?ZOwH{l5mnw`S)fYRU4d^$@E zxj`*aa@1j|)3L_sKX>UqJOOG>;T_#?M^C%mEk_Y`!PDN96k>*4U1e)sfK+B<%~Bbt zs;0);`h{0pV_UC|jcv=c=%JE7f|6>6xwfTgv0qHpcAT3+%ChCyxu=z5#||!sb6nNa zlwzt~oHd`J-07Ot`Y6K&RVn>PX9j~xIev*bVGHcc!kT1EMJ^`!Fkqq{c2{RwbR99a z+A3%t+iuk~RwJrQ3JWJswOSSxO_|D|L}Bf6WZc-)5?kEVQWLALNmkZ3w2qH8H`G+N z*2Hj?RMSFfo2&z~x&@6Sl1)u`sMT82l33V=$C(q8?a9nJb@i?bF zu_{^L)YzJdC!4XF_R7W3dvzwrvBIm-Vs(A({iN15-tG=H)Lhw8xtP>X%#7ifILR``YST zY8KZtCR;PFnBYE4+$ig!h7)u_LsLr-P4OMh6`9N6?&gNdB%-#MT)!-)o`KU0zl@AV zoNDevQ9h3boIZVaZ1Nl;w8WaLNv37V_!t(%@v%FRL$R7<6==v2`9M3SpJ%J#pg1>N zkNW?^eU8n(v#_wBgu0AA#A1k`#EkMXA{G`9TX7`;QY6F2TwO3|v6xLIuH;C{|8SpY z%`GaJG<#-I(d4Oip9>4Mh018v=c(N1!pSI*6Q=yXtj}hiyUX6(j?JD~SmKFu5%-y* zin0o;?4qJ5Lh-+HpNl3>Zl~mveNfr!DpOKYP6875Dk;YVsz!&*St|U`<+eMvCKeE9 z>T{j87riPhwr!VPQK@_-_qmXgoTMays?qVU*XNQFX*k7*B6%gCiWm3U6=yYf5yyz> zzg(Y-+~avNd4T&*Wf|6@LL$KJ5`ywPko|3 zgQDhZCQvmx{`LASBWuU@{}piF|2^lP=8EhtyVqyL8JDAU@;L?bn9)zOth%VrJ>dmKFy?LQ zGtOP@o~a^HY1!jLdgEWG&#v4~(Pv5y9RG81cB1Ky@&x+|6s63}|I?cbmcBS%f{cxWdM5i<;_-ajRp&6?A8V&iV)zO_n!0iV91trB_%B zudcHuU5=YwxWTfdCf3*#yYz#X#+FnzwAEaEF;%9!U-CwPaR-y`8)y^cElrJ#r8_IA z(bSg2g=}?AySn44*~UFczWr$7K0^(?IUaNysA#Nek+~x+`s_+P;TbVfq`uN;NrU8fr0UW7yNKw zpd4`Po`Hb|!0_IIfmMLR0k;6=?L&RQO@Jo|hYmVI56reg?YW`zv!kLL^f92(&rt;0 zj{~=c=H56o|K^;mrDD1Dq4Tb}ylBiNph}tPfN8LA-DN0TH#GN?;Tz7%hw*7Icwm4J-5D>g=}3Kf$T5aeHsgCmT$b?5XL*#|8<#Lmq1O7a!vFfufhHow zBMPUffR66;xP&yd&{4;H`YAXadlj&<80IrPo1q5uD`PtPH&#ff$LL-*T+gFX$+ax{ zvAjH@aRn4+ZO>3Rjd?oC6tIRc)a~Q1Sss3qxb_o%IVbVC%;)O=?I4aHbOjyn zahx)S#3g$q!w)c=%J4>pcQUMHxP;*+8Ge@GQw*PF_(O(oGWwb^i(xgx#SE7+T+Z;*3?F0oMTSo?e1_q34EHen3B$J-{*mF|7)BN;J8~J0Wq1|C zn;FhwSjn)C;r$Fh&F~8hw=nEw*vHUnQ0>JS#u-*HT+Z-GhA%SwF~eUne3xO?Vx@01 z!z&ry&TtXKPcnRx;SPoe7#?BxcZOMwO7AF!1q^2~Y-ZTaa4W-o439G$)}-`IV0bOV znGCBKevIK`48O*37sFpNe2?La@>|xl;u#cg2pVAj&7-v|) z@L`5uWcUoj7a0CK!=nr%ElS@x3=0{~WLV4aVTKzRZfCfc;Q@yI3{Nr?txEp~7?v?y z$Z#dY%?$T4>}MEBs`?`sUc_)J!&?|uGhE8Bo8i|PzQXWV4FAS(c$?CH3B$<@uV*-$ z;R1%s8TK&T$*_;1wM6NQF^n_3o8cmcOBp`O@T&}WF#HL_eukl?O7Hm$r!c&Y;k^tW zVEAcCBhF@X$BEz>BzQZv40j2K}hF3DYh2cDgbqtp>T+8t540{MR z6~mht-odbn;e8ArV)!`2Eeu~~_;ZGTWcWVA>}9Im3m6tKoW-!2VK>9A4EHfS&T!a+ zO3ws_*D{>R@NS0pF3gr&S7{T!%s8(3d8R*e1+k^GyEOHcNq>_uJji$yp3Tq!)}IK8SZ0vl;Qgf zqYo=RBN<-7@H&R~FkHs)F@|4f_%g#^GW;vUoKGmdmoc2q@Ggdp3?E?l8HQhF_-%&0 z41dD#7YzT(FuNme(J`9ghZuf@VH3l4h7U7b#qbG+UuO6;!|e>4Kc)09W%zN1k1)LH zh8wPqjk{w(TVt|qQh9x2WlK}6c;eKF#S;qKB(d=0g#~z=ahal8spN~a{1hcwWQ|9! z!qhc+d5t>_S#gQob&mwTKj|@BK6L3hxU=y%Li*0WIiHj-Oi4;A5O&PVZ4DyEAJ z@hE8xWmKVN_{Nc_SJ(qe^m-Hzqz?-%Mz6&A_>(?7v;d6oXiHp~4fLGQN{I@QkJi%j z8O;?h!PxY38O;~XXg&QrMq}bdw3B{5qvHf^8katb(E_mxrlnuNXo;9W+zT0viv>f0 z#uzOVX}F9@znIZkVoy5IOBkIic96|uLf-@kkFF3q&jb2_(6=R8C%#T~$8nFE#oNRk z&uCJ70G&^t7;2UsY!?g3s>z`nfks9z4~a>`fER`4NczC{4C(Jr1g=}y&c^d01qtOY|rdQo}D z%34fOc}Y1(WIaKie0c#Xg-7RF86t@a8KMVxHf0O->nut}qEdcH>aR3)1gO6QGE`=k zNdG1h0BM^*hUT=DSQ)t=LdBf6qRCc9-Yrsx6|t<$;YiSM^zo}v&bk5)i+=V!C_%bq z-H+}>pHNuH%KRK`9Tok2RvHBV2}`427=}6|_!@#5-Jq~=*0XuQzNE0UtS=F7qrx(> z{sClw~L{tf<%epz9eS?iF$(M<}=&YA|ZqF+_m(5&CXgVC=kEH`TdtdDM1*zl~C zWac*%mX~!FVc%5P$gHN}z@AoEe%4O1_Y{_$H3kVBeU?;E$g+vt2ttmnes!$VpH}gj7{0AFgE2?g|R8GDU40|k;3w_ z#!=W`R~Vb}Zwg~meyp%q*2QG>PZTyL>pRq;eF__wbt{GM4TX)*dWPKcQ-u{+nLmSQ zEc&w$s9FDpDJuFV6)9j3kjLIqf+FkN6z2m9%gzc@_nSV*(O+q$tI2`CRux6oazbB;jAcG+D{RRjNTj0x|wPoQQZD;Ru?7S z9~HVGlGROhk5W$}qwytZe(iyi2H=oUsx#5gLjt+g8(OKehBt>WrqjSX1 zsqP(&&K2K8`h@OebiR0-tojI}6(WneFqhG4@dRQNn#X9Jc$_rf#b|?gn1XUQqs`)< zWYv5|lOl@29r`Gv?cyW}-^1uK5hgPd5|vA3KXNcs!T5@hxE`q$s$?8X;}g`21&pr> ziDM*R#W7!q@^W`>qB-WL)tlYBelheIMt$$LNJ{ULEF4U-2LKNb>WDfO|RuJrfukjNtW zWsIMI|49FXjGqjND+&KNWSMuL_F^ zQnRN&L?+ z-WwKi!ttn5*54f#+ev;6<9oxRnCxB4`0HWuC29{zEamrwMJd_0j`96rQ9|;MGkzc} z>S^eHmhppOv6%2D81D;~#*c@^P#Uir z7(WpfH_$}#MaEBt#eAGPg}%i2sj%2d{@%#=@`(5xIuhz(d__dONd9<|@s$zr2HE>% z##co|KTRiJVZ1vcenI)MiScz2kwx+OD&y-T;w|#WQ;ctj2n-D?^fktNBH~w+|C<@# z6cJ0vzOOUBIU+C=tk5?Y-x3i&r2b(pmHyuv5kH{zwlKaeB6g7fo@RV|M7&1w&oI6t zA}%0(-(tKsA}%I;E91N250d{j<9j3GGc><^hw;}V;sE9IcNyOo5eEt1#`yk-IE&)* zJ;o12#9fq6&oX{6A|59E`;7NRLj82*v9~#!p7Xe#))|`+v>&Db%O&_#4KTr;Ce8zK`)0=^~%}^IOJO zri)R8A7Xq}y4XYZ|BmtQbn$Cy|1jh0(nSUN<88**r;BamuirDiAzl2I@INr#lP;Ff z`rOa>rgZTX`R@qho72UgX}tWA@h$1%1{xnn8Q+>NHdDSFV|-h>C?ot&jBigDe<%O_ zneiRz;sE9Ie=y#gE+$ZZ9%p=ax>!kPxbHB&H(mUJ{Ph>cUr!g;Qvcp%d|$elN%oy! ze1E$55sk0EGJYUkJV*N8WBg#cc#-hGG2WLhZld-5B;$wE#RKH;|75&BU3{GIzcYR; zU3`t^$M+dOj{Z~sPBDHWT`Z&V`wzxXri(c=e*Ve$Da41y=K$l&GsF~<$DJ`bzpTg* zo2b1I<0~@+T`+~hjIYWNbjcKoFy5UZuAzKLV|-nPc!KgNo$>V<;$@0Q2ICtt#60SM zl<^*Q>moFS@l6?G9JQax_~r~TnaBKe8F$njy}j{+-46whYlp?G0so zJKCpsv_hpDTh<`5Qhcm=b8n5Ru-k%{pM)`@`d$Rw> zU=QWjD8`Rxh-Mmp7chPzLnLTCUC8*!3{gzu?IOlcWr+Rc{}|)TqvBl}4;M4OA}ao! z@)=H+?X8T8M#`7bjIWA{p`>pNaM32~zb?d98jp7{zE6l1 z6u&ze-!BAC6>(k9_yHks>W2$^#t#ZnMf24>#`}aQB7fh-_+cTgB>Zm1`-S*B*)yN< zV?z9l^8Fshj|=e;@^6Ci6X*{N4OK9HQiyiKD;Ylpe-XZb@#RCrql8y6zG8@=yH}xV z##aszbpI+;!}zKp*6`5%lri^)Lklo6^uv(##c>)a^5{XvjaZ?Cs2pB1H?O{ts$`+9 z@S0g8=)PBIQTQpzEE|E)>v8=qk&$$lIn>CEhI5*6;m$fLtPDZ-urdVQ zJsTeSELoYJCT-HT+&w!k?Ww@u3lTMCQ+k@V32*089hXrVX)dEO(%2|vieR(>E#j03 z*FovBMcvX9b5)DIXz^Rr;zg9KUrDDjyfETX8p~fvS32j6xJPl70cFZ7UrAR6#7F*$ zob*)|t{eGlLZ4!^A^#bghHuK~<`&_I$IaIbvpp zazxpP_bH_`8dr9dXOJC{HQOJ`lYT1CATuLtwmzi7Rh}V7#F{M+QCM!3Ty$~dSrmxd z7_B%5v799(!)wTC->1P|rL5Cd)hCp7%VFIivQ9d!DnmO>CQFqxhjOQu=Fe(wpiH?G z58PDlDBCm|C(~*(NNIRYUH*B1p*J$_L+$eJE@%A4$z4G*1zd_SPAIvekiYxLYdAWX~}d6*Jki2(&!BM?UQ>Qfb0JRrGpKd+``q6U^OqSb!8~^@<(j#ZEN2z&~h zc#$=I)#S<>xy7<`q$@RAKJp9H1C34}DF@h1EIe!EPiSr~i&7><)^tBKQfAf+#@9bI zQU>*A#(QKY&y*dd5Ra4|FK2w~LnA*+nRiQ+rk%)|P{}V;v@Ac=J~IY zbhRkdxEwMI#dMATmPSFPxR7xSAxaDRFzXt0MJCqAtZaJHSPpzt3Am#})&-Z*qI(XB z42jSO3hB787oAG`20hXYg)V#n%b2)^w1qt~?q3?Le zBQz{DcIb$#$k6kL4hszrktyMkR%GbaS=VIEz@Utbv9hwR1s}cPqQKMH98j@75g@7P zh)`r`Ru(Fyhk%N+l!o*fBT6uWhG>O&%xVi}kzf`JLJ0|Ghe9((5dEx+tr;UGp@pFz zKmm_yp+RVqa;1)RLP>U*jmox%PYiu1TiTy~Y4(f})Twv|$&JA3LfwK2kFX)P&N^);rJ7_zK>EU^#0JZ@Hd1OEDHamw$_$O4fP8qEv%}V z)Lt?*F|~L?Lw#dg`-Fv!ZIkfI$)x(ms)n}e8cRwtGHF45veiYgu%}9WEvK!?3CKNH2(V#ApfRd(~_-w>th~U7FiZDo(I1(eQ&#)p#(?X(f z$3}6nm?!4Fi~C~NqR=5$;IAqz1ndwCf#3b~iJo`cfIN-=UX_2}67Qn)D*nDD|Niye zC7^>E9y3DyA&jKn3STk;|I5;)Bf#eWFCAgCl*rldE)`FcFhrD~A@aX^F8QzdNBPn4 zHU&n0fAj(2a!@h{r4>^oEFOXOUAqR{};mcf6J`@hBlFO zI$gCtWF}KG8Xj?az0h_A91_VETjos`g+1bJnc(M&5AG>=ZbDIHNO(+$%D*dkZhRzr zqWIv?P~1cRUH&l|RSQv?P$-_>Q;vTH?-cAAKUqBeJ1R(-sTf#m-YFMv@xL|iu*?f$ zLIM6KaVmm5elm@-3FQ(O6QESdOen(0S_6h+yM*le|Eo&+^S|mV<$3b{Wm8;^b-Z6l zbPiF$J69A*F@$b{WKa+%OvW&K8^K4VwSdXzmajB)l~2;%=8!-_Dt{~H=rU9^3I zp->#)6>8iy#>BVg6^cbW1SYa2KMP-xw{iXpR9?2S~+ja(92xDhdal7yGgAMtzoJ5v;3w%&M`So4f{ z^}9>NyBqJ`cz1a8dE)Jb;_W9tvhi+A-4+Df7HfOjcF=$G!eN{P z(srBX2DL$-(^8vkVqa(4E|k7p<=#F&>Zp6?aWX)LPP;|A!r1iK78quYH6i!e|V)t<)?SI zT6+`O0%zygRQt)Y6TROYpp9zf1yZ68dn(8nClFC`5X{yQv5j!{>XlpT!mCDrRgZkT zPs_YChAIso`2`-Na>@vZnq|qUw0lN#WwK5>LG{AFsWj+v%ktvH6do4X=TgP2C_&$4oSZ09{b*=vTo{vo z+8SHy7dF;ZV^a@3ho$@?lQIcjp>11f=F<7?>j3*Y=rbE~RwBDpyyQ06?r_jszvw&;R0;unlk>L0Lw;GC4ink!fs#C(LhD z@I;SYRV=mfFo#mk<-U>=cQt&xVY zhYV5oH#Vg2U9oeo@M|QH`%T^!BIj(w6#WM9QeL9S8I|B zwQB=;$3&W^%#lp4Q%U9hXi`ufCK_wnA@Voz{^pID+w(o{+oT2JL3w^+p* z=qw4o@lN(;AbD$ctEQ!;sYSORuo}Sxnfb=K1sfY6Or4rk*R;51Qr!b}v}>~5v$=JW z+BQgTl8hits%l!ixQX|3cC*xG$hJ9w)4ht0dkVE3g=o76Bqaq+>pE)_Xi(2bau5Yg zH)oaCMMk&t06yH1eWSr&acN6mSyEMMkNfu66T5DvcCg=mg_P}dSs(7I3 zAZ2of@t?WrpwQf7WT$<8Bz>w>de&f_srGDV4;}c&p4{LIm9G4uUs?;)j6&lafznAB z_(@?U4aNRRfgGfa_kX2;cxp+Z@vH(bho$-HA99>J^_EMG%vNWSGAC&Cf$pZ0A~i!e zYpJt@$_XcEW|fZjWh8b9R~G^JJ`!IKC_@n<+76w%CJj$HvfT{r4izf*X|s+L^;n*o zm}{&0-ir}>ZEtX2QhZC!w*vEIX@ALqBB{<<5p?~HF>vLK3kOIjo2E>pPgvN&^_}VR zs6|)3>w&{5c9uf*T~B+|uwviT$aN_Xf?callVvaT`LXt_vekbUW%8xDp4r^7H>goc zdUNiT`QSP!Fu%!dXH1HDhC1e)wkwNi+H;*6QyL{On^qSpfGbqOiWDeTK%Z(F>x8Ru zV^t)5swv-H36F2&Rg*cXat6tSrd88YlLgOGR$@uAazR6lo}VedbmpjUTi{BQMn7j@ zA)R7*GLVdet@Jf?o+oftV4QPNjauIV=Di9)4Dn>FvSlH6RQWWZCu*Wp%c61m!LIWs z4?BP(WlxlHkeKH$@Q^&MC`c4a6J(lrlR$f0o}q}_=NfrYq4tF3QoO(t5aDjRXLsj{)Lrol23fE?M}x(Iin zq{U`V$uPJwTYgR5Hp@R@z))wgwhaW;Y|-m+kNM1|t2;~Ru!_n_MN06?> z#9rM{W7#)6Fg9B(%+ys@qLuD$%kUTubWTYzFzhQe?@d0L?R2Y8onkgEZfiI0-21ZbvWcOXk1P7=qJ=9NBwY4Owni|>`H{#?5>JxNp&63yp zbTe0#R5IxxdzL2}Ei%2P79+tDZH@T2RJD4RL(io6a#EcK!b2(n63NAMdxb`v0OF3;ng zvceYhb6M}66_o$h#Mb*4bE@8s2X=%15Vk`8TiPv2}V*=e_QyAXAoVcJ3 zPn0L%ImJZ6iZj^&yo;JzvSrWxF(VSucfA;k_5Tb+>o>;;=^kAo1{C_6EXkP zgV#h)hpmY;C*2Jo06P~nA#DfC@_f~-kot2C0tI&EA)ZouVsaxq; z&YpiB1SkO|lM04=+X^k$!OS*_x094lepZ z;q+E2y^bo6l5m`%1akjzRZ@TTJg8}-QHbK7u0JOn2WDBcn*|*)`PccQ=S)p0M8T|| z496ua$@Rxb%=zQ3Uj`Q53AWo`AC3dFuy3;j)@B7Pyqql$JsE2~(?NX?dmU^0ssBtIuSMrX##;ZMR>?_3LzfR!n^)-|6=8zPvnWIFYDsU+*W~O`XEAR{{Gk z=`ar(ZnSr^uCMoNp35Dc$ilk+T28}7;L~2v8ef?amo-*$g#xbcwV%n>11OL$b$z}6 z^meXa#)7(iZ~s?#>RZvcszD9nzy<*Fp!#RwpSS*_ppl5yulMub%Yxd^5RnJjY95_H z%=&#IF4=utKkjije&i_+4c7rP>&G(Vk{_ej%yHybNMQfb^)%u0D46y2{^KS0Dv6<5 zkfGQ99?+@2_J7&EabT8J#`PnUBx?WRZrS)|l+60&pNmUg`R9~Kg97$nZ~M=JW7gl! z^|y0$zbMjx?@mnyc3EjTlKfa&q zZ`BnU>UtXf(Nn*tr$S2h^hjV;3{g=3jp+izc25vVE9)+ zvcJGXx48aY9y+^I)*;qE@lVrC(Yv_5SFcz0ED*dj((`GqKO|;q^~;`{qW)vAse0Iu z#dUa4>(UhUZ+%@=8=2{wEiI{idoX@UuSi(Cuq@ZHo3A{-SDC*nw5JuBUb4 z*I7>NH4*T23M>x#<&}AOP}v_ncbRf?xu>*?2OVSZZz}%jyw&qMu{|b&f+JJ4G|@9* zdD~aQ!G9yLp(GslF(a65^?8oTjKC6o{^F*m+24_H)6=bZByN&qIf5BQpGTO?2+oxB z`GK1*EWPf#=|e2Np1bLp_ID!ObezfP_19ovYd}k{s|FdpJs(9Er*1lacdF+}gAuXlY}|iDd}rZGCSu`dxB*ARx-fuB;{-o! z3^?%1#{eqHU+kmP_z7D>t#VI%X&y+k-Wl*#py?-M`QviAr2FGiBI*9Pl!8v}HhbE= zTgsnj<+4A?K05BjzmRpFmCtlNZ?uC>dip$iQrW*k>KS3h_`Cq9Jl5cE$Qo|V{X$$3 z_%AKHAm#f@k3D|?FJ$@imeyzd zfYT=*fulkJc}wfraM*dgJ}ztOx%o1t>)*jY2Aqy-0EfZPI-j+lZv#CRkpFjqj-N~W zj)oNUhd>_&J@$`rx#p)p&!v3xjH5@To}rfh)%t9f$3}R8?P7yB*}{x^v)OZn``jtk3gq95uWk*8_;9ya})fT#56atSme-ph=o6i`6#7?!9`iSAZAc-%H3j_# zl0MYZ+ce~|PV5I9m?v+ip#Loeopvpzxai;J%bNvgBM@KE>Vdmhqy7< z+)$IOsh&8s_{w677L8w()hBT;u%+^T`MP>y`n+4OyJf}=Xv^TJ9w%-pzwP?#$`iNUc;kml z=OpG_cYS#&br-)KufqF&ZFpZDH!uC~i>ue-EG}qYUCYF_hai?`FO}(A?WQoWnhBZ#m|?j>J}yFho_zL zhA8fLR@JpQ5@fo3SGLwotMzvRFFMnmQ#=lGi@JZC#L1!pM_Q`f((GO7DLhB5Z*;S3 z;RuiO66&QwIk9`J>wPKQqRQ-!+TeZQ9P(zZ*#;aHE>DLcVTUOW#U$S4!NxBr&^YVSOuZ)8Eig z+1iR**lK42w;bKiZ)!7wYllv~=8Tt7ajV}Go0|6eq+3m`^q_~Pf0iMK2!8c}H-9`i G^8Wy&<<$-V literal 62398 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

1o^Mpj(?aG+#x{uA4om{^IIvSG`mkiY$5gb! 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 ddr4_f2_freq_mhz --> ddr4_f3_freq_mhz --> ddr4_freq. And the final frequency is 'ddr4_freq' to boot system. So it is better to arrange the frequency values in order as above. That means the max freq is in final freq(lp*/ddr*_freq) and the min freq is in 'ddr*/lp*_f1_freq_mhz'. @@ -243,3 +249,6 @@ lp4*_ca_vref_when_odten: The DRAM VrefCA when DRAM CA odt on. uint: parts per th phy_lp4_dq_vref_when_odtoff: The PHY VrefDQ when PHY odt off. uint: parts per thousand. lp4_dq_vref_when_odtoff: The DRAM VrefDQ when DRAM DQ/DQS odt off. uint: parts per thousand. lp4_ca_vref_when_odtoff: The DRAM VrefCA when DRAM CA odt off. uint: parts per thousand. + +* hash info +ch/bank/rank_mask*: is used to DDR address hash mask.