The mainline kernel searches the coda VPU firmware inside the following
locations [1]:
/lib/firmware/
/lib/firmware/vpu/
Currently Buildroot installs the coda firmware into /lib/firmware/imx/vpu,
which is not a valid location.
Fix it by installing the coda firmwares into /lib/firmware/vpu/ which
is a valid path for both mainline and NXP vendor kernels. Also create a
symlink to /lib/firmware/ so that mainline kernels do not need to wait
more than 60 seconds to search again inside /lib/firmware/vpu/.
[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=
8af7779f3cbc1f6720d15f00abc797493710d1ab
Reported-by: Romain Naour <romain.naour@gmail.com>
Suggested-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Fabio Estevam <festevam@gmail.com>
Acked-by: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
FIRMWARE_IMX_VPU_FW_NAME = $(call qstrip,$(BR2_PACKAGE_FIRMWARE_IMX_VPU_FW_NAME))
ifneq ($(FIRMWARE_IMX_VPU_FW_NAME),)
define FIRMWARE_IMX_INSTALL_TARGET_VPU_FW
- mkdir -p $(TARGET_DIR)/lib/firmware/imx/vpu
- cp $(@D)/firmware/vpu/vpu_fw_$(FIRMWARE_IMX_VPU_FW_NAME)*.bin \
- $(TARGET_DIR)/lib/firmware/imx/vpu/
+ mkdir -p $(TARGET_DIR)/lib/firmware/vpu
+ for i in $$(find $(@D)/firmware/vpu/vpu_fw_$(FIRMWARE_IMX_VPU_FW_NAME)*.bin); do \
+ cp $$i $(TARGET_DIR)/lib/firmware/vpu/ ; \
+ ln -sf vpu/$$(basename $$i) $(TARGET_DIR)/lib/firmware/$$(basename $$i) ; \
+ done
endef
endif