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>
There're no differences for SSP and SoundWire TPLGs between
MTL and LNL, we can reuse MTL TPLGs for LNL.
Signed-off-by: Keqiao Zhang <keqiao.zhang@intel.com>
This is additional HW board: No SDW_DMIC connection
SDW0: rt713 Jack codec
SDW1: rt1316 smart amp l
SDW2: rt1316 smart amp r
Signed-off-by: Mac Chiang <mac.chiang@intel.com>
The num_output_pins was set for pass-through path but missed in normal
path. Without it Linux kernel driver wouldn't set second output pin
format for dai copier which connects smart amp and gain module.
Signed-off-by: Rander Wang <rander.wang@intel.com>
This patch changes all cavs-nocodec.conf based topologies to
use exponential Windows fade curve_type in gain components. It
is done to ensure the ramp gets tested after change of gain
curve_type default to linear.
The gain in included deep buffer playback pipeline (hw:0,31) and
in mixer pipeline (hw:0,41) are not changed because they are used
also in normal topologies. Also in capture direction DMIC raw
(hw:0,10) remains curve_type 2. Other gains are curve_type 1
Windows fade.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
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>
Use input_output_format/output_audio_format explicitly. Additionally,
this patch introduces the used of the CombineArrays feature in the
topology2 compiler to generate multiple audio format objects from the
attribute array combinations.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Setting the in bit depth for the second audio format in the
host-gateway-capture object results in resetting the channel count to 2.
The in_bit_depth is set to 32-bit by default for all audio formats in
host-gateway-capture class already.
Fixes: 7a11e27bf2 ('topology2: host-gateway-capture: Replace audio_format objects')
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
The first playback PCM is for AEC mic input via SSP0 LBM. The second
playback PCM is for AEC reference via SSP2 LBM. The first capture
PCM is the AEC output.
The AEC (mockup) can be run and tested with the topology like
this:
$ aplay -Dhw:0,0 mic_clip.wav &
$ aplay -Dhw:0,2 ref_clip.wav &
$ arecord -Dhw:0,0 -f dat -d 10 output.wav
With AEC mockup version output.wav is mix of microphone
and reference.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
name
rt713 and rt1713 are in different SoundWire links. So, no DAI type will
be appended to DAI link name. We should use default stream name in
the topology.
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
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>
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>
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>
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>
The initial main-page contains a short introduction into topology2
Doxygen documentation, and an inline reference to automatically
generated contents page.
The commit also adds more advanced cmake rules to track all document
dependencies.
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
This commit adds topology2-generate-contents.sh the script to generate the
contents page that will be inline included to the mainpage added in the next
commit.
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
Includes all *.conf files under topology2 to the Doxygen documentation
and points directly to mainpage Doxygen source.
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
This is the second version of topology2 to C Doxygen filter. Its far
from perfect, but it should get us started.
The purpose of the translated C code is not to document actual
topology2 code, but only to provide anchors for Doxygen to form a
network of links through which to navigate the topology sources and
find the pieces of related Doxygen documentation. The filter also
creates separate pages of the original code and adds links next to the
pages in the C struct definition, instance documentation and their
possible Doxygen documentation.
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
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>
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>
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>
The echo-ref pipeline ie the DAI capture pipeline involving the speaker
codec is already part of the list of pipelines that gets set up and
triggered when the DMIC capture starts. Therefore, there's no need for
the echo-ref PCM to explicitly start the reference capture. So, remove
it and connect the codec DAI to the google-rts-aec module directly.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
We need to care about audio user experience and peak MCPS
usage in production topologies.
The alsabat test is disturbed by the longer ramp so the
change can be reverted from nocodec topologies. Those
topologies are never used by end users. Also the peak MCPS
mitigation is not relevant for test topologies, as long as
higher MCPS is not triggering error reports. The curve
duration is restored without explicit set to the default 20 ms.
Fixes: #8238
Fixes: d0d74a477f
("Tools: Topology2: Change in capture gain
curve_duration to 50 m")
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
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>
All existing SSP-based topologies use the audio cardinal clock,
*EXCEPT* Bluetooth related ones. This doesn't make much sense, let's
use the same clock source for all SSPs.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
These topologies are no longer supported by mainline firmware
code for these platforms. The stable-v2.2 branch continues to
support these targets.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
This change increases the ramp duration from 20 ms to 50 ms. It
lowers the peak load of peak volume component due to longer same
gain value blocks. The internal update rate for gain becomes 250 us
instead of 125 us. The longer fade-in ramp also conceals better
possible analog capture start transients.
This changes for 4ch capture for gain.11.1 in sof-hda-generic-4ch.tplg
from
CPU_PEAK(MAX) = 21.95
PEAK(MAX)/AVG(AVG) = 7.51
to
CPU_PEAK(MAX) = 9.07
PEAK(MAX)/AVG(AVG) = 3.12
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
use dynamic for all the adl and rpl topologies except 3p(waves,DTS),
excluded Dell sdw topologies which are not tested.
Signed-off-by: Vamshi Krishna Gopal <vamshi.krishna.gopal@intel.com>
Adding sof-rpl-rt711-l0-rt1316-l12.tplg. The topology is the same
as sof-rpl-rt711-l0-rt1316-l12-rt714-l3, but without local mic (rt714).
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
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>
When we added the flags to disable SSP0 and SSP1 on the UP2, we took the
shortcut of just removing the PCMs in topology but left the pipelines
and widgets in the topology in. While this works in practice to prevent
us from testing those SSPs, the right way is to also remove those
pipelines also when the SSPs are disabled.
This stops tplgtool2.py from complaining constantly about this
inconsistency since https://github.com/thesofproject/sof-test/pull/1079
which made the sof-test verify-tplg-binary.sh fail every time:
```
tplgtool2.py sof-glk-nocodec.tplg
ERROR: No pcm id=0 for widget=PCM0C
ERROR: No pcm id=1 for widget=PCM1C
ERROR: No pcm id=0 for widget=PCM0P
ERROR: No pcm id=1 for widget=PCM1P
ERROR: tplgtool2.py returned 4
```
This change affects only sof-apl-nocodec and sof-glk-nocodec.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Add a new topology sof-adl-rt5650 for ALC5650 which supports SSP0 for
headset and SSP1 for speakers since this codec implements two I2S
interfaces.
DAI format changed to mclk: 24.576MHz, bclk: 3.072MHz, sample bits:
24-bit to avoid using ASRC function on codec side.
Signed-off-by: Brent Lu <brent.lu@intel.com>
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>
NUM_HDMIS is set to 3 as default value for MTL platform. SPK_ID and BT_ID
are modified based on this change in the target cmake file.
Signed-off-by: Yong Zhi <yong.zhi@intel.com>
Signed-off-by: Uday M Bhat <uday.m.bhat@intel.com>
This patch adds 8 - 192 kHz playback and capture SRC to nocodec
topologies such sof-tgl-nocodec.tplg. It enables testing of SRC
component with IPC4 via the SSP loopback in the nocodec topologies
E.g. Play random noise at 44.1 kHz and capture it as 32 kHz. The
SSP loopback runs internally at 48 kHz.
aplay -Dhw:0,2 -f S32_LE -c 2 -r 44100 -d 10 -t raw /dev/random
arecord -Dhw:0,2 -f S16_LE -c 2 -r 32000 -d 10 /tmp/recording.wav
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
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>
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>
Add an new topology adl-max98360a-da7219.tplg for DA7219 headphone
codec with MAX98360A speaker amplifier on ADL boards. The MCLK
frequency is set to 24.576MHz to use PLL bypass mode and avoid the
WCLK locking problem on earlier platforms.
Signed-off-by: Brent Lu <brent.lu@intel.com>
The multiband_drc_coef_default.m4 is updated to what the current
setup tool example_multiband_drc() exports.
Another blob for pass-through is added with emphasis and all bands
processing disabled. Such blob is useful when headphone and
speaker paths are shared. Headphone mode should use pass-through.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
In this patch, audio_format is deprecated, and use
input_audio_format/output_audio_format instead.
Correct the IIR control bytes naming, and make it the
same with other HDA topology.
Signed-off-by: Chao Song <chao.song@linux.intel.com>
This patch removes non-practical sof-hda-generic-loud topologies and
generates instead IIR and IIR+FIR topologies for headphone/speaker
path for no-DMIC/2ch-DMIC/4ch-DMIC platforms. The IIR and FIR are
by default programmed for pass-through without any processing.
sof-hda-generic-iir.tplg
sof-hda-generic-iir-2ch.tplg
sof-hda-generic-iir-4ch.tplg
sof-hda-generic-iir-fir.tplg
sof-hda-generic-iir-fir-2ch.tplg
sof-hda-generic-iir-fir-4ch.tplg
The custom topologies can be used e.g. copying them to
/lib/firmware/intel/sof-tplg-custom/ and by adding
to /etc/modprobe.d/sof.conf the following lines with desired
configuration un-commmented.
#options snd_sof_pci tplg_filename="sof-hda-generic-iir.tplg" tplg_path="intel/sof-tplg-custom"
#options snd_sof_pci tplg_filename="sof-hda-generic-iir-fir.tplg" tplg_path="intel/sof-tplg-custom"
#options snd_sof_pci tplg_filename="sof-hda-generic-iir-2ch.tplg" tplg_path="intel/sof-tplg-custom"
#options snd_sof_pci tplg_filename="sof-hda-generic-iir-fir-2ch.tplg" tplg_path="intel/sof-tplg-custom"
#options snd_sof_pci tplg_filename="sof-hda-generic-iir-4ch.tplg" tplg_path="intel/sof-tplg-custom"
#options snd_sof_pci tplg_filename="sof-hda-generic-iir-fir-4ch.tplg" tplg_path="intel/sof-tplg-custom"
The patch contains a fix for pipeline with FIR to undefine the
related macros to avoid them to possibly impact another FIR instance.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
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>
Generate compress and PCM mixer topology file for i.MX8 and i.MX8MP
with wm8962 codec based on sof-imx8-compr-wm8960-mixer.
Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
Combine topology files for i.MX8MP and i.MX8 using different
variables like SAI_INDEX and CODEC.
Based on CODEC use the proper STREAM_NAME.
Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
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>
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>
Introduced var WAVES_SPK_ONLY (depend on WAVES) for specifying the
topology requested to apply Waves module on Speaker pipeline only
(not on Heaadphones).
Signed-off-by: Pin-chih Lin <johnylin@google.com>
The default values should be "passthrough" since the pipeline
mixout-gain-efx-dai-copier-playback.conf applies them this way:
IncludeByKey.EFX_FIR_PARAMS {
"passthrough" "include/components/eqfir/passthrough.conf"
}
And IIR similarly.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch makes similar change to pipeline as done earlier
for mixout-gain-dai-copier-playback.conf. The 24/32 bit formats
are deleted as unnecessacy. The audio format definition for
DRC is changed to similar style as for copier and gain.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds DRC component to EFX pipeline. The DRC is very
useful for speaker output to enhance loudness and reduce
speaker distortion in loud playback.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Follows after:
214f98378 ("smart amp : Do not use DYNAMIC topology")
which makes DYNAMIC undefined during smart amp tplg pipeline pcm/dai config due
to the use of volatile Kcontrols.
This commit applies the same on sof-eq-iir-dts-codec-smart-amplifier.m4 which
is used for (DTS + smart amp) projects.
Signed-off-by: Pin-chih Lin <johnylin@google.com>
Dell SKU0C87 devices have below config:
SDW0: RT714 DMIC
SDW1: RT1318 Speaker
SDW2: RT1318 Speaker
Add topology support in this patch for Dell SKU0C87 devices.
Signed-off-by: Chao Song <chao.song@linux.intel.com>
This patch adds build of tplg1 development topologies
sof-tgl-nocodec-crossover-2way.tplg
sof-tgl-nocodec-crossover-4way.tplg
The tplg2 development topology version is
sof-tgl-nocodec-crossover-2way.tplg
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
DYNAMIC topology should not be used for pipeline with volatile
Kcontrols.
Hence ensuring the flag is un defined before processing
smart amp related PCM and DAI configs
Suggested-by: Sridharan, Ranjani <ranjani.sridharan@linux.intel.com>
Signed-off-by: Sathya Prakash M R <sathya.prakash.m.r@intel.com>
DMIC now is controlled by two variables, PASSHTHROUGH
and NUM_DMICS, we should consider the values for both
variables to decide the inclusion of DMIC pipelines,
routes, widgets, etc.
Fixes: #7931
Signed-off-by: Chao Song <chao.song@linux.intel.com>
Due to sof_mtl_rt1019_rt5682 machine driver without BT_OFFLAD
bit and support 3 HDMI devices, so make the BT_OFFLOAD option
and subsequentially mapping SPK_ID from 7 to 6.
Signed-off-by: Mac Chiang <mac.chiang@intel.com>
Consider the variant projects with/without bt offload feature
so include BT_OFFLOAD pipelines as an option if needed
Signed-off-by: Mac Chiang <mac.chiang@intel.com>
When PASSTHROUGH is true, the topology generation throws this error:
ALSA lib dapm.c:247:(tplg_build_routes) undefined source widget/stream
'host-copier.0.playback'
using the pcm_id 2 used for the host copier fixes the issue.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
This patch builds new development topologies
sof-hda-benchmark-generic-<tgl/mtl/lnl>.tplg to evaluate performance
of a set of playback components.
The topology for PCM0P playback is
host-copier.0 --> gain.1.1 --> mixin.1.1 -->
mixout.2.1 --> aria.2.1 --> gain.2.1 --> mixin
mixout.3.1 --> dai-copier.HDA
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Add test topology for muxing 2 pipelines into 1 with SSP dai and
capturing the result from loopback.
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
is true
Currently, we add the 2nd sdw amp feedback unconditionally. It will lead
to an issue when aggregated apms don't support feedback function.
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Use the input_audio_format/output_audio_format objects explicitly.
Also, add the 4ch audio format in the class definition as this is only
instantiated once in dmic-generic.conf and needs support for both
formats.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Rename all remaining kcontrols to follow the new naming scheme that is
already used for all mixers.
This commit changes kcontrol names as follows:
cavs-nocodec.conf:
'smart_amp_init' -> 'Main Playback and Port0 smart_amp_init'
cavs-mixin-mixout-hda.conf:
'4 Main capture Iir Eq' -> 'Analog Capture IIR Eq'
dmic-generic.conf:
'DMIC0 capture Iir Eq' -> 'DMIC0 Capture IIR Eq'
sdw-jack-generic.conf:
'4 Main capture Iir Eq' -> 'Jack In Capture IIR Eq'
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
Rename mixers according to the new naming convention by referring to
the associated PCM name and the position in the topology. Create
defines for PCM names so the name is only in one place. Adds a define
for the capture PCM too. The commit also updates the PCM names while
adding the defines.
This produces following changes, on PCM names:
'Jack in' -> 'Jack In'
'Jack out' -> 'Jack Out'
and on mixer names:
'1 Playback Volume 0' -> 'Pre Mixer Jack Out Playback Volume'
'2 Main Playback Volume' -> 'Post Mixer Jack Out Playback Volume'
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
Rename mixers according to the new naming convention by referring to
the associated PCM name and the position in the topology. Create
defines for PCM names so the name is only in one place. The commit
also updates the PCM names while adding the defines.
This produces following changes, on PCM names:
'Jack in' -> 'Jack In'
'Jack Out' -> 'Jack Out'
and on mixer names:
'Src Playback Volume' -> 'Pre Mixer Jack Out Playback Volume'
'Main Playback Volume' -> 'Post Mixer Jack Out Playback Volume'
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
Rename mixers according to the new naming convention by referring to
the associated PCM name and the position in the topology. Create defines
for PCM names so the name is only in one place.
This produces following changes:
'Playback Volume 1' -> 'Pre Mixer Headset Playback Volume'
'Playback Volume 3' -> 'Pre Mixer Speaker Playback Volume'
'Main Playback Volume 2' -> 'Post Mixer Headset Playback Volume'
'Main Playback Volume 4' -> 'Post Mixer Speaker Playback Volume'
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
Rename SSP0, SSP1, and SSP2 playback volumes according to PCM names
they are connected to. Define the PCM names as variables so the name
can be changed in a single place.
This is how the change will look like:
'gain.1.1 Playback Volume 1' to
'gain.1.1 Pre Mixer Port0 Playback Volume'
'gain.14.1 Main Playback Volume 14' to
'gain.14.1 Post Mixer Port0 Playback Volume'
'gain.3.1 Playback Volume 3' to
'gain.3.1 Pre Mixer Port1 Playback Volume'
'gain.4.1 Main Playback Volume 4' to
'gain.4.1 Post Mixer Port1 Playback Volume'
'gain.5.1 Playback Volume 5' to
'gain.5.1 Pre Mixer Port2 Playback Volume'
'gain.6.1 Main Playback Volume 6' to
'gain.6.1 Post Mixer Port2 Playback Volume'
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
Rename mixin and mixout EFX Analog Playback Eqs to follow the same
naming scheme as the mixers.
As a result of this commit Eqs are renamed in sof-hda-efx-generic.tplg
as follows:
'eqfir.2.1 2 Main playback Fir Eq' to
'eqfir.2.1 Post Mixer Analog Playback Fir Eq'
and
'eqiir.2.1 2 Main playback Iir Eq' to
'eqiir.2.1 Post Mixer Analog Playback Iir Eq'
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
Rename mixin and mixout EFX Analog Playback volumes. Rewrite the names
of the mixers to better reflect their position in the topology.
As a result of this commit mixers are renamed in sof-hda-efx-generic.tplg
as follows:
'gain.1.1 1 2nd Playback Volume' to 'gain.1.1 Pre Mixer Analog Playback Volume'
and
'gain.2.1 2 Main Playback Volume' to
'gain.2.1 Post Mixer Analog Playback Volume'
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
Adding support for the alderlake products which doesn't have no ssp
amplifier but need to support HDMI audio playback and HDMI-in capture
via I2S
Signed-off-by: Balamurugan C <balamurugan.c@intel.com>
Adding support for the product which doesn't have no ssp amplifier
but need to support HDMI audio playback and HDMI-in capture via I2S.
Signed-off-by: Balamurugan C <balamurugan.c@intel.com>
buffer_size_max of PCM cap for deepbuf is configured for 65536.
Quadruple the buffer_size/period_size to allow aplay to use larger
buffer size.
Signed-off-by: Yong Zhi <yong.zhi@intel.com>
Some topologies have the same file name specified as nhlt debug output
so they will override others. Change the names to be unique.
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
There is pinmux on MTL platform to optionally enable DMIC,
add this config to the build and run the pipeline on core 1.
Signed-off-by: Yong Zhi <yong.zhi@intel.com>
Use the input_audio_format and output_audio_format objects instead
and fix the number of input/output formats to 1.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This is to allow CI to test a simple multicore playback case on
MTL/TGL/ADL: SSP0 playback on core 0 and SSP2 playback on core 1.
Capture uses core 0 only atm. More multicore usage will be
introduced later.
Signed-off-by: Mengdong Lin <mengdong.lin@intel.com>
Rename "DMIC" PCM name to "DMIC Raw" in the generic dmic topology fragment.
The PCM is on the DMIC patch without any processing beyond gain and IIR EQ,
thus the "Raw" extension.
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
Rename cavs-nocodec capture PCMs. The current PCM names are confusing. These
should be better names for them. The former
"ssp-capture" is now "Port0 2nd Capture",
"DMIC0 Raw" is now "DMIC SFX1", and
"DMIC0 Raw 2" is now "DMIC SFX2".
The PCMs in question have extra gains in the path to simulate processing.
Also the mixer name is changed to compensate for the matching "Capture"
substring in the end of the PCM name, that is part of the mixer name,
to avoid "Capture Capture" tautology.
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
Yet another permutation. This needs to be back-ported to 2.2 releases
Closes: https://github.com/thesofproject/linux/issues/4399
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
When all components of a pipeline are scheduled on the same core, use
the pipeline's core_id attribute to set the core_id for all the
components in it. Also, remove the default core_id in class definitions
so that it doesn't take priority over the value passed from the pipeline
object.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
These are mandatory for both directions as they are used to set the DMA
buffer format.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Change the naming from dai-copier.<copier_type>.<pipeline_id>.<instance>
to dai_copier.<copier_type>.<stream_name.<direction>.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
In preparation for changing the name of the DAI copier which will make
them a bit longer, reduce the token name lengths by removing the
sof_tkn_ prefix. This is required because the header names in topology
have a 44 character limit and with a long name like:
dai-copier.SSP.NoCodec-0.playback.sof_tkn_comp.uuid, the limit will be
hit. Removing the sof_tkn_ prefix will reduce the number of characters
in the tuple name headers.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Rename generic DMIC mixer name. Define the associated PCM name in a
common place and refer to that name on the mixer name.
On cavs-tgl-nocodec.tplg is seen a following mixer name change:
'gain.13.1 DMIC0 Capture Volume 1' > 'gain.13.1 DMIC Capture Volume'
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
Rename SSP0 Aux Playback stream volume before mixing. Use the
associated PCM name in the mixer name. This change affects nocodec
topologies and appears on sof-tgl-nocodec.tplg as a following change:
'gain.21.1 Playback Volume 8' -> 'gain.21.1 Pre Mixer Port0 Aux Playback Volu'
Unfortunately the new mixer name does fit into the space reserved for
it, but it should get fixed once we get rid of the "gain 21.1"-prefix.
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
Rename cavs-nocodec.conf DMIC0 volumes. Define variables for the
associated PCM names and refer to them in the mixer names. The changes
shown in sof-tgl-nocodec.tplg are:
'gain.18.1 Capture Raw Volume 1' > 'gain.18.1 Post Demux DMIC0 Raw Capture Volu'
'gain.19.1 Main Capture Volume 3' > 'gain.19.1 Pre Demux DMIC0 Raw Capture Volum'
'gain.20.1 Capture Raw Volume 2' > 'gain.20.1 Post Demux DMIC0 Raw 2 Capture Vo'
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
Rename SSP0 capture related volumes. Define a variable for PCM name
and refer to it in the mixer names.
Using sof-tgl-nocodec.tplg the changes are:
'gain.8.1 Host Capture Volume' > 'gain.8.1 Pre Demux Port0 Capture Volume'
'gain.7.1 Main Capture Volume 1' > 'gain.7.1 Post Demux Port0 Capture Volume'
'gain.17.1 Main Capture Volume 2' > 'gain.17.1 Post Demux ssp-capture Capture Vo'
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
Rename SSP0, SSP1, and SSP2 playback volumes according to PCM names
they are connected to. Define the PCM names as variables so the name
can be changed in a single place.
This is how the change will look like in sof-tgl-nocodec.tplg:
'gain.1.1 Playback Volume 1' > 'gain.1.1 Pre Mixer Port0 Playback Volume'
'gain.2.1 Main Playback Volume 2' > 'gain.2.1 Post Mixer Port0 Playback Volume'
'gain.3.1 Playback Volume 3' > 'gain.3.1 Pre Mixer Port1 Playback Volume'
'gain.5.1 Playback Volume 5' > 'gain.5.1 Pre Mixer Port2 Playback Volume'
'gain.6.1 Main Playback Volume 6' > 'gain.6.1 Post Mixer Port2 Playback Volume'
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
Yet another missing topology
This needs to be back-ported to the 2.2 stable branch for releases
Closes: https://github.com/thesofproject/linux/issues/4380
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Widget type snd_soc_dapm_out_drv and snd_soc_dapm_output will be treat
as virtual widget and be ignored in sof topology in kernel.
We need to set type = output or out_drv in topology when it is a virtual
widget.
Fixes: 3835846836 ("topology2: sdw-amp-generic: Show all aggregated DAIs on the graph")
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Since IncludeByKey uses Regular expressions to validate text match,
the expression [1-1000] does not filter number between 1 to 1000 as
intended. For example, DEEPBUFFER_FW_DMA_MS=0 results in matched while
DEEPBUFFER_FW_DMA_MS=5 returns not found, fix with regex flavor pattern.
Signed-off-by: Yong Zhi <yong.zhi@intel.com>
When there are aggregated amps, the topology includes a DAI copier for
each aggregated DAI. But, since the second DAI is not connected to
anything in topology, it doesn't show up in the graph. So, add a virtual
widget and connect it to the aggregated DAI and the gain module to show
its existence in the graph. When parsing the topology, the kernel
ignores all routes that contain a virtual widget at any end of the
route.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Replace the use of the generic dai-copier class with the ALH specific
DAI copier and pipeline class.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Create a new class for ALH because they are different from the other DAI
types with DAI index being irrelevant. So, it would need a new naming
scheme that's more meaningful. For ex: dai-copier-ALH.SDW1-Playback.0
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Rename mixin and mixout Analog Playback volumes. Rewrite the names of
the mixers to better reflect their position in the topology.
As a result of this commit mixers are renamed in sof-hda-generic.tplg.
'gain.1.1 1 2nd Playback Volume' becomes
'gain.1.1 Pre Mixer Analog Playback Volume'
and
'gain.2.1 2 Main Playback Volume' becomes
'gain.2.1 Post Mixer Analog Playback Volume'
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
It is now handled by the host-copier class. Renaming the copier class to
dai-copier and modifying its naming convention will be done in the
follow up patches.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Replace the generic copier with host-copier in the class definition and
the instances.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Replace the generic copier with host-copier in the class definition and
the instances.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Replace the generic copier with host-copier in the class definition and
the instances.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Replace the generic copier with host-copier in the class definition and
the instances.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Replace the generic copier with host-copier in the class definition and
the instances.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Replace the generic copier with host-copier in the class definition and
the instances.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Replace the generic copier with host-copier in the class definition and
the instances.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Replace the generic copier with host-copier object in the pipeline class
definition and all its instances.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
The BCLK was incorrect for the loopback (LBM) configuration
for BT A2DP (48kHz 2ch 16bit), leading to incorrect playback/capture
speed.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Add sof-tgl-rt712 support. rt712 is a multi function codec which
shpports headset, amp, and dmic functions.
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
DAI copiers now support multiple sinks. So revert the temporary
workaround in the cavs-nocodec topology.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Add the host and IO gateway pipelines when the passthrough option is
chosen and connect them.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
In preparation for adding copier-copier pipeline, make the processing
pipelines conditional. There is no change in functionality or
definitions. This is purely to make it easier to exclude the
pipelines/pcms/routes from the final topology.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Add the host and io gateway pipelines when the passthrough option is
chosen and connect them directly.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
In preparation for generating simple copier->copier pipelines, add an
option to make the processing pipelines conditional. There is no change
in functionality or definitions. This is purely to make it easier to
exclude these pipelines/pcms/routes from the final topology.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
create another topology to test multicore since Currently we have done
too much work in cavs-nocodec and CI test will be failed for main branch
is not ready for multicore feature.
Signed-off-by: Rander Wang <rander.wang@intel.com>
We assume sdw jack is always there in a sdw topology. This commit
makes it be optional to deal with the sdw amp only case.
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Add a module copier between the DAI copier and gain in preparation for
optimizing the single endpoint DAI copiers. This optimization will
temporarily make multiple sinks unsupported with DAI copiers. This
feature will be re-introduced in a follow up PR and the module copier
will be removed then.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
It would be better to make these dependedent on NUM_DMICS. Something to
improve in a follow up PR.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Generate MIXER topology file for i.MX8 and i.MX8MP with wm8962 codec
based on sof-imx8-wm8960-mixer.
Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
Combine mixer topology files for i.MX8MP and i.MX8 using different
variables like RATE, SAI_INDEX, CODEC.
Based on CODEC and SAI_INDEX use the proper DAI_CONFIG or STREAM_NAME.
Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
Combine base topology files for i.MX8MP and i.MX8 using different
variables like RATE, SAI_INDEX, CODEC.
Based on CODEC and SAI_INDEX use the proper DAI_CONFIG or STREAM_NAME.
Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
Generate SRC topology file for i.MX8 and i.MX8MP with wm8962 codec
based on sof-imx8-src-wm8960.
Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
Combine SRC topology files for i.MX8MP and i.MX8 using different
variables like RATE, SAI_INDEX, CODEC.
Based on CODEC use the proper DAI_CONFIG or STREAM_NAME.
Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>