Change all access to the first element of dev->bsource_list
from direct to API call comp_dev_get_first_data_producer
access in pipeline management code, like module adapter,
is omitted intentionally
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
Change all access to the first element of dev->bsink_list
from direct to API call comp_dev_get_first_data_consumer
access in pipeline management code, like module adapter,
is omitted intentionally
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
This is done as preparation for testbench IPC4 support. The
update to IPC4 is simpler for a module adapter component.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Add support for enum controls in the plugin. Fix the get_attribute and
get_enumerated_name callbacks to use the enum control items instad of
the count.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This will avoid the duplicated code when configuring the IPC message for
kcontrol IO.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Use the size of struct ipc4_module_large_config_reply instead of the
size of the pointer.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Add an index field for kcontrols. This will be useful in differenciating
kcontrols of the same type in a widget. Modify the signature of the
control callback function to pass the index as an argument when creating
kcontrols. Pass 0 for ipc3 kcontrol builds as it will be unused in this
case anyway.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This patch adds build of topologies where DMIC0 related pipelines
and PCMs are set to operate with 96 kHz rate.
- sof-ptl-nocodec-dmic-4ch-96k.tplg
- sof-ptl-nocodec-fpga-dmic-4ch-96k.tplg
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch builds test topologies sof-ptl-nocodec.tplg,
sof-ptl-nocodec-fpga-2ch-pdm0.tplg, and sof-ptl-nocodec-fpga-4ch.tplg.
The changes include:
- New ptl.conf where DMIC and SSP versions are updated
vs. LNL and MTL.
- The definitions for blob 3.0 format are added to
instruct alsa-utils to process a new format SSP blob.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Define the callback for setting up kcontrols in the plugin. Add a few
new fields in struct plug_shm_ctl to store the module info and the
volume table for converting mixer values to linear volume gain.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This will be used to store the module id and instance ID when creating
the volume controls.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Initialize the shared memory for the global context during init so that
it can be used to store the kcontrol info during topology parsing. Move
the glb_ctx field from struct snd_sof_pcm to struct snd_sof_plug so that
it can be accessed during topology parsing.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Fix the read/write integer operations for IPC4 and the IPC messages
queues in the plugin kcontrol. Convert the bytes/enum ops implementation
to stubs. Support for these will be added later.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
In preparation for parsing just the topology file from the command line
for kcontrols, modify the signature of plug_parse_conf() to add an
argument to specify it.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
To make volume an LLEXT module it should have a single TOML
configuration file named volume.toml. This is easy to do, using
respective Kconfig options.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This patch adds to DMIC0 capture TDFB beamformer and DRC for
dynamic range control. The impacted topology names are:
- sof-hda-generic-2ch.tplg
- sof-hda-generic-4ch.tplg
- sof-hda-generic-cavs25-2ch.tplg
- sof-hda-generic-cavs25-4ch.tplg
- sof-hda-generic-ace1-2ch.tplg
- sof-hda-generic-ace2-2ch.tplg
The DMIC0 capture pipelines before this patch was:
DAI-copier -> IIR -> gain -> module copier -> host-copier
After:
DAI-copier -> IIR -> gain -> module copier ->
TDFB -> DRC -> host-copier
The beamformer is set for 2ch topologies to a narrow user
direction stereo image enhance with about 3 dB signal-to-noise
ratio improvement with blob "line2_generic_pm10deg.conf". In 4ch
topologies the beamformer is set to pass-through due to large
variations in notebook array geometries. The processing need to
be enabled per product by UCM2. The beamformer control switch is
by default off.
The DRC is set with blob "dmic_default.conf" to produce up to
10 dB boost in capture level. It helps to make DMIC capture louder
in normal silent conditions while it prevents clipping of samples
in loud conditions. The DRC control switch is by default off.
The added controls (seen with "amixer -c0 controls") are:
- Dmic0 Capture DRC bytes
- Dmic0 Capture DRC switch
- Dmic0 Capture TDFB angle set enum
- Dmic0 Capture TDFB beam switch
- Dmic0 Capture TDFB bytes
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 enhanced host copier pipeline is enabled if
HDA_MIC_ENHANCED_CAPTURE is set to true in topologies build.
The keys EFX_HDA_MIC_TDFB_PARAMS and EFX_HDA_MIC_DRC_PARAMS
control the applied configurations blobs.
There is no processing applied to capture audio since the
topology is built with pass-through blobs. E.g. UCM2 should
set up processing with blobs those have effect.
The change impacts sof-hda-generic.tplg. The other topologies
with DMIC are kept as before without added processing. The
analog capture pipelines are before this change:
dai-copier -> eqiir -> module-copier -> host-copier
After:
dai-copier -> eqiir -> module-copier -> TDFB -> DRC -> host-copier
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch changes in cavs-mixin-mixout-hda based topologies the
analog capture pipeline from
dai-copier -> eqiir -> host-copier
to
dai-copier -> eqiir -> module-copier -> host-copier
It allows more flexibility with processing add into host-copier
pipeline and allow capture stream duplication to multiple PCMs.
This change adds 2.2 MCPS from module-copier in TGL platform.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The pipeline is generic for any type of DAI, so using DMIC0_DAI_EQIIR
to select IIR blob is wrong. The blob definition need to be done
at upper level where endpoint is known.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The topologies built with cavs-es83x6.conf
(sof-mtl-es83x6-ssp1-hdmi-ssp02.tplg and sof-mtl-hdmi-ssp02)
are not using dai-copier-eqiir-module-copier-capture pipeline,
so this include can be deleted.
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>
This change replaces 6th argument with show_plots. If it is
set to 1, the plots are not hidden. If set to 2, also the
temporary sound files are not deleted that is useful for
debugging.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The full process test fails due to changed paths of Octave
module setup scripts.
The path EQ blob decoder has changed after the EQ tool was moved
under the module. Also the SOF ABI version retrieve function
path need to be set to tune/common to use the generic function
instead of the first version that was made for EQ export.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The ADL, ARL, LNL hardware board configurations are below:
ARL has the same dsp generiation as MTL. So set platform = mtl.
SoundWire#
├── link 0: cs42l43 Audio Jack and DMICs/Bridge to amplifiers.
| | -> sof-rpl-cs42l43-l0.tplg
│ │ -> sof-mtl-cs42l43-l0.tplg
│ │ -> sof-arl-cs42l43-l0.tplg
│ │ -> sof-lnl-cs42l43-l0.tplg
│ │
│ ├── link 2: cs35l56 Left and Right Amplifier.
│ -> sof-arl-cs42l43-l0-cs35l56-l2.tplg
│
├──── link 2: cs35l56 Right/Rightx2 Amplifier.
├──── link 3: cs35l56 Left/Leftx2 Amplifier.
-> sof-adl-cs42l43-l0-cs35l56-l23.tplg
-> sof-arl-cs42l43-l0-cs35l56-l23.tplg
-> sof-lnl-cs42l43-l0-cs35l56-l23.tplg
SoundWire#
├── link 2: cs42l43 Audio Jack and DMICs.
│ -> sof-arl-cs42l43-l2.tplg
│
├──── link 3: cs35l56 Left and Right Amplifier.
-> sof-arl-cs42l43-l2-cs35l56-l3.tplg
Signed-off-by: Mac Chiang <mac.chiang@intel.com>
PLATFORM=tgl, can safely removed as it is not included in cavs-sdw and
does not affect the soundwire configurations.
Remove SDW_FMT_24 flag because it has become the fixed format for
soundwire configurations.
SDW_AMP_FEEDBACK is currently used for debugging purposes. So set false
to disable it.
Signed-off-by: Mac Chiang <mac.chiang@intel.com>
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>