on a imx6ul based custom board, i moved from a 4.9.x_1.0.0 kernel to a 4.14.113+imx-1.0.0.
As it is done in 4.9., from the included ./firmware/Makefile, i managed to have sdma-imx6q.bin to be built-in also for the 4.14.
Btw, at kernel boot, i get
imx-sdma 20ec000.sdma: external firmware not found, using ROM firmware
I am 100% sure SDMA fw binary is built in, just checked the zImage binary. The question is, why the fw, even if built-in in the same way, is loaded in kernel 4.9 and not in 4.14 ?
You can add a binary blob (firmware) by specifying the path in menuconfig, here the diff:
I cloned git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git to /git/linux-firmware.
BTW: I use now kernel v4.19
the image files of SDMA (e.g. sdma-imx6q.bin) available in the directory firmware/imx/sdma for 4.1 and 4.9 kernels. For 4.14 kernel, the sdma firmware is provided with the firmware-imx package and not in the kernel source tree.
for example, "
bitbake core-image-full-cmdline" build the rootfs may not include the firmware-imx. So, you can add
CORE_IMAGE_EXTRA_INSTALL += " firmware-imx-sdma" in local.conf.
i solved mi issue. Mainly, on 4.9 there was a different Makefile for the firmware folder, that was creating the sdma-imx6q.bin and build it in. I replicated same makefile part in 4.14, all is working fine now.
bsp imx 4.9 was including a folder "firmarwe".
firmware/Makefile is where sdma-imx6q.bin get built in.
Mainly the makefile checks if SDMA driver is selected, then it builds into kernel the sdma-imx6q.bin.
You can verify if it's built in just by a hex editor in the kernel binary, you will find an ASCII SDMA mark signature before the firmware.