aboutsummaryrefslogtreecommitdiff
path: root/board/post-image.sh
diff options
context:
space:
mode:
authorSébastien Dailly <sebastien@chimrod.com>2021-11-14 20:42:34 +0100
committerSébastien Dailly <sebastien@chimrod.com>2021-11-15 08:29:49 +0100
commit8f86f098b6ea868f8d98b4d26df8382dc4047c81 (patch)
tree1ef66b6243eb504b23d3739a47b923cc7d90f5c7 /board/post-image.sh
Inital commit
Diffstat (limited to 'board/post-image.sh')
-rwxr-xr-xboard/post-image.sh106
1 files changed, 106 insertions, 0 deletions
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 $?