Hi Liam,
today, I tried getting SOF to run on my Edison. Here's what I did:
- compiled the topic/sof-v4.13 branch - disabled everything SST related in the config - enabled the following: CONFIG_SND_SOC_SOF_PCI=m CONFIG_SND_SOC_SOF_ACPI=m CONFIG_SND_SOC_SOF_NOCODEC=y CONFIG_SND_SOC_SOF=y CONFIG_SND_SOC_SOF_INTEL=y CONFIG_SND_SOC_SOF_BAYTRAIL=m CONFIG_SND_SOC_SOF_APOLLOLAKE=m CONFIG_SND_SOC_SOF_CANNONLAKE=m - compiled the SOF from the 1.0-dev branch, following the instructions in the wiki
Upon bootup I made sure, that the fw is located at /lib/firmware/intel/reef-byt.ri. Then I did the following:
# insmod /mnt/snd-sof-intel-byt.ko # insmod /mnt/sof-pci-dev.ko sof_pci_dev: Unknown symbol snd_sof_cnl_ops (err 0) sof_pci_dev: Unknown symbol snd_sof_bxt_ops (err 0) sof_pci_dev: Unknown symbol snd_sof_cnl_ops (err 0) sof_pci_dev: Unknown symbol snd_sof_bxt_ops (err 0) insmod: can't insert '/mnt/sof-pci-dev.ko': unknown symbol in module, or unknown parameter # insmod /mnt/snd-sof-intel-apl.ko # insmod /mnt/sof-pci-dev.ko sof-audio-pci 0000:00:0d.0: No matching ASoC machine driver found - using nocodec sof-nocodec sof-nocodec: ASoC: CPU DAI sof-audio not registered resource sanity check: requesting [mem 0xff200000-0xff3fffff], which spans more than 0000:00:0e.0 [mem 0xff298000-0xff29bfff] caller byt_probe+0xfb/0x1730 [snd_sof_intel_byt] mapping multiple BARs pmd_set_huge: Cannot satisfy [mem 0x05e00000-0x06000000] with a huge-page mapping due to MTRR override. sof-audio sof-audio: error: invalid firmware signature sof-audio sof-audio: error: invalid FW header sof-audio sof-audio: error: failed to load DSP firmware -22 sof-nocodec sof-nocodec: ASoC: CPU DAI sof-audio not registered
There seem to be at least two issues here: 1. There is a memory mapping that can not be completed. 2. The firmware seems to have an invalid format. 3. The sof-pci-dev module seems to require either the apollo or coffee lake modules. Is that intentional or a bug?
Does anyone know what could be wrong here?
Sven
On 10/18/2017 01:11 PM, Liam Girdwood wrote:
Hi Sven,
Btw, best to subscribe as non member posts are blocked and delayed.
On Tue, 2017-10-17 at 20:49 +0200, Sven Schwermer wrote:
Hi guys,
Thanks for your replies. I had tried a running a vanilla kernel on the Edison. There, the sst_pci driver is probed, but the platform data is not set and that’s basically where I got stuck because I couldn’t figure out where that’s supposed to be set. Is that usually ACPI’s job?
I dont think ACPI is used by the ADSP on Edison, I think it's purely a PCI device. Vanilla kernel wont work either atm, you will need my topic/sof-v4.13 branch from here :-
git://git.kernel.org/pub/scm/linux/kernel/git/lrg/asoc.git
Note that this branch only works on the SOF 1.0-dev branches (that are not stable) and not the stable master branch.
The stable SOF master firmware branch has a different IPC ABI and only works with the topic/reef kernels (that unfortunately dont support PCI mode on Edison) :(
What exactly should happen once the mrfld_sst SFI IPC is enumerated? I am lacking the big picture and the order of events here. Is there an overview document somewhere available online?
There is also more than one driver upstream. The sst driver is for Intel's closed source FW. The open source FW uses different ABIs and APIs to the closed source version, currently you need to blacklist the old SST modules in order to load the SOF FW and driver (this is being fixed in upstream atm)
I guess, the nocodec mode would be fine as a start.
Yes.
Liam
Thanks, Sven
On 16 Oct 2017, at 17:59, Pierre-Louis Bossart pierre-louis.bossart@linux.intel.com wrote:
On 10/16/17 10:19 AM, Liam Girdwood wrote:
On Sun, 2017-10-15 at 19:51 +0200, Sven Schwermer wrote:
Hi.
I was wondering if the Tangier SoC (Merrifield platform) is or will be supported by SOF? I have the Intel Edison compute module in mind.
Yes, it _should_ work on Merrifield, but I don't have Edison HW so some things on the driver side might need some work. The 1.0-dev branch and sof-v4.13 kernel will probably be better for Edison than the stable 0.95 branch atm (mainly due to driver updates), but 1.0-dev is still has a few issues prior to doing an rc1 tag.
The main difference with Baytrail is pci/acpi enumeration, and sfi/acpi for the firmware. I've been wanting to enable Tangier for some time but could never figure out how to add a reference to an audio codec, so it'd likely work in 'nocodec' mode, with just the I2S signals on the connector.