]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
firmware: add package for Intel VPU/NPU firmware
authorJoe Zheng <joe.zheng@intel.com>
Sat, 8 Feb 2025 01:18:03 +0000 (01:18 +0000)
committerRobert Marko <robimarko@gmail.com>
Thu, 15 May 2025 08:09:40 +0000 (10:09 +0200)
Intel NPU device is an AI inference accelerator integrated with Intel
client CPUs, starting from Intel Core Ultra generation of CPUs
(formerly known as Meteor Lake). It enables energy-efficient execution
of artificial neural network tasks.

The full device name is Neural Processing Unit, but the Linux kernel
driver uses the older name - Versatile Processing Unit (VPU).

This package is for NPU/VPU firmware.

Details in https://github.com/intel/linux-npu-driver

Intel VPU firmware is now part of linux-firmware.

The current FW file names in linux-firmware do not match intel vpu
driver, create links to fix it

details in
https://github.com/torvalds/linux/blob/master/drivers/accel/ivpu/ivpu_fw.c

Signed-off-by: Joe Zheng <joe.zheng@intel.com>
Link: https://github.com/openwrt/openwrt/pull/17904
Signed-off-by: Robert Marko <robimarko@gmail.com>
package/firmware/linux-firmware/intel.mk

index 32e167014954606b14e0c47f3b48d1b1d72200f7..1ec894e97ec7de861ce64e1b59fbe188ab8e703d 100644 (file)
@@ -279,3 +279,15 @@ define Package/i915-firmware-gsc/install
        done
 endef
 $(eval $(call BuildPackage,i915-firmware-gsc))
+
+Package/ivpu-firmware = $(call Package/firmware-default,Intel VPU firmware,,LICENSE.intel_vpu)
+define Package/ivpu-firmware/install
+       $(INSTALL_DIR) $(1)/lib/firmware/intel/vpu
+       $(INSTALL_DATA) $(PKG_BUILD_DIR)/intel/vpu/*.bin $(1)/lib/firmware/intel/vpu
+       for t in `cd $(1)/lib/firmware/intel/vpu && ls vpu_*.bin | cut -d. -f1 | cut -d_ -f2 | sort | uniq`; do \
+         source=`cd $(1)/lib/firmware && ls intel/vpu/vpu_$$$${t}_v*.bin | sort | tail -n1`;                   \
+         target=$(1)/lib/firmware/vpu_$$$${t}.bin;                                                             \
+         if [ -n "$$$$source" ]; then ln -sf $$$$source $$$$target; fi                                         \
+       done
+endef
+$(eval $(call BuildPackage,ivpu-firmware))