Overview of Intel hardware platforms — SOF Project 2.9.0 documentation (2024)

ACPI platforms (introduced before and up to 2015)

On Bay Trail, Cherry Trail, Braswell, and Broadwell devices (also referred toas legacy devices), the DSP enumeration is handled by the ACPIsubsystem.

1. Local audio accessories (mics, speakers, headset)

On Bay Trail, Cherry Trail, Braswell, and Broadwell, the BIOS can eitherenable or disable the DSP:

  • Enable the DSP. In this case, a DSP driver is required. This mode isselected on platforms where the audio interface for 3rd-party codecs is based on the I2C/I2S/TDM interfaces.

  • Disable the DSP. In this case, an HDaudio controller is exposed and thesnd-intel-hda driver will take care of all audio usages. SOF cannot be used in this case.

2. HDMI/DP interfaces

On Broadwell, HDMI/DP is handled by an HDaudio controller.

On Bay Trail/Cherry Trail and Braswell, the BIOS can enable two modes:

  • HDAudio-based solution (similar to Broadwell).

  • LPE HDMI Audio. This mode is used by the majority of tablets and low-costdevices. It provides functionality similar to HDaudio, but with a different interface. This mode is enabled in Linux via the CONFIG_HDMI_LPE_AUDIO option.

The DSP cannot control any of these interfaces because SOF does not supportHDMI/DP on those devices.

On all of these legacy platforms, HDMI support is exposed in Linux as aseparate card.

PCI devices (introduced after 2016)

In newer devices, the same HDAudio controller can handle both localaccessories and HDMI/DP interfaces. However, SOF is not alwayssupported on those platforms.

When the Intel DSP is not enabled in the BIOS (OEM choice), audiointerfaces are handled by the snd-hda-intel driver. The platform onlyexposes PCM devices and no audio processing capabilities.

When OEM platforms integrate digital microphones attached directlyto the Intel chipset (aka DMIC), or they use I2C/I2S or SoundWireinterfaces, the DSP must be enabled by the BIOS. There is, however, onemore option. On Skylake and Kaby Lake platforms, the Intel DSP is handled bythe snd-soc-skl module which relies on closed-source firmware.

SOF is available on Intel PCI devices starting with Gemini Lake, andhas since been the only solution provided by Intel for the followingplatforms: Comet Lake, Ice Lake, and Tiger Lake.

Since multiple drivers can register for the same PCI ID, it was (untilrecently) common for users and distributions to use the wrongdriver, which could only be resolved by changing the Linux .config fileor deselecting drivers in the /etc/modprobe.d configuration files.

The snd-intel-dspcfg module introduced in early 2020 exposes an APIused by all drivers, and the user can now override default choices bysetting the dsp_driver parameter. For example, setting

options snd-intel-dspcfg dsp_driver=1

will allow for the HDaudio legacy driver to be used. This will typicallywork for speakers and headphones/headsets, but will not allow DMICcapture.

Conversely, when a platform does not require a DSP-based platform, butthe DSP is still enabled by the OEM, the user or integration canforce the SOF Linux driver to be used.

options snd-intel-dspcfg dsp_driver=3

User space and filesystem requirements

Selecting the SOF driver is not enough. Audio is properly configured only ifthe following elements are present on the file system.

1. Firmware binary

The firmware file, /lib/firmware/intel/sof/sof-tgl.ri (examplelocation for Intel Tiger Lake), contains all DSP code and tables. OnPCI devices, the firmware can only be signed by an Intel productionkey which prevents community users from installing their own firmware.Notable exceptions include Google Chromebooks and Up2/Up-Extremeboards, where the community key is used.

The Intel ME (Management Engine) is responsible for authentication ofthe firmware, whether it is signed by an Intel production key (consumerproducts), a community key (open development systems and Chromebookssince Gemini Lake) or an OEM key. If the Intel ME is disabled by anOEM, or disabled by user-accessible BIOS options, the firmwareauthentication will fail and the firmware boot will not complete. Ifthe ME is disabled by the OEM, the only solution is to fall-backto the legacy HDAudio driver. If the ME is disabled by the user, the usermust re-enable it. Unfortunately, no documented mechanism exists for theLinux kernel to query whether or not the firmware authentication is enabled,which means dmesg logs cannot be provided to alert the user to an MEconfiguration issue.

Linux SOF will look up firmware files at the following paths:

Table 1 Firmware look-up paths per Intel platform

Platform

IPC type

Firmware load path

Notes

Raptor Lake and older

IPC3

/lib/firmware/intel/sof/sof-PLAT.ri

PLAT = glk, cml, …, rpl

Raptor Lake and older (community signed)

IPC3

/lib/firmware/intel/sof/community/sof-PLAT.ri

PLAT = glk, cml, …, rpl

Tiger Lake and newer

IPC4

/lib/firmware/intel/sof-ipc4/PLAT/sof-PLAT.ri

PLAT = tgl, adl, rpl, mtl, lnl, …

Tiger Lake and newer (community signed)

IPC4

/lib/firmware/intel/sof-ipc4/PLAT/community/sof-PLAT.ri

PLAT = tgl, adl, rpl, mtl, lnl, …

Tiger Lake and newer Loadable Module

IPC4

/lib/firmware/intel/sof-ipc4-lib/PLAT/UUID.bin

PLAT as above, UUID = UUID of the module

Tiger Lake and newer Loadable Module (community signed)

IPC4

/lib/firmware/intel/sof-ipc4-lib/PLAT/community/UUID.bin

PLAT as above, UUID = UUID of the module

Important notices:
  • The standard Linux firmware search path and order is followed. The above table covers the base “/lib/firmware” case. See https://docs.kernel.org/driver-api/firmware/fw_search_path.html for more information.

  • The firmware folder and filename can be overridden with “fw_path” and “fw_filename” SOF kernel parameters.

  • The loadable module library path can be overridden with “lib_path” SOF kernel parameter.

2. Topology file

The topology file, such as /lib/firmware/intel/sof-tplg/sof-hda-generic-2ch.tplg, describes the processing graph and controls tobe instantiated by the SOF driver. The topology can be regenerated andreconfigured with tools but requires expert knowledge of the ALSA/ASoC/topology frameworks.

Table 2 Firmware topology file look-up paths per Intel platform

Platform

IPC type

Topology load path

Notes

Raptor Lake and older

IPC3

/lib/firmware/intel/sof-tplg/sof-CONFIG.tplg

CONFIG = topology variant needed for detected hardware configuration

Tiger Lake and newer

IPC4

/lib/firmware/intel/sof-ipc4-tplg/sof-CONFIG.tplg

CONFIG = topology variant needed for detected hardware configuration

Important notices:
  • For compatibility reasons with respect to Meteor Lake /lib/firmware/intel/sof-ace-tplg must be symlinked to /lib/firmware/intel/sof-ipc4-tplg

  • The standard Linux firmware search path and order is followed. The above table covers the base “/lib/firmware” case. See https://docs.kernel.org/driver-api/firmware/fw_search_path.html for more information.

  • The topology folder and filename can be overridden with “tplg_path” and “tplg_filename” snd_sof_pci kernel parameters.

3. UCM file

The UCM file, such as /usr/share/alsa/ucm2/sof-hda-dsp/, configuresthe controls exposed by the topology file and the external audiochips. UCM can be used in a terminal via the alsaucm command butwill typically be used by audio servers such as PulseAudio orPipeWire. UCM files released by Intel are compatible with differentdrivers and should work when changing the dsp_driver parameter.

The selection of firmware, topology, and UCM files is based on platformcapabilities, codec names, and DMI options. While the SOF team and thecommunity try to cover all possible cases, errors will happen when thewrong file is selected at any of the three layers.

4. Chromebooks and SOF

As stated above, starting from 2019/2020, Intel Chromeboooks have beenconfigured with the community key. It means that Chromebooks can runaudio firmware signed by anyone. The entire filesystem is locked bydefault instead, but there are several options to disable security fordevelopment purposes. In all cases the first step is to switch theChromebook to (non-secure) Developer Mode.Developer Mode is the only required step if you onlywant to install and run your own SOF firmware and are not interested inchanging anything else in Chrome OS.

If you need the flexibility to make more changes, Chromebooks can runLinux in several non-mutually exclusive ways. All the options listedbelow let you run any SOF firmware. One of the biggestdifferences between them is how to install and run your own Linuxkernel.

  • Chrome OS has direct hardware access, but Chrome OS developmentcannot happen on Chrome OS itself. It requires a separate workstationsimilar to how most embedded development typically does. Forinformation about setting up the cros_sdk, see the Chromium OSDeveloper Guide.The cros_sdk is a complete environment that lets you modifyanything in Chrome OS and even build an entire system image. Thecros_sdk requires significant disk space and some learningeffort if you are not already familiar with Portage, a build systemin Gentoo, and especially with building the Linux kernel in Portage.

  • Crostiniis a secure Linux Virtual Machine that does not have direct accessto the hardware and cannot be used for SOF. It does not requireDeveloper Mode. Crostini is listed here for completeness. You mightuse Crostini as your pseudo-separate cros_sdk workstation, but adifferent, more powerful system that you never have to reboot is amuch better cros_sdk option.

  • Crouton is a non-secure chroot that does allow direct hardwareaccess and can be used for SOF. It lets you install a choice ofpopular Linux distributions, which you can use for development on the deviceitself. Make regular backups! The Zephyr project has very detailedspecific instructionson how to use Crouton for SOF. Most of these instructions are notZephyr-specific. With Crouton, you can configure and compile a Linuxkernel as usual. However, the kernel installation process is similarto the cros_sdk process with a couple of small twists.

  • Finally, it is possible to dual-boot or completely replaceChrome OS with a regular Linux distribution on some Chromebooks andforget it is a Chromebook entirely. However, this comes at a price: itis the least secure option and the more likely to make your devicepermanently unusable (“brick”). That level of risk is highly dependenton your particular Chromebook model. If that does not scare you, thenhttps://chrx.org/ is a good starting point. Pay special attention tothe note on security. This is the only option that lets you managekernel installations as a typical Linux distribution does.

Overview of Intel hardware platforms — SOF Project 2.9.0 documentation (2024)

References

Top Articles
Latest Posts
Article information

Author: Annamae Dooley

Last Updated:

Views: 6116

Rating: 4.4 / 5 (65 voted)

Reviews: 80% of readers found this page helpful

Author information

Name: Annamae Dooley

Birthday: 2001-07-26

Address: 9687 Tambra Meadow, Bradleyhaven, TN 53219

Phone: +9316045904039

Job: Future Coordinator

Hobby: Archery, Couponing, Poi, Kite flying, Knitting, Rappelling, Baseball

Introduction: My name is Annamae Dooley, I am a witty, quaint, lovely, clever, rich, sparkling, powerful person who loves writing and wants to share my knowledge and understanding with you.