#!/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 $?