Skip to content

Commit a0e0634

Browse files
committed
Merge branch 'master' into publish
2 parents 5d96a7e + 9d8d6b5 commit a0e0634

285 files changed

Lines changed: 1483 additions & 14683 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎Makefile‎

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,13 @@ else
99
Q = @
1010
endif
1111

12-
SOF_DOC_BUILD = ../sof/build_doxygen/
12+
# Locate SOF firmware repository: check SOF_ROOT, or candidate directories
13+
ifeq ($(SOF_ROOT),)
14+
SOF_ROOT := $(firstword $(wildcard ../sof-dox-work ../sof ../sof-tgl/sof /home/lrg/work/sof-dox-work))
15+
endif
16+
SOF_DOC_BUILD ?= $(if $(SOF_ROOT),$(SOF_ROOT)/build_doxygen,_build_doxygen)
17+
SOF_HAS_DOC := $(wildcard $(SOF_ROOT)/doc/CMakeLists.txt)
18+
1319
SPHINXBUILD = sphinx-build
1420
SPHINXPROJ = "SOF Project"
1521
SOURCEDIR = .
@@ -34,21 +40,19 @@ help:
3440
.PHONY: help apidocs html clean
3541

3642

37-
# Generate the doxygen xml (for Sphinx) and copy the doxygen html to the
38-
# api folder for publishing along with the Sphinx-generated API docs.
39-
# Keep doxygen optional not to burden "drive-by" .rst contributors with
40-
# extra dependencies.
41-
42-
APIS_CMAKE := ${SOF_DOC_BUILD}/build.ninja
43+
# Generate the doxygen xml (for Sphinx Breathe) and copy the doxygen html
44+
# for publishing along with the Sphinx-generated API docs.
4345
apidocs:
44-
ifeq (${APIS_CMAKE},$(wildcard ${APIS_CMAKE}))
45-
ninja -C ${SOF_DOC_BUILD} $${VERBOSE:+-v} doc
46+
ifneq ($(SOF_HAS_DOC),)
47+
@if [ ! -f "$(SOF_DOC_BUILD)/build.ninja" ]; then \
48+
echo "Configuring Doxygen build with CMake in $(SOF_DOC_BUILD)..."; \
49+
cmake -GNinja -S "$(SOF_ROOT)/doc" -B "$(SOF_DOC_BUILD)"; \
50+
fi
51+
@echo "Building Doxygen documentation in $(SOF_DOC_BUILD)..."
52+
ninja -C "$(SOF_DOC_BUILD)" $${VERBOSE:+-v} doc
4653
else
47-
# To include doxygen APIs run this first:
48-
# cmake -GNinja -S ../sof/doc -B ${SOF_DOC_BUILD}
49-
# Note this will make the build CONSIDERABLY LONGER!
50-
# Conversely, you can have _instant builds from scratch_
51-
# by disabling UML diagrams in the conf.py file.
54+
@echo "Note: SOF firmware source tree (doc/CMakeLists.txt) not found."
55+
@echo " Specify SOF_ROOT=/path/to/sof to generate live C API documentation."
5256
endif
5357

5458
PYTHON ?= python3
@@ -58,18 +62,25 @@ generate_data:
5862

5963
html: generate_data apidocs
6064
$(SPHINXBUILD) -j auto -t $(DOC_TAG) -b html \
61-
-d $(BUILDDIR)/doctrees $(SOURCEDIR) $(BUILDDIR)/html $(SPHINXOPTS) \
62-
-D breathe_projects.'SOF Project'="${SOF_DOC_BUILD}"/doxygen/xml \
63-
$(ERROROPTS) $(O)
65+
-d $(BUILDDIR)/doctrees $(SOURCEDIR) $(BUILDDIR)/html $(SPHINXOPTS) \
66+
$(if $(wildcard $(SOF_DOC_BUILD)/doxygen/xml),-D breathe_projects.'SOF Project'="$(abspath $(SOF_DOC_BUILD)/doxygen/xml)",) \
67+
$(ERROROPTS) $(O)
68+
@if [ -d "$(SOF_DOC_BUILD)/doxygen/html" ]; then \
69+
echo "Copying raw Doxygen HTML to $(BUILDDIR)/html/doxygen..."; \
70+
mkdir -p $(BUILDDIR)/html/doxygen; \
71+
cp -r $(SOF_DOC_BUILD)/doxygen/html/* $(BUILDDIR)/html/doxygen/; \
72+
fi
6473
# Reminder: to see _all_ warnings you must "make clean" first.
6574

6675

6776
# Remove generated content (Sphinx and doxygen)
6877

6978
clean:
7079
rm -fr $(BUILDDIR)
71-
ifeq (${APIS_CMAKE},$(wildcard ${APIS_CMAKE}))
72-
ninja -C ${SOF_DOC_BUILD} $${VERBOSE:+-v} doc-clean clean
80+
ifneq ($(SOF_HAS_DOC),)
81+
@if [ -f "$(SOF_DOC_BUILD)/build.ninja" ]; then \
82+
ninja -C "$(SOF_DOC_BUILD)" $${VERBOSE:+-v} doc-clean clean; \
83+
fi
7384
endif
7485

7586
# Copy material over to the GitHub pages staging repo

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ SOF Project documentation web site published to
55
https://thesofproject.github.io
66

77
Learn how to setup and generate documentation by reading
8-
https://thesofproject.github.io/latest/contribute/process/docbuild.html
8+
https://thesofproject.github.io/latest/contribute/index.html#building-publishing-documentation

‎algos/index.rst‎

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,14 @@ Algorithms
66
Supplied Processing Algorithms
77
******************************
88

9-
SOF contains several permissively-licensed and royalty-free audio processing
10-
algorithms that can be used alongside proprietary processing components to
11-
build pipelines.
9+
SOF provides an extensive ecosystem of permissively-licensed and royalty-free audio processing
10+
algorithms that can be used alongside proprietary processing components to build production audio pipelines.
11+
12+
In addition to upstream native algorithms, license-compatible open-source algorithms from external projects
13+
(such as FFmpeg, WebRTC, Valve Steam Audio, CMSIS-DSP, and vendor DSP libraries) can be compiled as dynamically
14+
loadable modules (e.g. Zephyr LLEXT / ELF modules) and linked at runtime into active audio pipelines. This
15+
modular architecture allows open-source, vendor, and proprietary intellectual property (IP) components to be safely
16+
integrated into the same pipeline graph without license contamination or monolithic recompilation.
1217

1318
.. include:: _generated_modules_table.rst
1419

‎api/audio-stream-api.rst‎

Lines changed: 0 additions & 9 deletions
This file was deleted.

‎api/component-api.rst‎

Lines changed: 0 additions & 22 deletions
This file was deleted.

‎api/component-ext-api.rst‎

Lines changed: 0 additions & 9 deletions
This file was deleted.

‎api/dai-drivers-api.rst‎

Lines changed: 0 additions & 7 deletions
This file was deleted.

‎api/dma-drivers-api.rst‎

Lines changed: 0 additions & 19 deletions
This file was deleted.

‎api/index.rst‎

Lines changed: 57 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,62 @@
11
.. _api:
2+
.. _uuid-api:
23

34
API Documentation
45
#################
56

6-
.. toctree::
7-
:maxdepth: 1
8-
9-
uuid-api
10-
dma-drivers-api
11-
dai-drivers-api
12-
pm-runtime-api
13-
platform-api
14-
memory-alloc-api
15-
audio-stream-api
16-
component-api
17-
component-ext-api
18-
uapi
7+
The Sound Open Firmware (SOF) C application programming interface (API) documentation
8+
is generated directly from the firmware source code comments and header files using
9+
Doxygen. This ensures that the documentation is always synchronized with the actual
10+
implementation across all supported audio components, pipeline infrastructure,
11+
hardware abstraction layers, and IPC protocols.
12+
13+
.. raw:: html
14+
15+
<div style="border-left: 4px solid var(--pst-color-primary, #0a7d91); padding: 1.5rem; margin: 1.5rem 0; border-radius: 8px; background-color: var(--pst-color-surface, #f8f9fa); border: 1px solid var(--pst-color-border, #e5e7eb); border-left-width: 4px;">
16+
<h3 style="margin-top: 0; color: var(--pst-color-primary, #0a7d91); font-size: 1.3rem;">Sound Open Firmware Doxygen API Documentation</h3>
17+
<p style="margin-bottom: 1.25rem; font-size: 1rem; line-height: 1.5;">
18+
Browse the complete, interactive C API reference generated directly from the SOF firmware codebase, including data structures, function declarations, macros, enumerations, file hierarchies, and dependency call graphs.
19+
</p>
20+
<a href="../doxygen/index.html" style="font-weight: 600; padding: 0.65rem 1.4rem; border-radius: 5px; display: inline-block; text-decoration: none; background-color: #0a7d91; color: #ffffff;">
21+
Open Doxygen API Reference &rarr;
22+
</a>
23+
</div>
24+
25+
Overview of Documented Modules
26+
******************************
27+
28+
The Doxygen documentation covers the entire public firmware and host-shared interface:
29+
30+
* **Audio Components & Pipelines**:
31+
Core component driver lifecycle (``component.h``), component extensions and buffer helpers (``component_ext.h``), and PCM stream buffer utilities (``audio_stream.h``).
32+
33+
* **Hardware Drivers & Interfaces**:
34+
Direct Memory Access (``dma.h``), Digital Audio Interfaces for I2S/SSP, SoundWire/ALH, DMIC/PDM, and HDA (``dai.h``), Power Management runtime (``pm_runtime.h``), and platform hardware timers and interrupt controllers (``platform.h``).
35+
36+
* **Core RTOS & System Services**:
37+
Real-time task scheduling (EDF, LL-Timer, LL-DMA, Zephyr DataProcessing threads in ``schedule.h``), memory allocation heaps (``alloc.h``), and component/pipeline UUID declarations (``uuid.h``).
38+
39+
* **IPC & Host Interfaces**:
40+
User/Kernel IPC ABI protocols and messaging envelopes (``ipc/header.h``, ``ipc/control.h``), and SRAM Window 0 firmware status registers and telemetry offsets (``kernel/mailbox.h``).
41+
42+
* **Source Code Graphs & File Browsing**:
43+
Full source file tree, header include dependency graphs, and function call/caller graphs.
44+
45+
Building API Documentation Locally
46+
**********************************
47+
48+
To build or refresh the Doxygen documentation alongside the Sphinx documentation:
49+
50+
.. code-block:: bash
51+
52+
# From the sof-docs repository root
53+
make apidocs # Generates Doxygen XML and HTML
54+
make html # Generates Sphinx site and stages Doxygen at _build/html/doxygen/
55+
56+
Alternatively, Doxygen can be built directly inside the SOF firmware repository:
57+
58+
.. code-block:: bash
59+
60+
# From the sof firmware repository root
61+
cmake -GNinja -S doc -B build_doxygen
62+
ninja -C build_doxygen doc

‎api/memory-alloc-api.rst‎

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
 (0)