Commit Graph

19 Commits

Author SHA1 Message Date
Andy Ross 17f46a71ee uuid: Use new UUID registry pervasively
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>
2024-07-05 14:32:56 +01:00
Andy Ross fdb039ef5f everywhere: Normalize UUID naming
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>
2024-07-05 14:32:56 +01:00
Andy Ross a3c1b75808 uuid: Rename DECLARE_SOF(_RT)?_UUID() -> SOF_DEFINE_UUID()
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>
2024-07-05 14:32:56 +01:00
Ranjani Sridharan 9b7fffd0d5 tools: plugin: tplg: Fix a couple of memory leaks
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>
2024-06-19 21:16:52 +03:00
Yong Zhi 9c334976c4 tools: plugin: README: remove reference to tgl-nocodec
Fix the tplg name to match the actual name used in example.

Signed-off-by: Yong Zhi <yong.zhi@intel.com>
2024-06-18 14:29:11 +01:00
Ranjani Sridharan f38f118b93 plugin: noise_suppression_interface: Query available devices
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>
2024-05-22 15:20:05 +01:00
Kai Vehmanen d0239c70da tools: plugin: ipc4: fix build error in switch-case
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>
2024-04-17 14:35:17 +03:00
Ranjani Sridharan 48462a47bd tools: plugin: README: Add instructions for testing noise suppression
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>
2024-02-16 21:45:27 +02:00
Ranjani Sridharan 06b3e329da tools: plugin: modules: Introduce the OpenVino noise suppression module
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>
2024-02-16 21:45:27 +02:00
Ranjani Sridharan de2d39514f tools: plugin: 50-sof: Add new config for 16KHz stereo 16-bit format
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>
2024-02-16 21:45:27 +02:00
Ranjani Sridharan 850e1d3eb3 tools: plugin: Fix prepare/free widgets for capture
Set the host widget correctly and use the capture specific functions
during prepare/free.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2024-02-16 21:45:27 +02:00
Ranjani Sridharan 47a17d7fcf tools: plugin: tplg: Fix ibs/obs for all widgets
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>
2024-02-16 21:45:27 +02:00
Ranjani Sridharan 4feebf2a5c tools: plugin: tplg: Fix parsing of process widgets
For now, only process widgets that don't need the basecfg extension are
supported.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2024-02-16 21:45:27 +02:00
Ranjani Sridharan 61fdc16240 tools: plugin: pcm: Add missing return
Add the missing return in the hw_free callback.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2024-02-16 21:45:27 +02:00
Ranjani Sridharan a5bdcce1e1 topology2: Add topology for testing SOF plugin
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>
2024-02-05 18:16:40 +02:00
Ranjani Sridharan e65eb8500c tools: plugin: Fix hybrid pipeline support
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>
2023-12-05 11:10:49 +02:00
Marc Herbert 50c224a2c7 tools/plugin/README.md: add -GNinja. Remove stale -DPLUGIN_IPC4
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>
2023-12-01 13:09:19 -08:00
Ranjani Sridharan 48324bd3f4 tools: plugin: alsa: Remove calls to buffer_acquire/release
These dont exist anymore.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2023-11-22 09:41:50 +02:00
Liam Girdwood 87148abf1e tools: Introduce the SOF ALSA plugin
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>
2023-09-29 14:46:34 +01:00