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>
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))