build/config/sources/families/include/meson64_common.inc

306 lines
9.1 KiB
PHP

#
# 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
}