# # SPDX-License-Identifier: GPL-2.0 # # Copyright (c) 2013-2023 Igor Pecovnik, igor@armbian.com # # This file is a part of the Armbian Build Framework # https://github.com/armbian/build/ # UBOOT_TARGET_MAP="${UBOOT_TARGET_MAP:-u-boot-dtb.img;;u-boot.bin.sd.bin:u-boot.bin u-boot-dtb.img}" BOOTSCRIPT="boot-meson64.cmd:boot.cmd" BOOTENV_FILE='meson.txt' LINUXFAMILY=meson64 ARCH=arm64 SERIALCON=ttyAML0 SRC_LOADADDR='LOADADDR=0x1080000' BOOTBRANCH="${BOOTBRANCH_BOARD:-"tag:v2022.07"}" BOOTPATCHDIR="${BOOTPATCHDIR:-"v2022.07"}" OVERLAY_PREFIX='meson' # This is an extension method, put directly in meson64_common. A "built-in" extension if you will. # Bring in LibreELEC's amlogic-boot-fip repo, which is the authoritative source for FIP blobs. # To add FIP blobs for a new board, send a PR there, they're awesome. function fetch_sources_tools__libreelec_amlogic_fip() { fetch_from_repo "https://github.com/LibreELEC/amlogic-boot-fip" "amlogic-boot-fip" "branch:master" } # this family does not need it ATF_COMPILE="no" if [[ $BOARD == lafrite ]]; then UBOOT_TARGET_MAP="u-boot-dtb.img;;u-boot.bin:u-boot.bin u-boot-dtb.img" fi # Set CPUMIN et al if not already set in the board config. CPUMIN=${CPUMIN:-500000} CPUMAX=${CPUMAX:-1536000} GOVERNOR=${GOVERNOR:-ondemand} case $BRANCH in current) declare -g KERNEL_MAJOR_MINOR="6.1" # Major and minor versions of this kernel. For mainline caching. KERNELBRANCH='branch:linux-6.1.y' KERNELPATCHDIR='meson64-current' ;; edge) declare -g KERNEL_MAJOR_MINOR="6.5" # Major and minor versions of this kernel. For mainline caching. KERNELBRANCH='branch:linux-6.5.y' KERNELPATCHDIR='meson64-edge' ;; esac # this helper function includes postprocess for p212 and its variants. # $1 PATH for uboot blob repo # $2 dir name in uboot blob repo uboot_gxl_postprocess() { run_host_command_logged mv -v u-boot.bin bl33.bin run_host_command_logged $1/blx_fix.sh $1/$2/bl30.bin \ $1/$2/zero_tmp \ $1/$2/bl30_zero.bin \ $1/$2/bl301.bin \ $1/$2/bl301_zero.bin \ $1/$2/bl30_new.bin bl30 run_host_command_logged python2 $1/acs_tool.pyc $1/$2/bl2.bin \ $1/$2/bl2_acs.bin \ $1/$2/acs.bin 0 run_host_command_logged $1/blx_fix.sh $1/$2/bl2_acs.bin \ $1/$2/zero_tmp \ $1/$2/bl2_zero.bin \ $1/$2/bl21.bin \ $1/$2/bl21_zero.bin \ $1/$2/bl2_new.bin bl2 run_host_x86_binary_logged $1/$2/aml_encrypt_gxl --bl3enc --input $1/$2/bl30_new.bin run_host_x86_binary_logged $1/$2/aml_encrypt_gxl --bl3enc --input $1/$2/bl31.img run_host_x86_binary_logged $1/$2/aml_encrypt_gxl --bl3enc --input bl33.bin run_host_x86_binary_logged $1/$2/aml_encrypt_gxl --bl2sig --input $1/$2/bl2_new.bin \ --output bl2.n.bin.sig run_host_x86_binary_logged $1/$2/aml_encrypt_gxl --bootmk \ --output u-boot.bin \ --bl2 bl2.n.bin.sig \ --bl30 $1/$2/bl30_new.bin.enc \ --bl31 $1/$2/bl31.img.enc \ --bl33 bl33.bin.enc } # this helper function includes postprocess for s400 and its variants. # $1 PATH for uboot blob repo # $2 dir name in uboot blob repo uboot_axg_postprocess_ng() { run_host_command_logged mv -v u-boot.bin bl33.bin run_host_command_logged $1/blx_fix.sh $1/$2/bl30.bin \ $1/$2/zero_tmp \ $1/$2/bl30_zero.bin \ $1/$2/bl301.bin \ $1/$2/bl301_zero.bin \ $1/$2/bl30_new.bin bl30 run_host_command_logged python3 $1/acs_tool.py $1/$2/bl2.bin \ $1/$2/bl2_acs.bin \ $1/$2/acs.bin 0 run_host_command_logged $1/blx_fix.sh $1/$2/bl2_acs.bin \ $1/$2/zero_tmp \ $1/$2/bl2_zero.bin \ $1/$2/bl21.bin \ $1/$2/bl21_zero.bin \ $1/$2/bl2_new.bin bl2 run_host_x86_binary_logged $1/$2/aml_encrypt_axg --bl3sig --input $1/$2/bl30_new.bin \ --output bl30_new.bin.enc \ --level v3 --type bl30 run_host_x86_binary_logged $1/$2/aml_encrypt_axg --bl3sig --input $1/$2/bl31.img \ --output bl31.img.enc \ --level v3 --type bl31 run_host_x86_binary_logged $1/$2/aml_encrypt_axg --bl3sig --input bl33.bin --compress lz4 \ --output bl33.bin.enc \ --level v3 --type bl33 run_host_x86_binary_logged $1/$2/aml_encrypt_axg --bl2sig --input $1/$2/bl2_new.bin \ --output bl2.n.bin.sig run_host_x86_binary_logged $1/$2/aml_encrypt_axg --bootmk \ --output u-boot.bin \ --bl2 bl2.n.bin.sig \ --bl30 bl30_new.bin.enc \ --bl31 bl31.img.enc \ --bl33 bl33.bin.enc --level v3 } # this helper function includes postprocess for u200 and its variants. # $1 PATH for uboot blob repo # $2 family g12a or g12b uboot_g12_postprocess() { run_host_command_logged mv -v u-boot.bin bl33.bin run_host_command_logged $1/blx_fix.sh $1/bl30.bin \ zero_tmp \ bl30_zero.bin \ $1/bl301.bin \ bl301_zero.bin \ bl30_new.bin bl30 run_host_command_logged $1/blx_fix.sh $1/bl2.bin \ zero_tmp \ bl2_zero.bin \ $1/acs.bin \ bl21_zero.bin \ bl2_new.bin bl2 run_host_x86_binary_logged $1/aml_encrypt_$2 --bl30sig \ --input bl30_new.bin \ --output bl30_new.bin.g12.enc \ --level v3 run_host_x86_binary_logged $1/aml_encrypt_$2 --bl3sig \ --input bl30_new.bin.g12.enc \ --output bl30_new.bin.enc \ --level v3 --type bl30 run_host_x86_binary_logged $1/aml_encrypt_$2 --bl3sig \ --input $1/bl31.img \ --output bl31.img.enc \ --level v3 --type bl31 run_host_x86_binary_logged $1/aml_encrypt_$2 --bl3sig \ --input bl33.bin \ --compress lz4 \ --output bl33.bin.enc \ --level v3 --type bl33 run_host_x86_binary_logged $1/aml_encrypt_$2 --bl2sig \ --input bl2_new.bin \ --output bl2.n.bin.sig if [ -e $1/lpddr3_1d.fw ]; then run_host_x86_binary_logged $1/aml_encrypt_$2 --bootmk --output u-boot.bin \ --bl2 bl2.n.bin.sig \ --bl30 bl30_new.bin.enc \ --bl31 bl31.img.enc \ --bl33 bl33.bin.enc \ --ddrfw1 $1/ddr4_1d.fw \ --ddrfw2 $1/ddr4_2d.fw \ --ddrfw3 $1/ddr3_1d.fw \ --ddrfw4 $1/piei.fw \ --ddrfw5 $1/lpddr4_1d.fw \ --ddrfw6 $1/lpddr4_2d.fw \ --ddrfw7 $1/diag_lpddr4.fw \ --ddrfw8 $1/aml_ddr.fw \ --ddrfw9 $1/lpddr3_1d.fw \ --level v3 else run_host_x86_binary_logged $1/aml_encrypt_$2 --bootmk --output u-boot.bin \ --bl2 bl2.n.bin.sig \ --bl30 bl30_new.bin.enc \ --bl31 bl31.img.enc \ --bl33 bl33.bin.enc \ --ddrfw1 $1/ddr4_1d.fw \ --ddrfw2 $1/ddr4_2d.fw \ --ddrfw3 $1/ddr3_1d.fw \ --ddrfw4 $1/piei.fw \ --ddrfw5 $1/lpddr4_1d.fw \ --ddrfw6 $1/lpddr4_2d.fw \ --ddrfw7 $1/diag_lpddr4.fw \ --ddrfw8 $1/aml_ddr.fw \ --level v3 fi } # this helper function includes postprocess for meson gxl and gxm. # $1 PATH for uboot blob repo uboot_gxl_postprocess_ng() { run_host_command_logged mv -v u-boot.bin bl33.bin run_host_command_logged $1/blx_fix.sh $1/bl30.bin \ $1/zero_tmp \ $1/bl30_zero.bin \ $1/bl301.bin \ $1/bl301_zero.bin \ $1/bl30_new.bin bl30 run_host_command_logged python3 $1/acs_tool.py $1/bl2.bin $1/bl2_acs.bin $1/acs.bin 0 run_host_command_logged $1/blx_fix.sh $1/bl2_acs.bin \ $1/zero_tmp \ $1/bl2_zero.bin \ $1/bl21.bin \ $1/bl21_zero.bin \ $1/bl2_new.bin bl2 run_host_command_logged $1/aml_encrypt_gxl --bl3enc --input $1/bl30_new.bin run_host_command_logged $1/aml_encrypt_gxl --bl3enc --input $1/bl31.img run_host_command_logged $1/aml_encrypt_gxl --bl3enc --input bl33.bin run_host_command_logged $1/aml_encrypt_gxl --bl2sig --input $1/bl2_new.bin \ --output bl2.n.bin.sig run_host_command_logged $1/aml_encrypt_gxl --bootmk --output u-boot.bin \ --bl2 bl2.n.bin.sig \ --bl30 $1/bl30_new.bin.enc \ --bl31 $1/bl31.img.enc \ --bl33 bl33.bin.enc } write_uboot_platform() { dd if=$1/u-boot.bin of=$2 bs=1 count=442 conv=fsync 2>&1 dd if=$1/u-boot.bin of=$2 bs=512 skip=1 seek=1 conv=fsync 2>&1 } family_tweaks_bsp() { mkdir -p $destination/etc/udev/rules.d mkdir -p $destination/usr/local/bin mkdir -p "$destination"/etc/X11/xorg.conf.d case "${BOARD}" in "odroidc2" | "nanopik2-s905" | "lepotato" | "lafrite" | "khadas-vim1" | "khadas-vim2" | "aml-s9xx-box") cat <<- EOF > "$destination"/etc/X11/xorg.conf.d/02-driver.conf Section "OutputClass" Identifier "Amlogic" MatchDriver "meson" Driver "modesetting" Option "PrimaryGPU" "true" EndSection Section "Screen" Identifier "Default Screen" Device "Meson" Monitor "foo" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1920x1080" "1440x900" "1280x720" "1280x1024" "1280x960" "1024x768" "800x600" "640x480" "720x400" EndSubSection EndSection EOF ;; "odroidn2" | "odroidc4" | "khadas-vim2" | "odroidhc4" | "khadas-vim3" | "khadas-vim3l" | "radxa-zero" | "radxa-zero2" | "bananapi-m2s") cat <<- EOF > "$destination"/etc/X11/xorg.conf Section "Device" Identifier "DRM Graphics Acclerated" ## Use modesetting and glamor Driver "modesetting" Option "AccelMethod" "glamor" ### "glamor" to enable 3D acceleration, "none" to disable. Option "DRI" "2" Option "Dri2Vsync" "true" Option "TripleBuffer" "True" ## End glamor configuration EndSection Section "Screen" Identifier "Default Screen" SubSection "Display" Depth 24 EndSubSection EndSection EOF ;; esac }