diff --git a/device/testing/u-boot-amlogic/APKBUILD b/device/testing/u-boot-amlogic/APKBUILD index e6247be7d..d744aee32 100644 --- a/device/testing/u-boot-amlogic/APKBUILD +++ b/device/testing/u-boot-amlogic/APKBUILD @@ -3,7 +3,7 @@ # Co-Maintainer: hexaheximal maintainer="Ferass El Hafidi " pkgname=u-boot-amlogic -pkgver=2024.04 +pkgver=2026.04 pkgrel=0 pkgdesc="U-Boot bootloader for Amlogic AArch64-based devices" url="https://u-boot.org/" @@ -16,6 +16,8 @@ makedepends="$depends_dev crust dtc flex + gxlimg + gnutls-dev openssl-dev py3-setuptools python3-dev @@ -45,15 +47,20 @@ replaces=" _fip_builddir="$srcdir/amlogic-boot-fip-$_amlogicblob_commit" # Format: :, -_boards=" - amediatech-x96-mini:x96_mini,jethub-j80 - bananapi-bpi-cm4-cm4io:bananapi-cm4-cm4io,bananapi-cm4io +_gxl_boards=" beelink-gt1:beelink-gt1-ultimate,beelink-gt1 librecomputer-lepotato:libretech-cc,lepotato +" +_g12a_boards=" + bananapi-bpi-cm4-cm4io:bananapi-cm4-cm4io,bananapi-cm4io odroid-c4:odroid-c4,odroid-c4 odroid-n2plus:odroid-n2,odroid-n2-plus radxa-zero:radxa-zero,radxa-zero " +_boards=" + $_gxl_boards + $_g12a_boards +" for board in $_boards; do _board_codename=${board%%:*} @@ -64,6 +71,97 @@ prepare() { default_prepare } +# +# Generic u-boot building +# +_build_u_boot() { + board_config="$1" + touch include/config.h + LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"' > include/timestamp_autogenerated.h + LC_ALL=C date +'#define U_BOOT_TIME "%T"' >> include/timestamp_autogenerated.h + make ${board_config}_defconfig all +} + +# +# SoC-specific FIP building +# +_build_fip_gxl() { + board_fip_dir="$1" + u_boot="$2" + + # create amlogic fip + python "$board_fip_dir/acs_tool.py" "$board_fip_dir/bl2.bin" "$board_fip_dir/bl2_acs.bin" "$board_fip_dir/acs.bin" 0 + "$board_fip_dir/blx_fix.sh" "$board_fip_dir/bl2_acs.bin" "$board_fip_dir/zero_tmp" \ + "$board_fip_dir/bl2_zero.bin" "$board_fip_dir/bl21.bin" \ + "$board_fip_dir/bl21_zero.bin" "$board_fip_dir/bl2_new.bin" bl2 + gxlimg -t bl2 -s "$board_fip_dir/bl2_new.bin" "$board_fip_dir/bl2.bin.sig" + bl2bin="$board_fip_dir/bl2.bin.sig" + + # encrypt BL30 and BL31 + "./$board_fip_dir/blx_fix.sh" "$board_fip_dir/bl30.bin" "$board_fip_dir/zero_tmp" \ + "$board_fip_dir/bl30_zero.bin" "$board_fip_dir/bl301.bin" \ + "$board_fip_dir/bl301_zero.bin" "$board_fip_dir/bl30_new.bin" bl30 + gxlimg -t bl3x -c "$board_fip_dir/bl30_new.bin" "$board_fip_dir/bl30.bin.enc" + gxlimg -t bl3x -c "$board_fip_dir/bl31.img" "$board_fip_dir/bl31.img.enc" + + bl30bin="$board_fip_dir/bl30.bin.enc" + bl31bin="$board_fip_dir/bl31.img.enc" + + # encrypt u-boot + gxlimg -t bl3x -c "$u_boot" "$board_fip_dir/u-boot.enc" + + # and finally create the final image + gxlimg -t fip \ + --bl2 "$bl2bin" \ + --bl30 "$bl30bin" \ + --bl31 "$bl31bin" \ + --bl33 "$board_fip_dir/u-boot.enc" \ + "$board_fip_dir/u-boot.bin" +} + +_build_fip_g12a() { + board_fip_dir="$1" + u_boot="$2" + + # create amlogic fip + "./$board_fip_dir/blx_fix.sh" "$board_fip_dir/bl2.bin" "$board_fip_dir/zero_tmp" \ + "$board_fip_dir/bl2_zero.bin" "$board_fip_dir/acs.bin" \ + "$board_fip_dir/bl21_zero.bin" "$board_fip_dir/bl2_new.bin" bl2 + gxlimg -t bl2 -s "$board_fip_dir/bl2_new.bin" "$board_fip_dir/bl2.bin.sig" + bl2bin="$board_fip_dir/bl2.bin.sig" + + # encrypt BL30 and BL31 + "./$board_fip_dir/blx_fix.sh" "$board_fip_dir/bl30.bin" "$board_fip_dir/zero_tmp" \ + "$board_fip_dir/bl30_zero.bin" "$board_fip_dir/bl301.bin" \ + "$board_fip_dir/bl301_zero.bin" "$board_fip_dir/bl30_new.bin" bl30 + gxlimg -t bl30 -s "$board_fip_dir/bl30_new.bin" "$board_fip_dir/bl30.bin.enc" + gxlimg -t bl3x -s "$board_fip_dir/bl31.img" "$board_fip_dir/bl31.img.enc" + bl30bin="$board_fip_dir/bl30.bin.enc" + bl31bin="$board_fip_dir/bl31.img.enc" + + # encrypt u-boot + gxlimg -t bl3x -s "$builddir/u-boot.bin" "$board_fip_dir/u-boot.enc" + + ddrfw=" + --ddrfw $board_fip_dir/ddr4_1d.fw --ddrfw $board_fip_dir/ddr4_2d.fw --ddrfw $board_fip_dir/ddr3_1d.fw + --ddrfw $board_fip_dir/piei.fw --ddrfw $board_fip_dir/lpddr4_1d.fw --ddrfw $board_fip_dir/lpddr4_2d.fw + --ddrfw $board_fip_dir/diag_lpddr4.fw --ddrfw $board_fip_dir/aml_ddr.fw + " + + if [ -e "$board_fip_dir"/lpddr3_1d.fw ]; then + ddrfw="$ddrfw --ddrfw $board_fip_dir/lpddr3_1d.fw" + fi + + # and finally create the final image + gxlimg -t fip --rev v3 \ + --bl2 "$bl2bin" \ + --bl30 "$bl30bin" \ + --bl31 "$bl31bin" \ + --bl33 "$board_fip_dir/u-boot.enc" \ + $ddrfw \ + "$board_fip_dir/u-boot.bin" +} + build() { for board in $_boards; do local board_names=${board##*:} board_config board_codename="" board_fip_dir @@ -71,19 +169,21 @@ build() { board_codename=${board%%:*} board_fip_dir=${board##*,} - msg "Building U-Boot for $board_codename (config: $board_config, FIP: $board_fip_dir)" - touch include/config.h - LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"' > include/timestamp_autogenerated.h - LC_ALL=C date +'#define U_BOOT_TIME "%T"' >> include/timestamp_autogenerated.h - make -j8 ${board_config}_defconfig all + msg "Building U-Boot for $board_codename (config: $board_config)" + _build_u_boot $board_config - msg "Building Amlogic firmware package for $board_codename (FIP: $board_fip_dir)" cd $_fip_builddir mkdir -p ./build - ./build-fip.sh $board_fip_dir $builddir/u-boot.bin ./build - cd ./build - dd if=u-boot.bin.sd.bin of=u-boot-$board_codename.bin.sd-stripped.bin conv=fsync,notrunc bs=512 skip=1 + if echo $_gxl_boards | grep -q $board; then + msg "Building Amlogic GXL firmware package for $board_codename (FIP: $board_fip_dir)" + _build_fip_gxl "$board_fip_dir" "$builddir/u-boot.bin" + elif echo $_g12a_boards | grep -q $board; then + msg "Building Amlogic G12A firmware package for $board_codename (FIP: $board_fip_dir)" + _build_fip_g12a "$board_fip_dir" "$builddir/u-boot.bin" + fi + + dd if="$board_fip_dir/u-boot.bin" of="./build/u-boot-$board_codename.bin.sd-stripped.bin" conv=fsync,notrunc bs=512 cd $builddir done } @@ -109,7 +209,7 @@ for board in $_boards; do done sha512sums=" -be9b0176337fe9321ac244a16a17dfc1fb976b019de36c78d52149fe7c9d89d2907321be4c0c2faf0d47a4982212501f29063dbd01a005ce2c54e072159e0e3e u-boot-v2024.04.tar.gz +3e88bde53d54edc08b0ef108c5f87760fd57fd9932ce9d4a99f75bc1aa085f6d877801251f085adbf211351ca0a5d99dcc810bb8b4510fdc06159b9bf6ee850c u-boot-v2026.04.tar.gz 415e81dedca92da59bb12025e64a02b14c8cd43c1a7d80b58e808db8f61402ecf396bf6c072c1cc18546254a5c88c9573c255c37496078a71c825abea87211be 0001-add-x96-mini-support.patch 74c57daff859e7f449bd2743c7a8c0358b8dbe5d321ddb3a5b242b4d35683890d500d23e769490b1419a18bed233aea03ee11103bb4d646c502e4018283ba975 amlogic-fip.tar.gz "