On Mon, 10 Dec 2018 16:00:10 +0100, Liam Girdwood wrote:
On Mon, 2018-12-10 at 07:48 -0600, Pierre-Louis Bossart wrote:
I am having this problem where SOF is compiled as built in the kernel and the firmware binary is on the rootfs.
When request_firmware is called in sof_probe the rootfs is not yet mounted so the call to request_firmware fails.
Just curious, how do you provide the firmware binary?
it's a known issue that we haven't fixed since we use modules both for development and production. Other drivers have the same problem IIRC.
You could try adding the image to initramfs, but as Pierre says this is a general problem with loading FW on Linux, not just related to audio.
Right, it's a PITA for drivers.
The driver can use request_firmware() for simplicity, but it's a synchronous API, hence the firmware has to be present statically in the kernel image if the driver is built-in. OTOH, request_firmware_nowait() would work asynchronously and you can delay the load for another rootfs mount, but it's often difficult to design / code correctly.
Takashi