Strip out all the literall UUID management from existing C code (the
API itself still works for any out-of-tree or test code users) and
exclusively use the new, much simpler, SOF_DEFINE_REG_UUID() macro
which sources IDs from the registry by name.
Signed-off-by: Andy Ross <andyross@google.com>
UUIDs are defined with both a string name (used mostly just for trace
output on legacy xtos builds) and a symbol name used as a global
variable to tie the struct to e.g. component driver definitions. And
because human beings are allowed to type them in, they have been
somewhat inconsistently defined. Normalize them so the string name
and the symbol name match (the symbol has a "_uuid" suffix).
Some of these rules are fairly regular:
* Some of the component drivers added a "_comp" to the global symbol
name and some didn't. Strip the ones that included it.
* Some naming liked dashes where underscores would be present in a
symbol name (e.g. "dw-dma" for dw_dma_uuid). Unify the conventions
so all name strings are valid C symbols.
* Applying those rules produces a collision between "dai" UUIDs
defined in dai.c, dai_legacy.c and dai_zephyr.c, so the latter two
have been renamed to "dai_legacy" and "dai_zephyr".
And in a handful of spots the code just wasn't consistent. These
UUIDs have been manually renamed, generally trying to pick a name the
corresponds to the original string name, or to the C file that defines
them if that seems impractical:
Orig. String Name Orig. Symbol New Unified Name
================= ============ ================
Maxim DSM smart_amp maxim_dsm
Passthru Amp smart_amp passthru_smart_amp
agent_work agent_work_task agent_work
cadence_codec cadence cadence_codec
channel_map chmap chmap
comp_task idc_comp_task idc_comp
component comp component
dp_schedule dp_sched dp_sched
dts_codec dts dts
edf_schedule edf_sched edf_sched
google_hotword_detect ghd google_hotword
ipcgw ipcgtw ipcgw
irq_818x irq_mt818x irq_mt818x
kd_test keyword keyword
ll_schedule ll_sched ll_sched
memory mem mem
micfil_dai micfil micfil
mix_in mixin mixin
mix_out mixout mixout
modules intel modules
passthrough_codec passthrough passthrough
pga volume volume
posix_ipc_task ipc_task ipc_task
schedule sch schedule
spi_completion spi_compl_task spi_completion
waves_codec waves waves
zll_schedule zll_sched zll_sched
Signed-off-by: Andy Ross <andyross@google.com>
Complete the unification of the diverged UUID APIs with a big rename.
Call it "DEFINE" instead of "DECLARE" since this is in fact a C struct
definition and not just a declaration of a type or extern symbol.
Signed-off-by: Andy Ross <andyross@google.com>
Free the memory allocated for tplg base and available input/output
formats when the topology is freed.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Query the list of available devices and use the NPU if available,
otherwise compile the model for the CPU.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
A label must be followed with a statement and declaration is
not a statement. Enclose the case in brackets to avoid compiler
error on this.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Fix the stale instruction for install and add the steps for setting up
OpenVino/OpenCV to test the noise suppression model from the open model
zoo repository.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Introduce a new module that performs noise suppression. The module loads
the noise suppression model using the OpenVino Runtime plugin, processes
the input samples to produce output samples with clean speech.
CUrrently, the module is hard-coded to compile the model to be run on
the CPU only and will be extended for other devices like the NPU in the
future.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This will be needed for the plugin voice PCM in preparation to add the
noise suppression module in the host pipeline.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Set the host widget correctly and use the capture specific functions
during prepare/free.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Set both ibs/obs to be based on the ALSA period_size to make sure that the
intermediate buffers are large enough.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
For now, only process widgets that don't need the basecfg extension are
supported.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
The topology uses passthrough pipelines for playback/capture and
supports only 48k, 2ch, 16bit format for now.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Fix the pcm handle name and the params to fix playback/capture with
hybrid host-dsp pipeline.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Add instructions to build sof_ep and parser_ep first to avoid dependency
issue and race condition.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
The SOF ALSA plugin allows SOF topologies to be run on the host. The plugin
is still WIP with many rough edges that need refined before production
deployment, however the plugin is usable today as a rapid development
framework for SOF infrastructure and processing.
Features that are function in the current implementation
* aplay & arecord usage working today
* modules are loaded as SO shared libraries.
* topology is parsed by the plugin and pipelines associated with the requested PCM ID are loaded
* pipelines run as individual userspace threads
* pipelines can be pinned to efficency cores
* pipelines can use realtime priority.
* alsa sink and alsa source modules available.
* pipelines can block (non blocking and mmap todo)
* 16-bit playback and capture support. Other formats to be added soon
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>