imx6 , linux : imx-sdma firmware load failed error

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

imx6 , linux : imx-sdma firmware load failed error

Jump to solution
15,796 Views
dry
Senior Contributor I

Yocto build fsl layer,  with no kernel/linux custom modification.

Linux cubox-i 5.4.78+gc50d1fa1c355 #1

On boot, I get these traces:

 

[    1.094109] imx-sdma 20ec000.sdma: Direct firmware load for imx/sdma/sdma-imx6q.bin failed with error -2
[    1.094213] imx-sdma 20ec000.sdma: Falling back to sysfs fallback for: imx/sdma/sdma-imx6q.bin

 

 

The firmware file is definitely there

 

ls /lib/firmware/imx/sdma/ -ls
total 8
4 -rw-r--r-- 1 root root 2746 Mar  9 12:34 sdma-imx6q.bin
4 -rw-r--r-- 1 root root 2862 Mar  9 12:34 sdma-imx7d.bin

 

why would this be failing?

Does this mean SDMA then is not working after linux boots?

0 Kudos
Reply
1 Solution
15,779 Views
ceggers
Contributor V

Hi dry,

this problem usually happens when the imx-sdma driver is linked into the kernel. At the time when the SDMA hardware is probed, the rootfs (with the SDMA firmware file) is not available yet.

Solution 1: Link also the SDMA firmware file into the kernel. This is problematic, as the SDMA firmware file has a proprietary license.

Solution 2: Build the imx-sdma driver as a kernel module. At the time when the module is loaded, also the SDMA firmware file will be available.

regards
Christian

View solution in original post

5 Replies
15,780 Views
ceggers
Contributor V

Hi dry,

this problem usually happens when the imx-sdma driver is linked into the kernel. At the time when the SDMA hardware is probed, the rootfs (with the SDMA firmware file) is not available yet.

Solution 1: Link also the SDMA firmware file into the kernel. This is problematic, as the SDMA firmware file has a proprietary license.

Solution 2: Build the imx-sdma driver as a kernel module. At the time when the module is loaded, also the SDMA firmware file will be available.

regards
Christian

15,775 Views
dry
Senior Contributor I

Hi @ceggers 

> .. Solution 2: Build the imx-sdma driver as a kernel module. At the time when the
> module is loaded, also the SDMA firmware file will be available.

Makes perfect sense !   I had this morning same issue with a Bluetooth hci firmware loader, and, after I have changed hci from built-in to a module, the load error/warning went away.

I shall try see now if I can remove SDMA as built-in and change it to module - provided, that is actually supported by imx kernel.   (Hopefully nothing wants it as early as possible)

0 Kudos
Reply
15,765 Views
ceggers
Contributor V

Hi dry,

> I shall try see now if I can remove SDMA as built-in and change it to module - provided, that is actually
> supported by imx kernel. (Hopefully nothing wants it as early as possible)

Usually this is less a problem than one would expect. Most drivers (e.g. UART) request SDMA channels on device open, not on probe. So there is no need to build the UART driver also as a module. But maybe you will need to build other drivers as a module in this case.

0 Kudos
Reply
15,788 Views
joanxie
NXP TechSupport
NXP TechSupport

I don't think this is an error message, Kernel boot to load firmware directly failed, so print out error log , then fall back to user helper to load firmware. you don't need to worry about this

 

0 Kudos
Reply
15,782 Views
dry
Senior Contributor I

@joanxie ,

What is this 'user helper' ? Where is it usually located, and how can I check it is / was invoked?

0 Kudos
Reply