From 8f86f098b6ea868f8d98b4d26df8382dc4047c81 Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Sun, 14 Nov 2021 20:42:34 +0100 Subject: Inital commit --- board/post-image.sh | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100755 board/post-image.sh (limited to 'board/post-image.sh') diff --git a/board/post-image.sh b/board/post-image.sh new file mode 100755 index 0000000..c7cc700 --- /dev/null +++ b/board/post-image.sh @@ -0,0 +1,106 @@ +#!/bin/bash + +set -e + +. "${BR2_EXTERNAL_PIAUDIO_PATH}/board/common.sh" + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARDNAME}.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +for arg in "$@" +do + case "${arg}" in + --add-miniuart-bt-overlay) + if ! grep -qE '^dtoverlay=' "${BINARIES_DIR}/rpi-firmware/config.txt"; then + echo "Adding 'dtoverlay=miniuart-bt' to config.txt (fixes ttyAMA0 serial console)." + cat << __EOF__ >> "${BINARIES_DIR}/rpi-firmware/config.txt" + +# fixes rpi (3B, 3B+, 3A+, 4B and Zero W) ttyAMA0 serial console +dtoverlay=miniuart-bt +__EOF__ + fi + ;; + --aarch64) + # Run a 64bits kernel (armv8) + sed -e '/^kernel=/s,=.*,=Image,' -i "${BINARIES_DIR}/rpi-firmware/config.txt" + if ! grep -qE '^arm_64bit=1' "${BINARIES_DIR}/rpi-firmware/config.txt"; then + cat << __EOF__ >> "${BINARIES_DIR}/rpi-firmware/config.txt" + +# enable 64bits support +arm_64bit=1 +__EOF__ + fi + ;; + --gpu_mem_256=*|--gpu_mem_512=*|--gpu_mem_1024=*) + # Set GPU memory + gpu_mem="${arg:2}" + sed -e "/^${gpu_mem%=*}=/s,=.*,=${gpu_mem##*=}," -i "${BINARIES_DIR}/rpi-firmware/config.txt" + ;; + + --configure-piaudio) + # Configure piaudio + + # Set the bootloader delay to 0 seconds + if ! grep -qE '^boot_delay=0' "${BINARIES_DIR}/rpi-firmware/config.txt"; then + cat << __EOF__ >> "${BINARIES_DIR}/rpi-firmware/config.txt" +boot_delay=0 +__EOF__ + fi + + # Set turbo mode for boot + if ! grep -qE '^initial_turbo' "${BINARIES_DIR}/rpi-firmware/config.txt"; then + cat << __EOF__ >> "${BINARIES_DIR}/rpi-firmware/config.txt" +initial_turbo=10 +__EOF__ + fi + + # Inform the kernel about the filesystem and ro state + if ! grep -qE 'fastboot noswap ro' "${BINARIES_DIR}/rpi-firmware/cmdline.txt"; then + sed '/^root=/ s/$/ fastboot noswap ro/' -i "${BINARIES_DIR}/rpi-firmware/cmdline.txt" + fi + + # Remove the serial console over the UART port and let it available for + # bluetooth + remove_text "${BINARIES_DIR}/rpi-firmware/cmdline.txt" "console=ttyAMA0,115200 " + + if ! grep -qE '^dtoverlay=dwc2' "${BINARIES_DIR}/rpi-firmware/config.txt"; then + + + cat << __EOF__ >> "${BINARIES_DIR}/rpi-firmware/config.txt" +dtoverlay=dwc2 + +# https://github.com/raspberrypi/firmware/tree/master/boot/overlays +dtparam=krnbt=on +dtparam=i2c=on +dtparam=audio=on +dtoverlay=allo-boss-dac-pcm512x-audio +__EOF__ + fi + + if ! grep -qE 'modules-load=dwc2,g_serial' "${BINARIES_DIR}/rpi-firmware/cmdline.txt"; then + sed '/^root=/ s/$/ modules-load=dwc2,g_serial/' -i "${BINARIES_DIR}/rpi-firmware/cmdline.txt" + fi + ;; + esac + +done + +# Pass an empty rootpath. genimage makes a full copy of the given rootpath to +# ${GENIMAGE_TMP}/root so passing TARGET_DIR would be a waste of time and disk +# space. We don't rely on genimage to build the rootfs image, just to insert a +# pre-built one in the disk image. + +trap 'rm -rf "${ROOTPATH_TMP}"' EXIT +ROOTPATH_TMP="$(mktemp -d)" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${ROOTPATH_TMP}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? -- cgit v1.2.3