Commit Graph

240 Commits

Author SHA1 Message Date
Seppo Ingalsuo 16975a591b Tools: Topology2: Add sof-hda-benchmark-aria32-tgl build
This patch adds the aria test topologies build. Aria supports
only s32 format so the s16 and s24 versions build is left
out.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2023-11-01 21:08:59 +02:00
Seppo Ingalsuo 6d6637d608 Tools: Topology2: Add sof-hda-benchmark-gain16/24/32-tgl build
This patch adds test topologies build for gain component. Testing
of gain can be done with all supported s16/s24/s32 source and sink
formats. The topologies normally use only the s32 format
internally.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2023-11-01 21:08:59 +02:00
Seppo Ingalsuo 98e687edb4 Tools: Topology2: Add sof-hda-benchmark-multiband_drc16/24/32-tgl build
This patch adds the multiband-DRC test topologies build.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2023-11-01 21:08:59 +02:00
Seppo Ingalsuo 2d27374086 Tools: Topology2: Include controls to multiband_drc class
The includes to define bytes and mixer controls classes are
needed in case no other class definition has included these.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2023-11-01 21:08:59 +02:00
Seppo Ingalsuo 2831afe345 Tools: Topology2: Easier controls create with bench_comp_generate.sh
This patch adds to benchmark topologies template .conf files
generator commented out control examples types for easier
ALSA controls create.

The controls include files are renamed since they may
contain all controls types and not just bytes.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2023-11-01 21:08:59 +02:00
Ranjani Sridharan d294036fd5 topology2: google-rtc-aec: adjust the IBS/OBS size based on process needs
Example: if a module has 2 input pins, one 16000/16/2, second 48000/16/2 and
one output pin 48000/32/4 and is designed to process 10ms data chunks:

in pin1 IBS should be 16(samples/1ms) * 2 bytes * 2 * 10(ms) = 640
in pin2 IBS should be 48(samples/1ms) * 2 bytes * 2 * 10(ms) = 1920
out pin1 OBS should be 48(samples/1ms) * 4 bytes * 4 * 10(ms) = 7680

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Yong Zhi <yong.zhi@intel.com>
2023-11-01 20:38:52 +02:00
Baofeng Tian e20009bc41 Topology2: condense passthrough tplg file audio format
Condense passthrough audio format with combined arrays.

Signed-off-by: Baofeng Tian <baofeng.tian@intel.com>
2023-10-27 14:33:31 +03:00
Baofeng Tian ae653d06a4 Topology2: condense src input format with combined array
Condense input format to combined array for src.

Signed-off-by: Baofeng Tian <baofeng.tian@intel.com>
2023-10-27 14:33:31 +03:00
Baofeng Tian b0abfe5e20 Topology2: condense tplg audio format for s32 format
Condense src format from s32 to multiple audio format.

Signed-off-by: Baofeng Tian <baofeng.tian@intel.com>
2023-10-27 14:33:31 +03:00
Baofeng Tian b814f307fb Topology2: condense src input format in tplg file
Condense src input audio format convert to 48k in tplg file.

Signed-off-by: Baofeng Tian <baofeng.tian@intel.com>
2023-10-27 14:33:31 +03:00
Baofeng Tian b8c52ecaf7 Topology2: condense output format in tplg file
Condense src 48k to other audio format with combined array format.

Signed-off-by: Baofeng Tian <baofeng.tian@intel.com>
2023-10-27 14:33:31 +03:00
Seppo Ingalsuo 613021b37f Tools: Topology2: Add widget class TDFB
This patch adds the class for the Time domain fixed beamformer
(TDFB) and example blobs for line arrays.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2023-10-26 17:08:45 +03:00
Seppo Ingalsuo d27d068245 Tools: Topology2: Add support for ALSA enum control
This patch adds to definitions in common.conf a new class "text"
to support the enum control values.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2023-10-26 17:08:45 +03:00
Ranjani Sridharan b6d34fb4a8 topology2: Replace audio_format objects
Replace audio_format objects with input_audio_format/output_audio_format
objects in preparation for deprecating the audio_format class.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2023-10-19 20:57:23 +03:00
Ranjani Sridharan 7c735fe7a7 topology2: deepbuffer-playback: Remove stale comments
These were left over when the audio formats were cleaned up.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2023-10-19 20:57:23 +03:00
Ranjani Sridharan 054003f292 topology2: host-gateway-playback: Replace audio_format objects
Use input_audio_format/output_audio_format explicitly in preparation for
deprecating the audio_format class.

Fixes: 7a11e27bf2 ('topology2: host-gateway-capture: Replace audio_format objects')
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2023-10-18 16:56:59 +01:00
Ranjani Sridharan 5945235b42 topology2: mixout-gain-dai-copier-playback: Replace audio_format objects
Use input_audio_format/output_audio_format explicitly in preparation for
deprecating the audio_format class.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2023-10-18 16:56:59 +01:00
Ranjani Sridharan 1125fe06bc topology2: gain-copier-capture: Replace use of audio_format objects
Use input_audio_format/output_audio_format explicitly in preparation for
deprecating the audio_format class.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2023-10-18 16:56:59 +01:00
Seppo Ingalsuo 9aadd197ab Tools: Topology2: Change gain default curve type to linear
This change can drop in TGL platform 2ch 48 kHz gain component
peak load e.g. from 16.7 to 7.09 MCPS CPU_PEAK(MAX) reported by
sof_perf_analyzer.py. The peak varies a bit time. If several
gain instances ramp simulatenously in stream start, the peak
MCPS consumption could be source for xruns and glitches if overall
load is high.

The change with linear curve is barely audible. The
computationally heavier Windows fade exponential curve is required
only with Windows OS. Since Windows is not using ALSA topologies
this change does not impact it.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2023-10-17 17:33:50 +01:00
Ranjani Sridharan 6850be91ba topology2: deepbuffer-playback: Replace audio_format objects
Use the input_audio_format/output_audio_format objects explicitly.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2023-10-17 16:45:29 +01:00
Seppo Ingalsuo df8f9dfc09 Tools: Topology2: Add sof-hda-benchmark-eqfir16/24/32-tgl build
This patch adds FIR EQ topologies build.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2023-10-13 12:34:56 +03:00
Seppo Ingalsuo 311c03026f Tools: Topology2: Add sof-hda-benchmark-eqiir16/24/32-tgl generate
This patch adds IIR EQ topologies build.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2023-10-13 12:34:56 +03:00
Seppo Ingalsuo 501816a90a Tools: Topology2: Add sof-hda-benchmark-drc16/24/32-tgl build
This patch adds DRC test topologies build.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2023-10-13 12:34:56 +03:00
Seppo Ingalsuo a292c9cf25 Tools: Topology2: Build topologies to test processing components
This patch uses cavs-benchmark-hda.conf to build topologies to
test components in a simple playback and capture configuration.

host copier --> component --> DAI copier
host copier <-- component <-- DAI copier

The built topologies are
sof-hda-benchmark-dcblock16/24/32-tgl.tplg

The shell script bench_comp_generate.sh is added to conveniently
generate include files needed to build new test topologies for
component with s16/s24/s32 format.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2023-10-13 12:34:56 +03:00
Seppo Ingalsuo 269d8d5924 Tools: Topology2: Add DC block component
This patch adds the widget class dcblock and a sample
bytes configuration blobs.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2023-10-13 12:34:56 +03:00
Ranjani Sridharan 7a11e27bf2 topology2: host-gateway-capture: Replace audio_format objects
With input_audio_format/output_audio_format objects in preparation to
deprecate the audio_format class.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2023-10-12 15:55:30 +03:00
Jyri Sarha c1996e01e1 topology2: doc: Little fixes to make all classes show correctly
There were couple of classes that did not have their topology2 snippets
showing. Probably the essential problem was just the class definition
starting from the first line of the file. There was nothing obviously
wrong in the output of the filter, but the way the doxygen works is
sometimes hard to anticipate. Adding \struct before the definition
fixed the problem.

Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
2023-10-06 15:34:14 +01:00
Jyri Sarha 649ac7d2d2 topology2: doc: input_audio_format.conf: Translate comments to Doxygen
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
2023-10-06 15:34:14 +01:00
Jyri Sarha 215d7b3a07 topology2: doc: fe_dai.conf: Change comments to Doxygen
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
2023-10-06 15:34:14 +01:00
Jyri Sarha a3e6cf7aac topology2: doc: data.conf: Change comments to Doxygen
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
2023-10-06 15:34:14 +01:00
Jyri Sarha 22ec5b3811 topology2: doc: audio_format.conf: Translate comments to Doxygen
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
2023-10-06 15:34:14 +01:00
Jyri Sarha c7f0e930f2 topology2: doc: widget-common.conf: Attribute comments to Doxygen
Change attribute comments to Doxygen comments.

Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
2023-10-06 15:34:14 +01:00
Jyri Sarha 2e9589069a topology2: doc: volume-playback.conf: Doxygenify existing comments
Doxygenify all comments that are correctly placed near the attribute's
or objects C-translation. This is not the case for comments before
Object.Base { } definition or comment before including
pipeline-common.conf, which is inlined by the topology2 filter, does
not end up in any relevant place, so its better just leave those
comments as they are. They can anyway be read from topology2 source
snippets.

Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
2023-10-06 15:34:14 +01:00
Jyri Sarha 13cf2a2752 topology2: doc: mixer.conf: Doxygenify and improve the existing comments
Improve and convert comments to doxygen documentation.

Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
2023-10-06 15:34:14 +01:00
Jyri Sarha 37ac9fcc6a topology2: doc: common.conf: Doxygenify the existing comments
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
2023-10-06 15:34:14 +01:00
Jyri Sarha 080dc5a340 topology2: doc: gain.conf: Convert comments to Doxygen documentation
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
2023-10-06 15:34:14 +01:00
Seppo Ingalsuo 51159d80e4 Tools: Topology2: Fix the gain.conf curve_type values
This patch adds the other SOF volume ramp types linear and
logarithmic with and without zero crossings detect mode to gain
widget class. The names of fade values are changed to be similar
as in enum sof_volume_ramp, since there is a specific curve
shape required for Windows OS.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2023-10-04 14:24:15 +03:00
Ranjani Sridharan 9e9120a154 topology2: google-rtc-aec: Remove byte control
The blob contains the input/output audio formats but these are already
passed during module init based on hw_params. So no need to have the
byte control for it.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2023-10-03 18:14:41 +03:00
Ranjani Sridharan 351fe7e3ef topology2: google-rtc-aec: Add 4ch audio formats
The DMIC capture path should support both 4ch and 2ch audio formats.
Also, since the Google AEC module only support 16-bit input format,
modify the output of the refeence capture DAI accordingly.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2023-10-03 18:14:41 +03:00
Rander Wang beddfb360a topology2: Add 4ch audio formats for gain-capture pipeline
Add support in gain-capture pipeline to support 4ch DMIC stream.

Signed-off-by: Rander Wang <rander.wang@intel.com>
2023-09-25 11:23:25 +01:00
Rander Wang e7a1592002 topology2: use input|output audio format
The old style is not used now.

Signed-off-by: Rander Wang <rander.wang@intel.com>
2023-09-25 11:23:25 +01:00
Chao Song 75337b41eb topology2: remove duplicated pipeline index attribute definition
The pipeline-common.conf helps us to define several
common pipeline attributes include pipeline index,
there is no need to define pipeline index in each
pipeline class definition if pipeline-common.conf
is included.

Signed-off-by: Chao Song <chao.song@linux.intel.com>
2023-09-22 14:21:59 +01:00
Seppo Ingalsuo 84809f9606 Tools: Topology2: Add Multiband-DRC
This patch adds the topology2 files for multiband-DRC. The EFX
processing chain is gain - IIR - FIR - DRC or Multiband-DRC. The
DRC selection is done with macro EFX_DRC_COMPONENT and values
"singleband" and "multiband".

The multiband-drc has two ALSA controls, bytes and switch. The
switch control switches the processing on and off.

The generated topology files with multiband-drc are:

sof-hda-efx-mbdrc-generic.tplg
sof-hda-efx-mbdrc-generic-2ch.tplg
sof-hda-efx-mbdrc-generic-4cg.tplg

The topology files with DRC are as before:

sof-hda-efx-mbdrc-generic.tplg
sof-hda-efx-mbdrc-generic-2ch.tplg
sof-hda-efx-mbdrc-generic-4cg.tplg

The configuration blob default is updated to what is generated
by the current example_multiband_drc.m configuration script. The
pass-through blob is set as default for tplg2. The topology 1
blobs are updated similarly.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2023-09-11 13:24:55 +01:00
Rander Wang fc8a4b6730 topology2: change the sample type for Linux audio system
At first the sample type is set to MSB_INTEGER to follow windows
settings, but actually we use LSB_INTERGER type such as S24_4LE.
Now change the default sample type to LSB_INTERGER to align with
FW usage. For DAI copier we need to use MSB_INTERGER for hardware
requirement. Currently sample type only affect s24/c32 case, so only
change sample type in dai for this format config.

FW will use sample type to choose correct format conversion
function and can deal with Windows audio stream correctly with MSB
s24/c32 format.

out_fmt_cfg is redefined for a alsa-lib bug. Alsa-lib will first process
out_fmt_cfg = '$[($out_channels | ($out_valid_bit_depth * 256)) |
($out_sample_type * 65536)]' in base class and then deal with
out_sample_type, so error is reported. Now first define out_sample_type
and then out_fmt_cfg, everything works.

Signed-off-by: Rander Wang <rander.wang@intel.com>
2023-09-06 12:14:42 +03:00
Seppo Ingalsuo 961e4a645d Tools: Topology2: Use more specific src format .conf files
This patch replaces src_format.conf and src_passthrough_format.conf
with more specific formats definitions for host copiers,
pass-through components, playback src, and capture src.

The DSP internal pipelines are 32 bits, so src_s32_passthrough.conf
is used for components like gain those pass the 8 - 192 kHz
rates with s32 format.

The formats in src_format_sxx_to_s32_convert.conf is for use for
for playback host copier. Input formats are s16/24/32 and the only
output format is s32. Similarly the  src_format_s32_to_sxx_convert.conf
is for capture host copier.

The formats for playback SRC are in src_format_s32_convert_to_48k.conf,
and the formats for capture are in src_format_s32_convert_from_48k.conf.

The new formats definitions use the input_audio_format and
output_audio_format objects instead of audio_format. The unnecessary
word lengths are removed to minimize the formats count in every
component.

The pipelines host-copier-gain-src-mixin-playback.conf and
src-gain-mixin-playback.conf those used the previous format definitions
are updated with these changes.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2023-09-05 18:56:47 +03:00
Seppo Ingalsuo 56def4ea10 Tools: Topology2: No mandatory rate_out to support capture SRC
This patch removes rule to require fixed rate_out for SRC
widget. A capture SRC in host pipeline or near it has typically
variable output rate.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2023-09-05 18:56:47 +03:00
Marcin Szkudlinski 5de6d098d7 Revert "topology2: change the sample type for Linux audio system"
This reverts commit 196f86cde4.
2023-08-24 18:03:19 +03:00
Rander Wang 196f86cde4 topology2: change the sample type for Linux audio system
At first the sample type is set to MSB_INTEGER to follow windows
settings, but actually we use LSB_INTERGER type such as S24_4LE.
Now change the default sample type to LSB_INTERGER to align with
FW usage. For DAI copier we need to use MSB_INTERGER for hardware
requirement. Currently sample type only affect s24/c32 case, so only
change sample type in dai for this format config.

FW will use sample type to choose correct format conversion
function and can deal with Windows audio stream correctly with MSB
s24/c32 format.

out_fmt_cfg is redefined for a alsa-lib bug. Alsa-lib will first process
out_fmt_cfg = '$[($out_channels | ($out_valid_bit_depth * 256)) |
($out_sample_type * 65536)]' in base class and then deal with
out_sample_type, so error is reported. Now first define out_sample_type
and then out_fmt_cfg, everything works.

Signed-off-by: Rander Wang <rander.wang@intel.com>
2023-08-22 17:51:56 +03:00
Jyri Sarha 865946cf06 topology2: widget-common.conf: Default no_wname_in_kcontrol_name to true
Set no_wname_in_kcontrol_name attribute default to true to for all
widgets.

This change will drop widget name prefixes from all kcontrols created
from currently defined widgets, as they all include
widget-common.conf. In practice this means that for example "gain.2.1
Post Mixer Analog Playback Volume" becomes just "Post Mixer Analog
Playback Volume" and same for all kcontrols.

This behavior can be reverted per widget basis by setting
no_wname_in_kcontrol_name attribute to false in the relevant widget.

Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
2023-08-21 13:07:17 +01:00
Jyri Sarha 53281d3b17 topology2: mixer: Add no_wname_in_kcontrol_name attribute to comp tokens
Adds "no_wname_in_kcontrol_name" token, and the associated boolean
attribute to generic component attributes.

If the attribute is set to true for a widget then non of its
associated kcontrols names will have the widget name as a prefix. For
example "gain.2.1 Post Mixer Analog Playback Volume" becomes just
"Post Mixer Analog Playback Volume".

Signed-off-by: Jyri Sarha <jyri.sarha@intel.com>
2023-08-21 13:07:17 +01:00