Python implementation for receiving and decoding debug-stream records
from debug window slot transportation. Opens SOF debugfs file
"debug_stream" reads and decodes the records from the circular buffer
documented in soc_debug_window_slot.h. This initial version only knows
of DEBUG_STREAM_RECORD_ID_THREAD_INFO records.
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
The change is done to consolidate the files belonging to the
module. This patch only moves the files to a new location.
Successive patches address the issues caused by this move.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
To consolidate the audio moves the scripts are moved to the same
directory as the module. This first step only moves the files.
The next steps rename the scripts and fix possible issue to
directories move.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Recent changes to UUID naming dropped the _comp in the UUID declaration.
Fix the noise suppression module to adhere to the new naming while
declaring the module interface and trace.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
The scripts are moved to consolidate the audio modules.
The setup tool is common for IIR and FIR where IIR is more
commonly used so the destination directory is eq_iir. The
equalizers with both IIR and FIR part are also designed in
the same run so the design is not split.
The paths are fixed in code for new location. There are no
other changes.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The MFCC component is not loading in these platforms due to
missing edit to <platform>.toml.h.
As editorial change the missing newline in the end of
ptl.toml.h is fixed.
Fixes: f7715b814b
("Audio: MFCC: Fix build of component for current SOF")
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Long overdue, I don't know why we keep adding complicated stuff
without having a simpler baseline.
Two configurations are provided, one with default copiers and another
with CHAIN_DMA.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
The verbose test trace flood slows down the test to near
unusable test times due to a lot of text printed to Octave
console. As result also the SOF CI logs become large.
This patch adds redirect of testbench trace into a temporary
file instead of standard output in process_test.m. The trace
content is printed in comp_run.sh to console only if there has
been an error. To prevent growing /tmp the trace file is
deleted after test run and possible print to console.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The rate_min and rate_max no more work with IPC4 topologies. The
SSP2 PCM host pipeline contains a sample rate converter so it can
support multiple rates. With attempt to play (or capture) with
other than 48 kHz the error is printed and resulting playback has
wrong pitch:
Warning: rate is not accurate (requested = 44100Hz, got = 48000Hz)
please, try the plug plugin
Use of rates with list of all rates in topology fixes the issue.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
In test topologies the MFCC data can be packed to 1, 2, or 4
channels stream. This change fixes the shown time scale for
audio features 3D plot.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch updates the setup_mfcc.m Octave script to produce
configuration blob for topology version 2 builds.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds build of topologies
- sof-hda-generic-cavs25-2ch-mfcc.tplg
- sof-hda-generic-cavs25-4ch-mfcc.tplg
- sof-hda-generic-ace1-2ch-mfcc.tplg
- sof-hda-generic-ace1-4ch-mfcc.tplg
The MFCC is connected to 16 kHz DMIC1 DAI. The MFCC bitstream
is passed to capture PCM. The DMIC1 pipeline style is copied
from DMIC0:
DAI copier -> IIR -> gain -> module_copier -> MFCC -> host copier
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The same dai-copier-eqiir-gain-module-copier-capture pipeline can
be used for both DMIC0 and DMIC1, with different IIR setting,
so the blob definition is moved to dmic-generic.conf where the
pipeline is instantiated.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
It has not been possible to build the component earlier for Zephyr
IPC4 systems. This patch makes the next fixes:
- Add SOF_MODULE_INIT() and include of rtos/init.h
- For unit test fix the init function to
sys_comp_module_mfcc_interface_init()
- To Zephyr/CMakeLists.txt add the needed math library sources
- Add .toml files for rimage for IPC4 systems
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Modify the class definitions for the mixout-gain-efx-dai-copier-playback
and the mixout-gain-efx-mbdrc-dai-copier-playback pipelines to use the
SubreeCopy feature to extend the mixout-gain-eqiir-eqfir pipeline class
definition.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Add a new pipeline, mixout-gain-eqiir-eqfir, that uses the new alsa-utils
topology feature to allow extending existing pipeline definitions. This
new class extends the base class mixout-gain-dai-copier-playback class
by adding the eqiir & eqfir widgets along with the new routes.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Modify the route description to an array in preparation for allowing
class extensions to define new classes where existing routes will be
merged with the new routes in the sub classes.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This patch fixes a recently introduced bug that impacts most
of 4ch DMIC topologies.
The NUM_DMICS=4 controls DAI channels count, while the
DMIC0_PCM_CHANNELS controls host copier channels count. In
most topologies built the DMIC0_PCM_CHANNELS remained in
default 2 setting if it was not explicitly set in cmake target
definitions.
As result the "arecord -c 4" attempt failed e.g. with common
sof-hda-generic-4ch.tplg.
Fixes: 88366121b3 ("Tools: Topology2:
Add DMIC Enhanced Audio Capture development tplg")
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds to DMIC0 capture TDFB beamformer and DRC for
dynamic range control. The names of updated topologies are
sof-hda-efx-generic-2ch.tplg and sof-hda-efx-generic-4ch.
The efx topologies with mbdrc are updated similarly.
The pipeline is enabled if DMIC0_ENHANCED_CAPTURE is set to true
in topologies build. They keys EFX_DMIC0_TDFB_PARAMS and
EFX_DMIC0_DRC_PARAMS control the configurations blobs use.
Build parameter DMIC0_PCM_CHANNELS controls the number of output
channels for beamformer. It is by default two.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds to analog microphone capture pipeline TDFB
beamformer and DRC for dynamic range control. The name of updated
topology is sof-hda-efx-generic.tplg. Similar capture enhance is
added to multi-band DRC version sof-hda-efx-mbdrc-generic.tplg.
The pipeline is enabled if HDA_MIC_ENHANCED_CAPTURE is set to true
in topologies build. They keys EFX_HDA_MIC_TDFB_PARAMS and
EFX_HDA_MIC_DRC_PARAMS control the configurations blobs use.
There is no processing applied to capture audio since the topology
is built with passthrough blobs. E.g. UCM should set up processing
with blobs those have effect.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds a number of configuration blobs for the
time-domain fixed beamformer component. The blobs include
pass-through and generic narrow angle stereo beamforming for
two and four microphones line array systems.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This change allows to disable and hide the control by omitting name
define if it is not useful in the topology. Also other ALSA controls
no more require mandatory name.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch updates similarly as for hda-generic the analog capture.
Before the patch the capture path pipelines are:
dai-copier.HDA.Analog.capture --> host-copier.0.capture
After this change:
dai-copier.HDA.Analog.capture --> eqiir.4.1
--> module-copier.4.2
--> host-copier.0.capture
To use the same dai-copier-eqiir-module-copier-capture tplg code
chunk as in hda-generic, the macros HDA_ANALOG_CAPTURE and
HDA_ANALOG_PLAYBACK_RATE were added.
The addition of IIR to capture mitigates the capture start transients
similarly as in hda-generic.
This change adds 7.7 MCPS from IIR, and 2.2 MCPS from module-copier
in TGL platform.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This change adds volume and switch "Dmic0" into dai-copier pipeline.
It ensures that all capture from DMIC follows the mute key control
even if some other processing and PCMs are added to module copier.
The patch adds a new pipeline class
dai-copier-eqiir-gain-module-copier-capture. It is similar as
replaced dai-copier-eqiir-module-copier-capture but adds the
gain component.
The confusing DMIC0_DAI_GAIN (set to eqiir) is removed from all
top level topologies (nocodec, rt5682, sdw, hda).
After this a typical DMIC0 pipeline looks like:
dai-copier --> eqiir --> gain --> module-copier --> host-copier
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This change prepares for adding it instead to DMIC DAI copier
pipeline. There it will control mute/unmute for all possible
module copier connected other capture PCMs.
The pipeline object gain-capture is replaced with simpler
host-gateway-capture. The definition of DMIC0_HOST_PIPELINE_SINK
need to be changed from gain to host-copier.
With this patch, the typical DMIC capture path looks like:
dai-copier --> eqiir --> module-copier --> host-copier
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This mysterious option has been causing portability issues and has never
made any difference, see previous commits for details.
I compiled the plugin with and without it and there was absolutely zero
binary difference.
Let's remove it from all tools/plugin/ CMakeLists.txt files before the
mass copy/paste/diverge there spreads it even more.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
For some reason we had the EQIIR for topology1/IPC3 but we didn't add
it for topology2/IPC4. All recordings show there's a strong DC offset
with RT722 and other codecs, so let's add this component by default in
the non-passthrough cases.
The widget is added in the scope of a pipeline, so that the
auto-generated instance is not handled at a global level.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
The widget should only be defined in the scope of a pipeline,
otherwise the instance management is global instead of local to the
pipeline.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
The ALH copier only supports 32bits stereo on capture. All the
additional formatls on the host copiers make no sense, and we also
don't need to generate 4ch on the host side.
It looks like the addition of the 1ch support was also problematic
since the link always operates with 2ch.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
These two variables should only be used on the link side. It makes no
sense to use them on the host-facing side of the DAI copier.
FIXME: do we need to use 3 formats for the ALH copiers, in most cases
there's really a need for a 32-bit format only?
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
This device has RT712 on link0 2 PCH-attached DMICs.
Add 2 configurations with 4 DMIC and 2 DMIC. For now no
support for -pdm1.
Link: https://github.com/thesofproject/linux/issues/4923
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
There is no SDW DMIC or PCH DMIC included in the configuration. Thus the
last SDW link ID will be 2 and the HDMI link ID will start with 3.
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Start moving SoundWire topologies from the shadows into main...
We generate a single topology for RT722-based skews since the link
information is not used in the matching with the machine driver
dailinks. The same topology can be used for link0 or link3 setups.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Using S32_LE wastes bandwdith for no good reason, we should use 24
bits on the link to maximize bus efficiency with the 9.6 MHz bus
clock.
There is no need for a kernel-side change, the dailink fixup already
changes the dailink format based on the topology information.
Link: https://github.com/thesofproject/sof/issues/8960
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
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>
Add a very simple uuid-registry.txt file containing all known UUIDs in
the tree, use it to generate a C header (the script validates it in
the process) that can then be used for a simplified
SOF_DEFINE_REG_UUID() mechanism that avoids the risk and temptation
temptation of components incorrectly implementing UUIDs.
The intent is that in the longer term, this file can be used by other
downstream tooling (manifest and topology generation) to more easily
reference known IDs by name in a way that avoids duplication and
error.
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>
removing NUM_HDMIS=0 was not enough, the offsets need to be modified
as well.
While we're at it, make sure all RT711-based RVPs use the same
formatting, ADL had the setting buried in the middle of the chain of
macros.
Closes: https://github.com/thesofproject/linux/issues/5094
Fixes: 75ed6960b8 ("topology2: enable HDMI for all SoundWire production topologies")
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
This patch adds checks and errors for fopen() failures. The check
is useful with setup scripts paths changes. Aborting the script
avoids the errors in blob exports to be missed.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The purpose of this patch is to consolidate all the files
those belong to the DRC module. The top level function names
are changed to have sof_ prefix to avoid conflict with possible
other similar files.
Note: A small fix is needed after similar patch for EQ
is merged since some functions for DRC blob are used from
there.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>