From eec6dfb28d575966802866b116050335d1b803fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= Date: Mon, 18 Nov 2024 19:01:25 +0100 Subject: [PATCH] Add Hailo-8 firmware for Raspberry Pi AI Kit/HAT on RPi 5 (#3680) Add Hailo-8 firmware binary for Rasperry Pi AI accelerators. The version needs to be determined from the Git history of the kernel sources, as the driver source code is included in the RPi downstream kernel and the version string can't be found in the code directly. Fixes #3663 --- buildroot-external/Config.in | 1 + buildroot-external/configs/rpi5_64_defconfig | 1 + .../package/hailo8-firmware/Config.in | 6 +++++ .../hailo8-firmware/hailo8-firmware.hash | 1 + .../hailo8-firmware/hailo8-firmware.mk | 25 +++++++++++++++++++ 5 files changed, 34 insertions(+) create mode 100644 buildroot-external/package/hailo8-firmware/Config.in create mode 100644 buildroot-external/package/hailo8-firmware/hailo8-firmware.hash create mode 100644 buildroot-external/package/hailo8-firmware/hailo8-firmware.mk diff --git a/buildroot-external/Config.in b/buildroot-external/Config.in index 16cc12b66..1227e1c65 100644 --- a/buildroot-external/Config.in +++ b/buildroot-external/Config.in @@ -2,6 +2,7 @@ source "$BR2_EXTERNAL_HASSOS_PATH/package/bluetooth-rtl8723/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/eq3_char_loop/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/gasket/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/generic_raw_uart/Config.in" +source "$BR2_EXTERNAL_HASSOS_PATH/package/hailo8-firmware/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/hardkernel-boot/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/hassio/Config.in" source "$BR2_EXTERNAL_HASSOS_PATH/package/khadas-boot/Config.in" diff --git a/buildroot-external/configs/rpi5_64_defconfig b/buildroot-external/configs/rpi5_64_defconfig index eb78ecbb3..5f0e6197a 100644 --- a/buildroot-external/configs/rpi5_64_defconfig +++ b/buildroot-external/configs/rpi5_64_defconfig @@ -143,6 +143,7 @@ BR2_PACKAGE_HOST_GPTFDISK=y BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y BR2_PACKAGE_GASKET=y +BR2_PACKAGE_HAILO8_FIRMWARE=y BR2_PACKAGE_HASSIO=y BR2_PACKAGE_HASSIO_ARCH="aarch64" BR2_PACKAGE_HASSIO_MACHINE="raspberrypi5-64" diff --git a/buildroot-external/package/hailo8-firmware/Config.in b/buildroot-external/package/hailo8-firmware/Config.in new file mode 100644 index 000000000..841f660f6 --- /dev/null +++ b/buildroot-external/package/hailo8-firmware/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HAILO8_FIRMWARE + bool "Hailo-8 Firmware" + help + Firmware for Hailo-8 PCIe device found e.g. on Raspberry Pi AI + Kit and Raspberry Pi AI HAT+. Requires the hailo kernel driver + (included in Raspberry Pi's downstream kernel). diff --git a/buildroot-external/package/hailo8-firmware/hailo8-firmware.hash b/buildroot-external/package/hailo8-firmware/hailo8-firmware.hash new file mode 100644 index 000000000..4e5aa2041 --- /dev/null +++ b/buildroot-external/package/hailo8-firmware/hailo8-firmware.hash @@ -0,0 +1 @@ +sha256 bfa576dd782359d74cabcb19e87c3a934dce03dea0785e41f86fecc9a687a92b hailo8_fw.4.18.0.bin diff --git a/buildroot-external/package/hailo8-firmware/hailo8-firmware.mk b/buildroot-external/package/hailo8-firmware/hailo8-firmware.mk new file mode 100644 index 000000000..2b8688d85 --- /dev/null +++ b/buildroot-external/package/hailo8-firmware/hailo8-firmware.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# Hailo-8 Firmware +# +################################################################################ + +HAILO8_FIRMWARE_VERSION = 4.18.0 +HAILO8_FIRMWARE_LICENSE = PROPRIETARY +HAILO8_FIRMWARE_SOURCE= hailo8_fw.$(HAILO8_FIRMWARE_VERSION).bin +HAILO8_FIRMWARE_SITE="https://hailo-hailort.s3.eu-west-2.amazonaws.com/Hailo8/$(HAILO8_FIRMWARE_VERSION)/FW" + +define HAILO8_FIRMWARE_EXTRACT_CMDS + cp $(HAILO8_FIRMWARE_DL_DIR)/$(HAILO8_FIRMWARE_SOURCE) $(@D) +endef + +define HAILO8_FIRMWARE_BUILD_CMDS + cp $(@D)/$(HAILO8_FIRMWARE_SOURCE) $(@D)/hailo8_fw.bin +endef + +define HAILO8_FIRMWARE_INSTALL_TARGET_CMDS + $(INSTALL) -d $(TARGET_DIR)/lib/firmware/hailo + $(INSTALL) -m 0644 $(@D)/hailo8_fw.bin $(TARGET_DIR)/lib/firmware/hailo/ +endef + +$(eval $(generic-package))