Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions api/components.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
.. _api_components:

Audio Processing Components API
###############################

SOF includes a rich library of standard audio processing components, covering volume control,
gain attenuation, channel mixing, IIR/FIR equalization, dynamic range compression (DRC),
sample rate conversion (SRC/ASRC), sound dose measurement, and acoustic filters.

.. doxygengroup:: audio_components_api
:project: SOF Project
13 changes: 13 additions & 0 deletions api/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,19 @@ The Doxygen documentation covers the entire public firmware and host-shared inte
* **Source Code Graphs & File Browsing**:
Full source file tree, header include dependency graphs, and function call/caller graphs.

Subsystem C API References
**************************

.. toctree::
:maxdepth: 1

ipc4
modules
pipeline
components
rtos
math

Building API Documentation Locally
**********************************

Expand Down
11 changes: 11 additions & 0 deletions api/ipc4.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
.. _api_ipc4:

IPC4 Host-DSP Protocol API
##########################

The IPC4 protocol defines the communication contract between the host operating system
driver and the Sound Open Firmware DSP. It governs pipeline creation, module binding,
audio gateway configuration, runtime parameter adjustment, and asynchronous telemetry.

.. doxygengroup:: ipc4_api
:project: SOF Project
12 changes: 12 additions & 0 deletions api/math.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
.. _api_math:

DSP Math & Filter Libraries API
###############################

Digital signal processing routines in SOF provide optimized fixed-point and floating-point
mathematical routines. These include trigonometric approximations, polynomial functions,
CORDIC algorithms, Fast Fourier Transforms (FFT), IIR/FIR filter structures, and matrix
operations.

.. doxygengroup:: dsp_math_api
:project: SOF Project
12 changes: 12 additions & 0 deletions api/modules.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
.. _api_modules:

Loadable Module & LLEXT API
###########################

Sound Open Firmware supports dynamic, modular audio processing through both built-in
and dynamically loadable ELF extensions (LLEXT). The module API defines the common
interface contracts, initialization structures, parameter exchange mechanisms,
and source/sink endpoint buffers.

.. doxygengroup:: module_api
:project: SOF Project
12 changes: 12 additions & 0 deletions api/pipeline.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
.. _api_pipeline:

Audio Pipeline & Buffer API
###########################

Audio pipelines in SOF represent directed processing graphs linking audio stream sources,
processing components, interconnect buffers, and audio sinks. This API governs pipeline
scheduling domains, thread execution models, circular buffer management, and stream
state transitions.

.. doxygengroup:: audio_pipeline_api
:project: SOF Project
12 changes: 12 additions & 0 deletions api/rtos.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
.. _api_rtos:

RTOS Abstraction Layer API
##########################

The RTOS abstraction layer decouples Sound Open Firmware core logic from underlying
real-time operating system primitives. It standardizes spinlocks, mutexes, task
scheduling, high-resolution clocks, hardware timers, memory allocation pools,
and cache coherency operations across supported DSP architectures.

.. doxygengroup:: rtos_api
:project: SOF Project
118 changes: 107 additions & 11 deletions index.rst
Original file line number Diff line number Diff line change
@@ -1,20 +1,117 @@
.. meta::
:http-equiv=Refresh: 0; url=introduction/index.html

.. raw:: html

<script type="text/javascript">
window.location.replace("introduction/index.html");
</script>

.. _SOF_home:

Sound Open Firmware Documentation
#################################

Welcome to the **Sound Open Firmware (SOF)** technical documentation portal.

Sound Open Firmware is a permissively licensed, open-source audio Digital Signal Processing (DSP) firmware infrastructure, SDK, and real-time execution framework governed under the **Linux Foundation** and directed by the **SOF Technical Steering Committee (TSC)**.

SOF provides transparent, deterministic, low-latency audio processing infrastructure for modern computing architectures ranging from embedded microcontrollers and IoT devices to multi-core client PCs and servers.

.. figure:: introduction/images/sof-waveform.jpeg
:alt: Sound Open Firmware audio DSP processing
:align: center
:width: 100%

Architecture & Key Capabilities
*******************************

Sound Open Firmware delivers a unified, cross-platform audio software stack across two foundational deployment paradigms:

* **Host-Based Client Architecture**: Where the DSP operates as an accelerator coupled to a host application processor running **Linux**, **ChromeOS**, **Android**, or **Windows**. The mainline Linux kernel driver subsystem (``sound/soc/sof/``) manages firmware lifecycle, dynamic ALSA topology parsing, and aggressive power gating (D0ix runtime idle, D3 cold suspend), while real-time audio streams exchange through mailbox IPC protocols (IPC4 and IPC3) and host DMA memory windows.
* **Hostless & Standalone Architecture**: Where SOF executes autonomously on microcontrollers and embedded DSPs (such as the **Espressif ESP32-P4** or **PJRC Teensy 4.1 / i.MX RT1062**) atop the **Zephyr RTOS**. Standalone topologies process audio directly between hardware peripherals (I2S/TDM, SoundWire, PDM microphones, and S/PDIF) without requiring a host OS.

Documentation Pillars & Navigation
**********************************

Explore the documentation portal by selecting one of the core technical pillars below:

.. raw:: html

<p>Redirecting to <a href="introduction/index.html">Introduction to the SOF Project</a>...</p>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.25rem; margin: 1.5rem 0 2rem 0;">

<div style="border: 1px solid var(--pst-color-border, #e5e7eb); border-radius: 8px; padding: 1.25rem; background: var(--pst-color-surface, #ffffff); box-shadow: 0 1px 3px rgba(0,0,0,0.05); display: flex; flex-direction: column;">
<h4 style="margin-top: 0; color: var(--pst-color-primary, #0a7d91); font-size: 1.15rem; font-weight: 600;">
<a href="introduction/index.html" style="text-decoration: none; color: inherit;">Introduction to SOF &rarr;</a>
</h4>
<p style="font-size: 0.925rem; line-height: 1.45; margin-bottom: 0.75rem; flex-grow: 1;">
Learn about the SOF project mission, benefits of audio DSP offloading (power, deterministic latency, vertical stack centralization), licensing, and governance.
</p>
<a href="introduction/index.html" style="font-size: 0.875rem; font-weight: 600; color: var(--pst-color-primary, #0a7d91);">Read Introduction &raquo;</a>
</div>

<div style="border: 1px solid var(--pst-color-border, #e5e7eb); border-radius: 8px; padding: 1.25rem; background: var(--pst-color-surface, #ffffff); box-shadow: 0 1px 3px rgba(0,0,0,0.05); display: flex; flex-direction: column;">
<h4 style="margin-top: 0; color: var(--pst-color-primary, #0a7d91); font-size: 1.15rem; font-weight: 600;">
<a href="getting_started/index.html" style="text-decoration: none; color: inherit;">Getting Started &rarr;</a>
</h4>
<p style="font-size: 0.925rem; line-height: 1.45; margin-bottom: 0.75rem; flex-grow: 1;">
Set up your build host, configure the LLVM/Clang Xtensa cross-compiler toolchain, compile firmware images for target platforms, and run simulation in QEMU.
</p>
<a href="getting_started/index.html" style="font-size: 0.875rem; font-weight: 600; color: var(--pst-color-primary, #0a7d91);">Explore Quickstart &raquo;</a>
</div>

<div style="border: 1px solid var(--pst-color-border, #e5e7eb); border-radius: 8px; padding: 1.25rem; background: var(--pst-color-surface, #ffffff); box-shadow: 0 1px 3px rgba(0,0,0,0.05); display: flex; flex-direction: column;">
<h4 style="margin-top: 0; color: var(--pst-color-primary, #0a7d91); font-size: 1.15rem; font-weight: 600;">
<a href="architectures/index.html" style="text-decoration: none; color: inherit;">Architecture & System Design &rarr;</a>
</h4>
<p style="font-size: 0.925rem; line-height: 1.45; margin-bottom: 0.75rem; flex-grow: 1;">
Deep dive into firmware architecture: audio pipeline execution graphs (DAGs), lockless ring buffers, Zephyr RTOS abstraction, IPC3/IPC4 protocols, and power management.
</p>
<a href="architectures/index.html" style="font-size: 0.875rem; font-weight: 600; color: var(--pst-color-primary, #0a7d91);">View Architecture &raquo;</a>
</div>

<div style="border: 1px solid var(--pst-color-border, #e5e7eb); border-radius: 8px; padding: 1.25rem; background: var(--pst-color-surface, #ffffff); box-shadow: 0 1px 3px rgba(0,0,0,0.05); display: flex; flex-direction: column;">
<h4 style="margin-top: 0; color: var(--pst-color-primary, #0a7d91); font-size: 1.15rem; font-weight: 600;">
<a href="platforms/index.html" style="text-decoration: none; color: inherit;">Supported Platforms Matrix &rarr;</a>
</h4>
<p style="font-size: 0.925rem; line-height: 1.45; margin-bottom: 0.75rem; flex-grow: 1;">
Hardware compatibility specifications across Intel CAVS & ACE (PTL, ARL, MTL, TGL), AMD, NXP i.MX, MediaTek, Espressif ESP32-P4, and PJRC Teensy 4.1.
</p>
<a href="platforms/index.html" style="font-size: 0.875rem; font-weight: 600; color: var(--pst-color-primary, #0a7d91);">Browse Platforms &raquo;</a>
</div>

<div style="border: 1px solid var(--pst-color-border, #e5e7eb); border-radius: 8px; padding: 1.25rem; background: var(--pst-color-surface, #ffffff); box-shadow: 0 1px 3px rgba(0,0,0,0.05); display: flex; flex-direction: column;">
<h4 style="margin-top: 0; color: var(--pst-color-primary, #0a7d91); font-size: 1.15rem; font-weight: 600;">
<a href="algos/index.html" style="text-decoration: none; color: inherit;">Audio Algorithms & Components &rarr;</a>
</h4>
<p style="font-size: 0.925rem; line-height: 1.45; margin-bottom: 0.75rem; flex-grow: 1;">
Comprehensive catalog of built-in audio signal processing modules: Volume, Mixer, Parametric EQ (FIR/IIR), DRC, SRC, ASRC, Crossover, DCBlock, and Wake-on-Voice.
</p>
<a href="algos/index.html" style="font-size: 0.875rem; font-weight: 600; color: var(--pst-color-primary, #0a7d91);">Inspect Algorithms &raquo;</a>
</div>

<div style="border: 1px solid var(--pst-color-border, #e5e7eb); border-radius: 8px; padding: 1.25rem; background: var(--pst-color-surface, #ffffff); box-shadow: 0 1px 3px rgba(0,0,0,0.05); display: flex; flex-direction: column;">
<h4 style="margin-top: 0; color: var(--pst-color-primary, #0a7d91); font-size: 1.15rem; font-weight: 600;">
<a href="developer_guides/index.html" style="text-decoration: none; color: inherit;">Developer Guides & Runbooks &rarr;</a>
</h4>
<p style="font-size: 0.925rem; line-height: 1.45; margin-bottom: 0.75rem; flex-grow: 1;">
Step-by-step developer runbooks: ALSA Topology 2 creation, UCM2 configuration and debugging, LLEXT dynamic module integration, CMake workflows, and real-time DSP probes.
</p>
<a href="developer_guides/index.html" style="font-size: 0.875rem; font-weight: 600; color: var(--pst-color-primary, #0a7d91);">Read Guides &raquo;</a>
</div>

<div style="border: 1px solid var(--pst-color-border, #e5e7eb); border-radius: 8px; padding: 1.25rem; background: var(--pst-color-surface, #ffffff); box-shadow: 0 1px 3px rgba(0,0,0,0.05); display: flex; flex-direction: column;">
<h4 style="margin-top: 0; color: var(--pst-color-primary, #0a7d91); font-size: 1.15rem; font-weight: 600;">
<a href="api/index.html" style="text-decoration: none; color: inherit;">C API & Firmware Reference &rarr;</a>
</h4>
<p style="font-size: 0.925rem; line-height: 1.45; margin-bottom: 0.75rem; flex-grow: 1;">
Interactive Doxygen API documentation and Sphinx Breathe subsystem reference for IPC4, LLEXT modules, pipeline scheduling, audio components, RTOS abstraction, and DSP math.
</p>
<a href="api/index.html" style="font-size: 0.875rem; font-weight: 600; color: var(--pst-color-primary, #0a7d91);">Explore C API &raquo;</a>
</div>

<div style="border: 1px solid var(--pst-color-border, #e5e7eb); border-radius: 8px; padding: 1.25rem; background: var(--pst-color-surface, #ffffff); box-shadow: 0 1px 3px rgba(0,0,0,0.05); display: flex; flex-direction: column;">
<h4 style="margin-top: 0; color: var(--pst-color-primary, #0a7d91); font-size: 1.15rem; font-weight: 600;">
<a href="contribute/index.html" style="text-decoration: none; color: inherit;">Community & Contributing &rarr;</a>
</h4>
<p style="font-size: 0.925rem; line-height: 1.45; margin-bottom: 0.75rem; flex-grow: 1;">
Join the SOF open-source community: contributor guidelines, Git patch submission rules, TSC meeting minutes, releases, and frequently asked questions.
</p>
<a href="contribute/index.html" style="font-size: 0.875rem; font-weight: 600; color: var(--pst-color-primary, #0a7d91);">Contribute &raquo;</a>
</div>

</div>

.. toctree::
:hidden:
Expand All @@ -32,4 +129,3 @@ Sound Open Firmware Documentation
api/index.rst
presentations/index.rst
faq/index.rst

Loading