From 1fa53bc3dc397f52dbf791f4293bd3cbfc41b527 Mon Sep 17 00:00:00 2001 From: Aman Gupta Karmani Date: Wed, 25 Nov 2020 15:33:48 -0800 Subject: [PATCH] Add rpi-eeprom firmware (#939) * Add 2020-10-28 beta EEPROM This improves boot from USB and speeds up boot times. also includes sd card v1 boot reliability. see https://github.com/raspberrypi/rpi-eeprom/pull/246 Also add HDMI_DELAY=0 so HDMI display is always visible for easier debugging. --- buildroot-external/Config.in | 1 + .../board/raspberrypi/hassos-hook.sh | 2 ++ buildroot-external/configs/rpi4_64_defconfig | 1 + buildroot-external/configs/rpi4_defconfig | 1 + .../package/rpi-eeprom/Config.in | 6 +++++ .../package/rpi-eeprom/rpi-eeprom.mk | 26 +++++++++++++++++++ 6 files changed, 37 insertions(+) create mode 100644 buildroot-external/package/rpi-eeprom/Config.in create mode 100644 buildroot-external/package/rpi-eeprom/rpi-eeprom.mk diff --git a/buildroot-external/Config.in b/buildroot-external/Config.in index 60fbd3a6d..2ffef747f 100644 --- a/buildroot-external/Config.in +++ b/buildroot-external/Config.in @@ -4,3 +4,4 @@ source "$BR2_EXTERNAL_HASSOS_PATH/package/bluetooth-rtl8723/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/hardkernel-boot/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/qemu-guest-agent/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/intel-e1000e/Config.in" +source "$BR2_EXTERNAL_HASSOS_PATH/package/rpi-eeprom/Config.in" diff --git a/buildroot-external/board/raspberrypi/hassos-hook.sh b/buildroot-external/board/raspberrypi/hassos-hook.sh index 94c906093..df5976e9b 100755 --- a/buildroot-external/board/raspberrypi/hassos-hook.sh +++ b/buildroot-external/board/raspberrypi/hassos-hook.sh @@ -15,6 +15,8 @@ function hassos_pre_image() { if [[ "${BOARD_ID}" =~ "rpi4" ]]; then cp "${BINARIES_DIR}/rpi-firmware/fixup.dat" "${BOOT_DATA}/fixup4.dat" cp "${BINARIES_DIR}/rpi-firmware/start.elf" "${BOOT_DATA}/start4.elf" + cp "${BINARIES_DIR}/rpi-eeprom/pieeprom.sig" "${BOOT_DATA}/pieeprom.sig" + cp "${BINARIES_DIR}/rpi-eeprom/pieeprom.upd" "${BOOT_DATA}/pieeprom.upd" else cp -t "${BOOT_DATA}" \ "${BINARIES_DIR}/rpi-firmware/fixup.dat" \ diff --git a/buildroot-external/configs/rpi4_64_defconfig b/buildroot-external/configs/rpi4_64_defconfig index 50307eac7..68ca4dac0 100644 --- a/buildroot-external/configs/rpi4_64_defconfig +++ b/buildroot-external/configs/rpi4_64_defconfig @@ -42,6 +42,7 @@ BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_RPI_FIRMWARE=y BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y BR2_PACKAGE_RPI_WIFI_FIRMWARE=y +BR2_PACKAGE_RPI_EEPROM=y BR2_PACKAGE_CRDA=y BR2_PACKAGE_GPTFDISK=y BR2_PACKAGE_GPTFDISK_SGDISK=y diff --git a/buildroot-external/configs/rpi4_defconfig b/buildroot-external/configs/rpi4_defconfig index 3e00b1613..17e6a784e 100644 --- a/buildroot-external/configs/rpi4_defconfig +++ b/buildroot-external/configs/rpi4_defconfig @@ -42,6 +42,7 @@ BR2_PACKAGE_SQUASHFS=y BR2_PACKAGE_RPI_FIRMWARE=y BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y BR2_PACKAGE_RPI_WIFI_FIRMWARE=y +BR2_PACKAGE_RPI_EEPROM=y BR2_PACKAGE_CRDA=y BR2_PACKAGE_GPTFDISK=y BR2_PACKAGE_GPTFDISK_SGDISK=y diff --git a/buildroot-external/package/rpi-eeprom/Config.in b/buildroot-external/package/rpi-eeprom/Config.in new file mode 100644 index 000000000..08f6987df --- /dev/null +++ b/buildroot-external/package/rpi-eeprom/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_RPI_EEPROM + bool "rpi-eeprom" + help + EEPROM bootloader firmware for Raspberry Pi 4 + + https://github.com/raspberrypi/rpi-eeprom diff --git a/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk b/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk new file mode 100644 index 000000000..ad248e95e --- /dev/null +++ b/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk @@ -0,0 +1,26 @@ +############################################################# +# +# rpi-eeprom +# +############################################################# +RPI_EEPROM_VERSION = 16bb29427f96dc8276a7102c0526154a1084bffd +RPI_EEPROM_SITE = $(call github,raspberrypi,rpi-eeprom,$(RPI_EEPROM_VERSION)) +RPI_EEPROM_LICENSE = BSD-3-Clause +RPI_EEPROM_LICENSE_FILES = LICENSE +RPI_EEPROM_INSTALL_IMAGES = YES +RPI_EEPROM_FIRMWARE_PATH = firmware/beta/pieeprom-2020-10-28.bin + +define RPI_EEPROM_BUILD_CMDS + $(@D)/rpi-eeprom-config $(@D)/$(RPI_EEPROM_FIRMWARE_PATH) --out $(@D)/default.conf + (cat $(@D)/default.conf | grep -v ^$$; echo HDMI_DELAY=0) > $(@D)/boot.conf + $(@D)/rpi-eeprom-config $(@D)/$(RPI_EEPROM_FIRMWARE_PATH) --config $(@D)/boot.conf --out $(@D)/pieeprom.upd + sha256sum $(@D)/pieeprom.upd | awk '{ print $$1 }' > $(@D)/pieeprom.sig + echo "ts: $$(date -u +%s)" >> $(@D)/pieeprom.sig +endef + +define RPI_EEPROM_INSTALL_IMAGES_CMDS + $(INSTALL) -D -m 0644 $(@D)/pieeprom.sig $(BINARIES_DIR)/rpi-eeprom/pieeprom.sig + $(INSTALL) -D -m 0644 $(@D)/pieeprom.upd $(BINARIES_DIR)/rpi-eeprom/pieeprom.upd +endef + +$(eval $(generic-package))