[PATCH 15/23] video: theadorable: Use RGB565 for BMP blitting

Simon Glass sjg at chromium.org
Fri Nov 19 21:23:59 CET 2021


At present this uses RGB555 format for blitting to a display. Sandbox uses
565 and that seems to be more normal for BMP as well. Update the code
accordingly and add a test.

Note that this likely breaks the theadorable board so we may need to
discuss supporting both formats.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

 configs/sandbox_defconfig          |   1 +
 configs/sandbox_flattree_defconfig |   1 +
 drivers/video/video_bmp.c          |   6 ++--
 test/dm/video.c                    |  46 +++++++++++++++++++++++++++++
 tools/logos/denx-24bpp.bmp.gz      | Bin 0 -> 7137 bytes
 5 files changed, 51 insertions(+), 3 deletions(-)
 create mode 100644 tools/logos/denx-24bpp.bmp.gz

diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
index 5dffc704bd6..4f413582fb2 100644
--- a/configs/sandbox_defconfig
+++ b/configs/sandbox_defconfig
@@ -286,6 +286,7 @@ CONFIG_SANDBOX_OSD=y
 CONFIG_SPLASH_SCREEN_ALIGN=y
 CONFIG_VIDEO_BMP_RLE8=y
 CONFIG_BMP_16BPP=y
+CONFIG_BMP_24BPP=y
 CONFIG_W1=y
 CONFIG_W1_GPIO=y
 CONFIG_W1_EEPROM=y
diff --git a/configs/sandbox_flattree_defconfig b/configs/sandbox_flattree_defconfig
index e879ca40041..ca81df89b32 100644
--- a/configs/sandbox_flattree_defconfig
+++ b/configs/sandbox_flattree_defconfig
@@ -199,6 +199,7 @@ CONFIG_OSD=y
 CONFIG_SANDBOX_OSD=y
 CONFIG_VIDEO_BMP_RLE8=y
 CONFIG_BMP_16BPP=y
+CONFIG_BMP_24BPP=y
 CONFIG_CMD_DHRYSTONE=y
 CONFIG_RSA_VERIFY_WITH_PKEY=y
 CONFIG_TPM=y
diff --git a/drivers/video/video_bmp.c b/drivers/video/video_bmp.c
index ba36589effb..1c613567657 100644
--- a/drivers/video/video_bmp.c
+++ b/drivers/video/video_bmp.c
@@ -338,9 +338,9 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y,
 		for (i = 0; i < height; ++i) {
 			for (j = 0; j < width; j++) {
 				if (bpix == 16) {
-					/* 16bit 555RGB format */
-					*(u16 *)fb = ((bmap[2] >> 3) << 10) |
-						((bmap[1] >> 3) << 5) |
+					/* 16bit 565RGB format */
+					*(u16 *)fb = ((bmap[2] >> 3) << 11) |
+						((bmap[1] >> 2) << 5) |
 						(bmap[0] >> 3);
 					bmap += 3;
 					fb += 2;
diff --git a/test/dm/video.c b/test/dm/video.c
index c496b05df76..4e76574a913 100644
--- a/test/dm/video.c
+++ b/test/dm/video.c
@@ -363,6 +363,52 @@ static int dm_test_video_bmp16(struct unit_test_state *uts)
 }
 DM_TEST(dm_test_video_bmp16, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
 
+/* Test drawing a 24bpp bitmap file on a 16bpp display */
+static int dm_test_video_bmp24(struct unit_test_state *uts)
+{
+	ulong src, src_len = ~0UL;
+	uint dst_len = ~0U;
+	struct udevice *dev;
+	ulong dst = 0x10000;
+
+	ut_assertok(uclass_find_first_device(UCLASS_VIDEO, &dev));
+	ut_assertnonnull(dev);
+	ut_assertok(sandbox_sdl_set_bpp(dev, VIDEO_BPP16));
+
+	ut_assertok(read_file(uts, "tools/logos/denx-24bpp.bmp.gz", &src));
+	ut_assertok(gunzip(map_sysmem(dst, 0), dst_len, map_sysmem(src, 0),
+			   &src_len));
+
+	ut_assertok(video_bmp_display(dev, dst, 0, 0, false));
+	ut_asserteq(3656, compress_frame_buffer(uts, dev));
+
+	return 0;
+}
+DM_TEST(dm_test_video_bmp24, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
+
+/* Test drawing a 24bpp bitmap file on a 32bpp display */
+static int dm_test_video_bmp24_32(struct unit_test_state *uts)
+{
+	ulong src, src_len = ~0UL;
+	uint dst_len = ~0U;
+	struct udevice *dev;
+	ulong dst = 0x10000;
+
+	ut_assertok(uclass_find_first_device(UCLASS_VIDEO, &dev));
+	ut_assertnonnull(dev);
+	ut_assertok(sandbox_sdl_set_bpp(dev, VIDEO_BPP32));
+
+	ut_assertok(read_file(uts, "tools/logos/denx-24bpp.bmp.gz", &src));
+	ut_assertok(gunzip(map_sysmem(dst, 0), dst_len, map_sysmem(src, 0),
+			   &src_len));
+
+	ut_assertok(video_bmp_display(dev, dst, 0, 0, false));
+	ut_asserteq(6827, compress_frame_buffer(uts, dev));
+
+	return 0;
+}
+DM_TEST(dm_test_video_bmp24_32, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
+
 /* Test drawing a bitmap file on a 32bpp display */
 static int dm_test_video_bmp32(struct unit_test_state *uts)
 {
diff --git a/tools/logos/denx-24bpp.bmp.gz b/tools/logos/denx-24bpp.bmp.gz
new file mode 100644
index 0000000000000000000000000000000000000000..95b44d31950994a4dc6a5148a4a754d9979e2dc6
GIT binary patch
literal 7137
zcmV<78y at 5ziwFn{aFt;I17u}xcr7wCVsLOSVr_5$>|F;~8)up(o1ScP$?jc}+uiIX
zcbm;+FL!&}Zf~>CKIb^bxP-(urh@<rNeCf?5Tc1Dgb*&+ at wyvhnhUXwF-}}D#l{Vj
z<Vh~cC7Z+zT;dv+V8?On+&daE8cCyRk{H0u^ZI%4Xy$M4_kI8O{cXmE=D&DX5OL+>
zUmE_^I{w`i^pyR65PtvUks$lOfop8YG((WU>j!TC|9+%g+KEBQ<AM}pgA}g>DaR2|
zjC1_K4*FwwT{%7oNl9Is(d&B$9pi#j{CE_DU`G~G*Y!@h62}m29w;_hp&HP1soP)#
zUa*-`(aL~Vh%P|=@+i^1UdpjjQ^|+uQH>UO!Mzzm+R6he(gz3~C7R<(9Un+%X;6?n
zW|U=yOA$QmnRQ|Ll~I-*m*QpV=?D-~?(D7^&dEs9S!Td41>bQjr;d at j*$16v<(;9+
zK|y?n4M!eO at sTtj?0F%cRlO4MW*q7mKLRN(k#1aZXd*m(<ghFsdk6SY0zov$*pWc7
zVpMHeSRT%<^{^XelnTSqRws|~YLm6`|7k4NnHDW6tXWr3y*6*bB4c4{TFeU~+h_be
zI?V*VKAet>^w-msV>FTf!udK1lWoa1Em?uWn3mP%%q-QZURDL)&GL#S{MoERP5z>#
zMER>4a_7$0YhP1Me2C?hboom;v&)e_YHch|SHJ%E^k30X@?mAGQ at p5cTKum|n)X$^
z^F1Sq8(Y(2|4k^r29wfTf<RgO$-Fn_s;B;==ZosFpBAs(!T6SC%f}E8&sS0=J#1Q9
zZR`2Y^A&5y>C9{yV+r%-zv1>U1jF+&)i4>-^cLRg)WNoc*IBp#YzO)?QbPpsn^RHD
zo+gp(zN^UHh1{u6m9_P;z0&=yJ|oPf{X_0EH|=N7D92XhuDQxFo{yQE4>Hz8G2|&$
zdC^?;lqalRU(xGWzUO at L+MPwK-Y#oB>T-YYrPS#^7soG@$lUS{Q2N&U*4<}a`MRM^
z_#O3DVeJOzuRXU4Yu0C5^I<|QJ3gmL#btU)a%_bz)@FSt?jUz_bGP%Ap4%|*^y1|&
zSm^xq;5Vpm at tf_1wM|}YG=x1a7H=xIa;A%%R}@1Xs9*K^>E-*bP`~CcUM`N`+&MNk
zi(&1$;ACX=7V^F({GaGH)?kcvD(S=rOEz>-KjpnK&+*gvd#s&bIy0I(+xbfHU8W^f
z)K4YrI_PDfcL7-iYCbhm484)epdgNcDa-c1QPngpUFrFNAy4j9!>+H`Jsh6=0$KSA
zy84hpWynpUZd$f|>h=m0kY*50kvG$1zoDgbT^;%u{S{by*azwX^^_;6pUh2rsrzt0
z_{(ic$xvY#C1EeBYVxCW<waXDJQH#+>>>4xHvT^xKL!6FHT;>>h<|oL*w1+KizcOK
z4W9}(^X64LHFRF3XJP0iAx$)VC#M}~+{Hl0`rXt68QM at rel=0Q<j=2iXbe^pn#)yA
z1QfI$>N`-z_!!-Lp}edtlgiUSAp}7FCqDe at byMhXrM&ugxCsM7-7%UCo+Ytt`^1 at 1
z(tqKOu_VK3f2!&|UqPVfw8QxdzwoOZ0`3-{$sj~MR2|_yd3%iBRiQ^FZ-O#LeyL8A
zg<o~(k4oSEU+PylUF3Z_zgb0E&ytjGevf*943rSCJNaF*!t)gunJL!!hhIA+B-fj_
z%)&4FR(|}3v+FMvpVIk-Z)3FN0J*a)1yv1nGfSkYo9d96xwEO8 at R>bJf~eW8H_0@{
zIqma+pXO5d)mxmhmy_s6ex>rL`HwyN!Y_<D++CjiuQ$N?fq|u7f$lrWdb8cF80y#m
z0TI(cZ*n^&^l{wO#J=dPLdR*k^G|^AuFp^p=oJ6sPkyD);uIk(lYQcs3!MBGR<B8&
z_7fKdUEN)6;_qD&oN0EN^erDzVpg{6xKl&(<n&iEGb5a`1TTH^5B<)sVh{%~g_dp5
z_$}FZAg{6lfD2 at 8>!oxsuX2{#Tc%~TbbW+H)kHm)7WeNk*YwcXXwIZwF_!3^Bp$ey
zZOKlHc|jBXJbG|?@J at MO#=<m|#M*X(`U!D8S-gz2$s#BooRzo4tk6*9m+oJsOnR8E
zJDG+k`de_lEUm}b6(7EtYQh85D+tMp*LSkNV(q#>_8qF=yI2NeiyK=- at CyvW#zv*^
z1vZlK3m^_<>u1BBHn+U%jRJGaJ7lm-2MljvU9-1W%G&y<AyCzX`&q=Gq-mcxew6|4
zh{a9TOU18N{%3mQGrS)B1L$>O?FJZgs2hOC3TvD6hG>=nG at WWJq9MzU&&&6JZR`Hl
z+W93)4lC_8MVL2lPGQYD>+W+-8C$&#cK}0fl4yPdw<I8WyvQO+#c$5+GU_MG_RmB&
zsW0%Ce?>>i1pia)%L2JU<JYvT1{PAA^hdpJifPf3ibFT4p9+ at OjTn9v0a)_k%Ssz*
z<D&}ujDRNgSCa5sync_9Umoj8_`{FnDtueC99Vv>CU$bm+E40IUXg at c06L4_)?iZV
z)WLA7{h7F*)=`&~_`14PJ>`kgx85)Bx>&yFJp50uOwBB{cAmjwa9y+szvU}D at xLzJ
z{9f74!*p1-d<Y-aw6r?Y7>7VfDslr2zf3TVE?pk7 at O>pf;+?h;Y#729ekCvbC^#XS
zT=mG^c|DRKdc<RNYsv6{D1OD|C7<$)OrwZ4*F??U5wY<7h=uP(&DtJgu1-)VCcpMG
zacKqus)-M#ggy?WPX9SMp-ldlKA|v-pb8O8vCw%0dDwF?#Z}?U4znP-v|c{_Ujt2C
zTFeU>sUcbU3ItsF3l|qwHx{qmX>NJ9to5kdiVhYaPDh+&-gKyF&Gy3THTeq`=2Vm*
zl0_)3iF!^o;eN?Eb%QW+g-qWog71#YDhglv1v|MUB9?v at uhT2XF)y(bMrH6_n($}!
z+E<O198*=jc~g(un)ZOg+HtC6;{nr>6-KiG;-n6HT3UVuo!BFQ+)0ndSQ_{+OGix6
zQbovvB5DD1sy9UE&7W^>K3Km0>p^3a56bsmD%sFQY&X+QW!&);Q1Fk1lljNI!FQu?
z6-q9N*rLTse&cnphgn71!rBe=Wp6_t=ne{2tVTC6XsVscZ^V*+&l_hji6fVUOsnyh
za>}HK_1f3+7A!(1C^=KU!?NY$ym^(x5Oje3H%@Z(f8v{zJnZ at KrJwo2Z}^f=<*&QQ
zHvE<hZ74cZ+rF!klM)En4)hn+tV11DA@>G?-$br8TKr>P(U#f8N}Gu7A at G#omztK<
z^7n6tJFL6U!M9JJ@!$UCmvgLx=WIf9=#xAhW_Cm^``l2ZvuycL@&=a*2;2-NCHwY&
z0sOLh(fsFm6H;V8G8<QO+_3F(dG{^JTX-nI+I1nXa+Z4PQ@&Hoavn8*&nl*9iD+hH
zYK~`ay;Oeaw&blk)L=XKjcL&`-&yv`FYnGb%GNA~*_Fo(TQ83?%fa%#tGTnSs>zS~
zmtUp#<&lK5=ensga^5~c%tkCboU-9;*+GVrNk+j4YsV>X2exp7DG>H%ob|dX<@>Ib
z?K<w<a}9py?%_|atiG>cH^<2;qhLhw>Mfe^XNB_1cuouBlj^XaQlY42+b7EL_c-ix
z`39cksyCjq^^6*1 at j&~#ZLZ;l2fymc%unW3R?zdJwq3`X=5xnBRY$X1N9Hia-~)b_
z`=(S at xD9l8i;U>|--%q7Ry$r#4&w}eO7?y$d9#cpn41r}9el at TqFuc#X5&2dDL2z<
zZ975!lsxIN2=9ZFakagc{Wk+q$2%P8B0YD#@iEbik&#~es%I8dbQYU8i;>*;x?anH
zQ9n6g6t^DX<#EyY^|lC>eohnxP3(&f6%KteV(~|A<VIH?8`a!^Q at rg{p3yPMueW1T
zj25G3;`H<P64VJULGJP+1s$Vt&|sjbeiP?z7iuipTjWdMUr9lqF^&FATy`17Z|2rZ
zl2`oBLAE8ELw^V6lDs`&wB&du>$X>mSbSwP6N4BHeHA^@*ZR(Z?Z7pTgIKxvrJo5&
zfj)}mG}NkSQ~PMBJJ?`6NzaX6mIWL1^D8JYt{l^8CIqx1=6&C0ZNHMT{!G%Elkm^u
zYmX<cI+5IXTKCpP^!WZ7A1gm}JHM?zZPR&q<LQL at KI9T#-#25;DfPy4IXkcVYw+BL
z-m~k5e#<4rn_nibJ{e!z8&}txwCbdC-IusowC5WEX0YcL`<bQMi9sx%|4W_r6St--
zYd^`@trs<H4g{@e3N$!c80`Qm3p=kP@*;~=)_tpFFG0F$!x at Cz8E<`6=EGF7dH+pK
z^ZEFiUV_TjuOUw4#5D3MJ#aI>{aRYf1zBAmC at 9?hjri*H+&1pG0?C2=kW><ZWDikI
z{87B;1{@eg<7ruaAL_+ZX!8~<V&PZ)auEBRzGchD^wdntYCWGxnf!>Y+y6sVsB-d~
zr_rQ at NV7g^?Y at QPimN?t+$p$^K-*?*y9}FvCS{+vB!sQ~+KkmFVMeTn1j|xM*Nw!6
z6ObY^SNsTxf(?nU>nrHw4o0k<XS|))svO7tH8J{8jey<|$zaAc6a7vu)C6swyUS&T
zGa_r;0UeO@>>XF}3|+_xd1yS12DI at fx92ug2|7z(Mgo>i9oL{}kQtDk*Va$B%t#!$
zLzg*eq9c3fRcIw$P>~Mo4{U{D>*dUCm$O^1LICI`FSg5rVLSJNG>&7Xy;Gc&I3d1h
ze#-h&>ZY at RYV{X!xwhCGs~a+E+Wk&0OfKr{5Ya=VdiHvbl|@z^N!f6=Xy8e-PioUS
zP|TCu<h7 at DZ#%yl0QH2$Kosved5!KKj8o!d>bwrVplEzDLf at TO-$w}v<S at PELd?oz
zp4Ex2J_gM#9grMI8u}*47<>8#W4t(i<1=&l%m70C{75b;1+Rvhn?Re#)Ewt1!}7!6
z)L~tFz6VFp3(kzvH(x}rO8$+;M at PU}Q*@n_EakTK%h#OZv=vZuRL6SIVIN?8B3B$`
z&jmtDjU>RZxG6q^{8;l?Txb^RdGgCCV1fVvrfP@&)Ki<hLB94Bsb5eKSzRx?yH&jR
z2HK5!9u)A*C2GY{YOMlH2WQ=r*Peoil7DMAU*MSwpxNj+7!B48hMGl?7>_vS16gWv
zROPPt8e+--h^zV}YR*niWVQ7AQF-HPddX%71^mf%w8?;FhO=#8wJI9BpIl+rcL;`{
zTwp~>V at n89J=;fiPz4xR2MeuV3(AGAIEbWJ7Qp0KP2%_kvP-k*Nilx)iSvXa{y<j+
z{U!f~=OeU1&`~0^sj$b(Ggf)stOWUivrXFbyj}f5a{;uQ9EKgTL0N21!2YAxCZ#Bj
zvzK8KBvRDjRi<t{=PegsPCKL at zg9v2UJTuTPJi8B{Ayb+kZOevD?)g)0|<o4q~MQv
z%LRQRrB<r-XGG)zm!M+6P{5P-mJ$3nQr_T?iO2;&FJECd6iKVSimNv958}x63~Zg}
zUDF>6eVp-=Z6bisk{m#QM<K33&?k~f!Q=JT1tYGc9!qFAAtD#Z9;yB?p>z-24d~XX
z$HY|!fkTBoE{OFauEcq91B>E>LZ=S)Oi&&ABhM#`8+ZAIUqoRhdr*(yNL+(ZZi#H5
zZ9M at IQm%I#r$1x$NiqB`KSEkg#113{jG$x;{f at ZmWZAt4<Q4CQU&aw9o<LybnV=?`
z;eZ8Qf!<pk1p(%c?66QH&Nza(LF_(>jnzKG+ at a+i)oDI2A{S^q`Fh$whr$T>MPz7$
za8De+q&0()M at P??MY{YY(fra+q<2!F_>0?PNlB9<7k}i-z^qdmJFZchC8FgKypSVN
zFan5YSu&ChEFvm~p;#`s*{NYA5Y4g}34tDEy_41mHWUd1&N-|EB;Par!iE;n<N~>~
zES_mnUzs71po%6p63+1M0PqL&F22q&)C0>FE70ep#-Gu>lAeh-pxN~UEe~f{P%fw`
z8I3}u;pDUAf{GAPw*7DPIFVHX!aZ~Wq{`UrQp7MEdg!Kz&*{>^82He?-#R1u58+Eb
z^=w{W0Q;OWpu(_AjKh))tpU$@i-RvTOVTQ~0f7p;e@?6ev^Sc~-tY6(sfH7z_ at M_$
zY&gMbwGi%69W<;{R28pI2a-UUeb@@h8>Az*a;7ijD!qJL%6YQugoh&MA8;#GiT7ZT
zzY3$Tp+p6Zi4cZ8Rzhe=jS&%J4h?;Lih-aKQ4;AU+3a!^&D!Hbp`huM&xW3t&p<bx
zm(}%AVt|gA(@?`VpkiwL0STvuHz^=)<$D5v_wi?aMwn-TsWl<8^fb at 1#nvA8eIDG}
zeG3Xmk1NqEXiV5TdS8j~9}W!UoErAG4=9~*n{{FV`bWqTMH%{T_^Y@>*D}zG22bC7
zky;lDVMuSefc~B56fFuL at 45raWDn5XOcOdI+=Px(mIvg*$P|0Xs<o|GJ>?0WO3Jcf
zAFi^yH156Rh_*uRk682pqxc~b7co8RUWJ3V(9Wo at TT*CJv@`6s)g!jeZ|jHGl*iib
zdcv at knEW-l&a~R>b_2Ok%Lyppj-v52?75&tBS<Qt{sdIs?JbB_DXO#orrSPua#mVK
zo6c~yOy`%>5 at k*(f;rCaroIwIqOfiwc|R%sWj>vhFCb at H5%<A$WJ|4wn96~rMYD at r
zS5MBo6KgYA=hMLgI at 7qiKK}N>r8+&g at j7fZ`csyL1o#Od9vTpVyys)qj?;pCD$cKe
znwD16)2F^bO<xupIEpLmHWU6yLR}w>B;+4;NAp5eVZF&EOb`J26tHNJlfQBH)QI&1
zJFnsn at -l3@Om+=Pu2aC`014E#TtF at mNHW;Z+tm;G#2@%COjca&afkuq;sMK!FGTDW
zWj~WaoA5iTM&(@>$?xX^(Pe8moxqrt$0)bQcc5jmTM154eaJRCL|Cw*J>T$Ot-(v2
z?29+RFVas%E-e at EH(2)caC`(hWpJAD)>lMzn$II%gXpsC$SZ2tOn&K7C^!$y$(?N_
zvN&{;{>_WXIlFj;Ez6Ifp+?t5`-DR`b1F($7FltaXdY*(Xp{b^iF%HHCvyHlo&h5O
zTSQKyj6x_%H at _!(dPr$sUzZ~4t7K8Lw({qfQsmK-Rrteppx<c85j{8L!1y5k2NKc|
zW3CazF9~8vWLv*~d(4psThDi<s(Si2tVM&|#V_JTnNBByUx#a5-$x8eNZpJ>5k0pG
zYt}K&(1`>4{v#I5nEor#{E|St1HW{XWfHdT8>XsNKF$~TkzXKc_BJ0W24r(u;2aL-
zx$8p>){fJ8l@)%m#{T6uNjA=RerH7eUP&Aa{D2`Rp}29Ezt;H-eL!Im(h}zp`RGA;
zhhl6H`{78Oh$*e}h1}SJzq%!u^4gCLCZ)M)?}$AztLGMKXDrt7pCAwo(8_*(4kwZ)
zJr-HnE{@!&**g>yAMuuQYWOo*1?s|vmXUGLcX`*vf|YL?a%cGEgjk;7b2uR<<kNl;
z`Nn>s<VIF@@cbN-D&#($YHVKREOYb0K<rWsAg70Jn>w%M%q&fpzr^yj_rc-U+Yu{#
zko at Ws(YB5J$&D^+R7_ at AgvrhIga@?pKO4=4!rG>?HnxoeQo+3cX3oy5n&$Hf4JYiI
zFTNOjS{-fWdj6F>#J2>;-;<z>ikRQc&TPbAdlJ-%3O@;RO6cP{#a|4jl&t2%rjBca
zd^oMmzEL;7otTVJH=RYe$F$&6GJfSAUo`XmJHLtvKTJ?W5??V}{C_UhT=ZdV(c%R8
zRB_)t;zV@$dWZZhKSEBurEEA$OfYS~lH1l_(0RS2>xSn{Js$&$xA1O3$8}=g@%Af7
z6DcEo<icxj)Y896LavJG2x$L)O)`1%kL6*{%cuQPF<H#4mLSCCSorq)D~?829|Jo;
zd|fZBC>`W|AbQ17L2Dho+N(t$O2RMW7bm4Di9ZmZp6)vrfk0Gcn<NdA?Cl75shJXo
zq_{DXQ^|<f{JD}e2qU?}mtV#B`yv*+D><8<NR*8mQv43z4|dBm3dz}YL)5Id{qmVq
z!5GW-2_(sx5{dEmBCM92Qws2`0{x|9MsR*b)b}V!D!@^Xwlzu4texBsl49L=;SCzt
z`4zXEW2hkH{<zFs_vm|Y5o2jcp7sl=S^)I1^ZUKO1L47kBJ at dFiY&Hhadi2H$a!56
z3qOc_<3QA$)~H$ADa0)7meuunL-gEs`oqkay#t9yE_g3|;RjI_Eiol4<Mlc6$lpj<
zamHZ{&r2 at k<Ltu}j7Q^A&?ZPplP}=I at At#k%i;~aemV=kSw&jOODGtuUk-J<e3?!f
z7SJaAmWAKa=5EPLC=?2=FaO?ADy*9LkgePMmZhHWQX_=#^pO;T$R+q4>AkSq(Ozz_
zv>ukcg#4lMm<=3NVWZi=F<HOqP~aB7`IB7X%1d6!QkOiSAimDVVxsM^?zy1P3=eck
zd<5gyLU~@C8-#~7OiQYGP4w^YFKB*0ZOP`OxG_p8R#LH%E6}ZSyF at RY9TrfBJ<Vr*
zW`4W#+?yCngCgVs$xBYba~+P*OY$lN6vkp5$2zN?+iu5j$<k6KFE$Cz*#tgUNs06o
z2^{{vy)$NM7>MF{ofKW%{0z>W1P3*=v`7UJ3L;{qP1CAH3hGcPjfl?TAmS<xVjYSI
zf|G(Segy?5N54Y7B&7tCCTT8r at 9uIx{zI3xm;3iFmv^uCwA4uRy5r&RzT at b~{P{=O
zuQnVFDG3C=zg?d9g#%ff9oO&Q2Kl?waXH<tl$!!?_Mjx3aD+~P=R(!oWb5wL)!$0n
z<!HO&$~17B at s?Fi^Z_+wg^`vSYg}A8{oQ@|b^5DjCx9EAjM!g971{y{s at Il|pTF(?
zHeddqG`@P;hHa!4_2BKpZ+6EJy_Xr?JJjrj+f;ich|AB-wOPRCVLtHs0^a}BRNF`%
zoHSZDk4H~m<=dY;S~;J+7mCZIzt>wt&Fu~@<}O7+LDFyVsbt`<G at hbhu0=`c$0Y_;
zA$;3);#+%EDk|aZ5a9rR;c*bTr=dU=i=L?kE<ke;i3EHP2&|}f5OC0S|2p7OA%r>>
z+S?xJXC`*02W_PoGS|YeSl){x5)0F^E8soDyI at z#L69qI96`Gm2rbl^@G%$t2o(-n
zX?Z&yLZviM=33OUKE-#WEYaB&B19Zg0z!-QW<4F`exj?h_^IjaV5H~Cxw@}ZLZ1`I
z+&;Lc)bcMi>bzyv5c}T{-qIKjOhrp|F at EuC5hrAC#QuMAU)A~8Ico>J|H+BRs0AU6
z6MIC8cX=N28C!}AoJTdyXF%v)WE~^0$(75RsdYIU4+&bCFg=`8#(;%NUKI(W2({v0
zN}lF`RpY%XCd9TmUI2_Xrx8sNDrn3&y|aB3f^)d_L$ViYlt59RG3HEF>6spAJ43O(
XFkhp$qYo(v6l?kesVxqUdMp6|Hsv3k

literal 0
HcmV?d00001

-- 
2.34.0.rc2.393.gf8c9666880-goog



More information about the U-Boot mailing list