From 0bc49550f65968b778303ac78f8d976a36adcf5a Mon Sep 17 00:00:00 2001 From: Nick Chan Date: Sat, 2 Nov 2024 14:18:11 +0800 Subject: [PATCH] Add support for booting on t8012 (T2) Address some peculiarities specific to T2: - Reserved memory at top is very large, either 512 MB or 1536 MB, and only lowest 512 MB is for OS use. - Some ranges in /arm-io/ranges is not aligned to the page size. We align them ourselves instead. - On models with a screen, the framebuffer is extremely narrow at 60 pixels in width, so add a smaller logo. Signed-off-by: Nick Chan --- Makefile | 2 +- data/bootlogo_48.bin | Bin 0 -> 9216 bytes data/bootlogo_48.png | Bin 0 -> 3059 bytes data/makelogo.sh | 1 + src/fb.c | 15 ++++++++++++++- src/memory.c | 5 ++++- src/startup.c | 18 +++++++++++++++++- 7 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 data/bootlogo_48.bin create mode 100644 data/bootlogo_48.png diff --git a/Makefile b/Makefile index b10362ab1..b8ebeb7f1 100644 --- a/Makefile +++ b/Makefile @@ -95,7 +95,7 @@ OBJECTS := \ afk.o \ aic.o \ asc.o \ - bootlogo_128.o bootlogo_256.o \ + bootlogo_48.o bootlogo_128.o bootlogo_256.o \ chainload.o \ chainload_asm.o \ chickens.o \ diff --git a/data/bootlogo_48.bin b/data/bootlogo_48.bin new file mode 100644 index 0000000000000000000000000000000000000000..76df9e8b20001b8b20f7f04b429213b2940f988c GIT binary patch literal 9216 zcmeI2dr(w$6vr>S%kHuZ2)itAkma$kyhgwsk?<7=io67TVHp!Bnp8MVjfkOX{gdf5 zVAANMqYgsh2sLG;l17cGsURd~4uzRElY*4;Qt;dFx3E06Wxe~rwwdnC;oiHuclmtJ zIluEezaKCR1Ll9z=>smu3LGn|k@rSlTd>dgJPu;QT=05s6r3G|U?}%AB^XuUh!zXv zw7R^s<@%o_{G*v8uo7BeQd9~*cIf=pd2Qtx8wHW@+ z;{O!Ch}0J)k3q%C2>eF)xA}^(SjZsQnt|9tYmbm{DG2jI8wMrz4E9W7P#ZQ0*WOJ; zO`t6fIWpKwY@;26Spo)590u0^vK9f!b6>)oLVQcPb`!osl2InLLVcD3hXcfTpXk{_ zbgdCHSSlKPW+u@QNS>DvExac@m(7;BW2?Ihc1yUZ(B{@?Ag_Pq$;TcU7jF^vVqzPJ z&SGlxo}8)fLOUzWcd&tz?UNZN-eL!Q689`FCgtIqm_&RU;ENBPg@Zb@wUGM?jUIBY zBvv(K`<%Gg;%N$17e^EKtZ15fY5x&@hCAh9Z=htE=mT)~YZ^SJchR8{(%L z294^V*B9pH;FM|>K9+l+%892Qx0NIY2c#Ul?J7d9k1J*d1t5&DQf|sT+Jb_DU}G~e z^My5si#H<^hM6_&W6o3uvBu=pI6Wg3p9L$ib+QZ@e%?@#YwBl>uSau_zV`I=gw+J} z*)v>x@ZEyd`uT_AF{r5!mvc5?+xm?N2@iiPw?;#7a4_ub?97@+w$=iaPfs_1o#a*8 zOSrn~4cxkN4Y_%_pj;Zp$DMtAe8A;$&88vUI~W&J3k>G}F>e$4+y6vEV*}#i;#g}4 z2?>Ftqj~yNXQ3^sW-m32o#qkoKjnXL`!48FQBi@2hzL-&$N8VW@8{x4EMbb|I-+>wY4ELGn2Ij zg+c*=z_|4Sm(;ML@Y%+(kHb$j)Ya7?CMJe;9=W->8C6dsr5>oCzsl_V0|NsnEiFY@ z*gxklUE@NjR6;B^tTz&JdDyN>GM-(J|7i?5Iy#V_pAX8Wi&^_MFE1}}I2_hvA>Q2| z=TcsnFn+3`si_GG2??ym0-ZbT?d@6dJMe|r8=GkwyAJ<9dIa41s~-;r$i>i6U0sc+ zs3=xrK`xiGn$wob!_k=bqWSp=^Qm8Y(elRw4L*8%dr?wS!it~H8xn~`Zwx#{_BitN za?{y$_@6=_Z|%Xs#xC6M8W`4as=!hD5sl;T?aqSniGV-?94qJ z{iz4N4@dH-zP=u@v9YY;;Ns$^+p9yNB~P`-Wri zhzySM@^XZeK2^K+jJ^*H418=~6i(JCwAZ{ue!t%SfcjXU>EYi+_)q`Zhmi;Xot>R1 zC@2^=k7!RS5{Y#BUVHz^k#B>wLDBd&DPKRM5&SfNYOi$Te&1;N!BDicv>+)dX^aLs zN6?(%@p!D*HCkvs&2*I;*L&*7e@aNl@4k!oag)?hdbGE?q5F9n67uDt`>C$%h;c(qKdGe&XkE8jKn3#y>=4Q2o*49>J zXJ;GKFR;--KNB=bhSF&%?8dehKZVm|{PpYCk(HG-oaeMZp#4x~Wu;oS|dX9BW)-`RQ|X zUn|KoknD-B7#j;M{yTT>ATKXZ%^pDZIvpGwj9OQj!m96Ce|st3A#0w7)S=#W6n{Ud zl{_HJbYT E-_ks7Q2+n{ literal 0 HcmV?d00001 diff --git a/data/bootlogo_48.png b/data/bootlogo_48.png new file mode 100644 index 0000000000000000000000000000000000000000..0b2ec48e160b6c6dec95e29b7a70ac51a491d2cc GIT binary patch literal 3059 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 + ba->mem_size - 0x800000000, BIT(30)); + if (chip_id == T8012) { + int anode = adt_path_offset(adt, "/arm-io/mcc"); + + /* + * Lower 512 MB intented for OS use, upper 512 or 1536 MB is some sort + * of SSD cache. Cannot use dram-size, it may not exist in older firmwares + * This property is changed from 4 to 2 by iBoot on 1 GB RAM models. + */ + + u32 dcs_num_channels = 0; + if (anode > 0 && ADT_GETPROP(adt, anode, "dcs_num_channels", &dcs_num_channels) > 0) + mem_size_actual = dcs_num_channels * 0x20000000; + else + mem_size_actual = 0x40000000; + } else { + mem_size_actual = ALIGN_UP(ba->phys_base + ba->mem_size - 0x800000000, BIT(30)); + } printf("Correcting mem_size_actual to 0x%lx\n", mem_size_actual); } }