Fix a confusing mistake high-pass -> low_pass and typo. It's
only a user help text change for "help stdlpf".
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
With the release of RTNR version 20220728,
period for capturing pipeline requires at least 5ms.
This commit set 5ms period for RTNR in
MT8195 topology.
Signed-off-by: Ming Jen Tai <mingjen_tai@realtek.com>
log and linear are not supported with IPC4. Use no_fade and fade
instead and set the default to fade.
This should fix the following error seen with volume prepare():
volume: comp:9 0x60003 volume_prepare(): invalid cd->ramp_func
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This patch fixes the upper frequency for distortion plus noise
measurement. The min(fs1, fs2) leaves part of upper band unmeasured
and gives a too good looking THD+N performance figure when output
rate is higher than input rate. The proper way is to measure the
(near) full output rate bandwidth.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The test is treated passed if there were no failed cases. The fix in
this patch is to force one failed case if both failed and passed counts
are zeros. Then the upper level test scripts/host-testbench.sh reports
correctly the test fail.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Fixes this error:
```
No platform found in name "sof-rpl.ri"; unknown memory layout.
```
... and shows the Memory Layout.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
Duplicated dai index results to module initialization
faiure in multi-stream test. Dai 2 should be used by
stream nocodec-2.
Signed-off-by: Rander Wang <rander.wang@intel.com>
2 small changes required:
- Stop calling sys.exit(1) in case of error not to exit the importer
- Change EraseVars() to return the checksum value instead of printing
it. Move the print() to the main() function
This is required by the new sof-bin tests that compare signed with
unsigned binaries; submitted in
https://github.com/thesofproject/sof-bin/pull/105
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
It's now possible to rebuild just only one modified topology without
rebuilding all of them from scratch.
Building topologies v2 has two steps:
1. concatenation of abi.conf with topo.conf
2. run alsatplg on the concatenation
Concatenation step 1. was wrongly implemented at configuration time, not
at build time. So when the topology source of step 1 (topo.conf) was
modified, the dependency of step 2 (= the concatenation) was not
affected and the topology was not rebuilt.
Fix this by moving the concatenation to build time.
Fixes commit 308a24a92b ("topology2: Add build support")
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
This makes it possible to find stuff in the output of `ninja help`.
Zero effect on the build artefacts.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
This commit lets user to set data blob from host.
For example:
$ amixer -Dhw:0 controls | grep RTNR
numid=47,iface=MIXER,name='RTNR10.0 rtnr_bytes_10'
numid=48,iface=MIXER,name='RTNR10.0 rtnr_data_10'
numid=49,iface=MIXER,name='RTNR10.0 rtnr_enable_10'
$ sof-ctl -Dhw:0 -n 48 -b -s ./preset.bin
A new empty data control added to the topology will be used to send the
blob.
Model handler is now used for transferring the blob data.
Signed-off-by: Ming Jen Tai <mingjen_tai@realtek.com>
Code Refine
The increase of non-32bit aligned blob sizes needs to be removed
because it can cause mismatch of blob binary header vs. actual
size. Instead error if blob size is not multiple of four bytes.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds initial version of MFCC setup tool setup_mfcc.m. It
outputs a configuration topology macro file that matches the current
Matlab concept code. The configuration can be tested in testbench
with the supplied scripts run_mfcc.sh and decode_ceps.m.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds basic macros needed for MFCC in testbench and in
developmemnt topologies for hda-generic-2ch and up2. The
configuration blob in this matches the reference Matlab code
as configured to match Pytorch default MFCC.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This topology is used for i.MX8QXP/i.MX8QM with baseboard
to enable both cs42888 and wm8960 codecs.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
This reverts commit e31c7abeeb.
This caused most tests to fail on sh-tglu-rvp-nocodec-ci-02
in daily run 15919, see some more errors in logs shared in
initial PR #6318 and new issue #6367
FW reported error: 113 - Invalid destination queue (pin) ID provided
ipc error for msg 0x45000004|0x6
sof_ipc4_route_setup: failed to bind modules copier.SSP.8.1 -> gain.7.1
I don't know why this failed and I did NOT test this revert, however:
- This topology change is apparently the only thing that changed
compared to the day before.
- The error message seems very much related.
- Other people seem to agree.
- According to Ranjani, this feature is not urgent.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
This time the target is to make the demuxer more modular so that it is
not coupled with file reading operations and it is easy to use
alsa-lib directly.
Signed-off-by: Jyri Sarha <jyri.sarha@intel.com>
This updates documentation to reflect that now param id is only 2 bytes
followed by 2 bytes codec id.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
The allocated packet should accommodate the header, the data, and the
checksum. The header size was missing from the condition from the
beginning, even if its there in realloc parameter. The bug should be
harmless waste of cycles thou.
Signed-off-by: Jyri Sarha <jyri.sarha@intel.com>
The sync_word_at() only checks for two things, if the len parameter is
greater than sizeof(uint32_t) and if the memory pointed p parameter
holds PROBE_EXTRACT_SYNC_WORD value. Now that the available bytes is
checked just before sync_word_at() call, the whole function starts to
look a bit pointless.
Signed-off-by: Jyri Sarha <jyri.sarha@intel.com>
Drop IPC3 probe DMA framing and use IPC4 framing for IPC3 mode
too. This change simplifies the code quite a bit. After this change
both the SOF firmware and sof-probe demux tool should be updated at
the same time.
Signed-off-by: Jyri Sarha <jyri.sarha@intel.com>
The MTL support added conditional build for topology2 based on CONFIG_CAVS
or CONFIG_ACE.
This is wrong for several reasons:
There is not ace directory present
The Kconfig system is not used when building topologies, so we are ending
up not building topology2 files at all.
There is no reason why CAVS and ACE topologies should be exclusive.
Fixes: 784bce763c ("mtl: Added meteorlake platform to the build system")
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Added new mtl platform to xtensa-build-zephyr.py.
Added ace directories to cmake files.
Added ACE to kconfig.
Add Meteorlake platform to be built with Zephyr under
CONFIG_ACE_VERSION_1_5 flag.
Signed-off-by: Andrey Borisovich <andrey.borisovich@intel.com>
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
Signed-off-by: Konrad Leszczynski <konrad.leszczynski@intel.com>
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Signed-off-by: Tomasz Leman <tomasz.m.leman@intel.com>
Signed-off-by: Rafal Redzimski <rafal.f.redzimski@intel.com>
Signed-off-by: Adrian Bonislawski <adrian.bonislawski@intel.com>
Currently lp_mode setting is not included by topology binary
since lp_mode is not defined as a attribute. This patch adds
it in pipeline.
Signed-off-by: Rander Wang <rander.wang@intel.com>
Code can now include <rtos/alloc.h> and uses thinly wrapped Zephyr
native for most uses. Wrapping can be removed over time.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
When series of tests are run, only last result with same component is
saved. Make unique output filename. For now adding bits per sample
at the end of file, all the logs can be saved.
Ideally datetime string would be good. I keep it as FIXME.
Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
fulltest param to control quick chirp test only or full test
including all quality tests.
As minor clean up, unused parameter in thdnf_mask() and test_run_process()
is removed.
Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
No functional change. Set common function indentation and add comment
sections for better readability.
Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
Code can now include <rtos/wait.h> and uses native Zephyr 64
cycle API instead of SOF version.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
The xargs option `-I/--replace` hardcodes max lines `-L 1`. In other
words, it always splits the input line by line and ignores whitespace
delimiters inside each line. Initial xargs commit
d0f4aba934 ("topology: speed up topology build") used `--replace`
after `-n/--max-args=1` which was silently ignored by xargs version
4.7.0. Now xargs 4.8.0 prints the following warning:
xargs: warning: options --max-args and --replace/-I/-i are mutually
exclusive, ignoring previous --max-args value
Remove the ignored `-n 1` to remove the warning.
I compared the outputs before and after this commit and they're exactly
the same.
There's an extra twist. The same xargs command also uses the
`-d/--delimiter=,` option which makes xargs ignore newlines and
"translates" any max-line `-L` option to `--max-args`; including the `-L
1` max implied by `--replace`. This twist does not make a difference:
any max-line or max-args is always overridden by `--replace` whether
`--delimiter` is used or not.
Of course this entire xargs script is re-inventing (C)Make/ninja that
provide build parallelism for free and much more... I digress.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
No runtime semantic change. Use C library when RTOS uses
C library otherwise use own C library calls.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
No functional runtime change, but changes to rtos partitioning and the
layout of headers .
This patch creates RTOS specifc header paths and updates spinlock.h
and kernel.h to show the new usage. Other headers will incrementally follow.
It reuses the current zephyr topleve directory and creates a new
toplevel xtos directory for xtos specific files.
Due to the mixing of RTOS, driver and library headers at the top level include
directory it was necessary to create rtos specific header directories i.e.
src/include/rtos-xtos
src/include/rtos-zephyr
These RTOS include directories will eventually contain RTOS specific headers
whilst common logic and structures will be placed in non RTOS directories.
This will also mean
"#include <sof/spinlock.h>"
will become
"#include <rtos/spinlock.h>"
and will allow easier visualisation of where and why RTOS headers are being used.
This will help to eliminate cross usage of headers between RTOSes.
Subsequqnt patches will move more headers and rtos specific wrppaer
source files into rtos specific locations.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
With the release of RTNR version 20220728, period for capturing pipeline requires at least 5ms.
Periods setting for 16KHz capturing pipeline is also removed since RTNR is currently running in 48KHz capturing pipeline only.
Signed-off-by: Ming Jen Tai <mingjen_tai@realtek.com>
Tool to stream data from Linux SOF driver "mtrace" debugfs
interface to standard output. Plain "cat" is not sufficient
as each read() syscall returns log data with a 32bit binary
header, containing the payload length.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
This is another tplg_parser and testbench update on the road to provide
further flexibility around supporting new modules and IPC versions.
There will more to follow.
Changes are mostly mechanical code movements i.e. moving testbench related code
to the testbench, splitting the files into per module/component files and
making some functions static and public.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
An IPC4 widget may support multiple I/O queue. Queue ID is
required during widget binding in route setup.
This patch adds sink_pin_binging and src_pin_binding classes
for multiple I/O queue support.
For widget requires special pin(queue) binding, sink_pin_binding
or src_pin_binding should be defined in the widget object. So
that the kernel knows which pin to use during widget binding
by parsing topology.
Note that pin binding should be defined for all sink/source pins
or for none. Even if there is only one sink pin requires special
pin binding, pin binding should be defined for all sink pins, and
for pins that are not used, give the value "NotConnected". This rule
applies to source pins, too.
Example: smart_amp widget has two sink pins and one source pin,
and its feedback sink pin requires special pin binding, so we have to
define sink_pin_binding objects within smart_amp object like this:
Object.Base.sink_pin_binding.1 {
# the main sink pin is connected to host for playback data
sink_pin_binding_wname "copier.host.1.1"
}
Object.Base.src_pin_binding.2 {
# the feedback sink pin is connected to capture dai for codec feedback.
sink_pin_binding_wname "copier.SSP.2.1"
}
In this example, smart_amp is connected to host and DAI directly,
it is also possible to be connected to host and DAI indirectly (with
gain or other widget in the middle).
Signed-off-by: Chao Song <chao.song@linux.intel.com>
These two tokens will be used by the kernel to decide the
supported number of sink/source pins, thus to allocate
correct widget queue id in route setup.
These two tokens are mandatory for IPC4 widgets, because
the default value in Linux kernel is zero, which is invalid
for queue id allocation.
Signed-off-by: Chao Song <chao.song@linux.intel.com>
Restores ability to compile on Windows with MSYS.
Fixes commit dcf0577a77 ("logger: allow starting before the driver is
loaded")
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
This patch adds script tools/tune/fft/export_twiddle.m. Since
the data in original twiddle.h differs by one LSB in few
items the file is replaced with one generated with the script.
The identifier 32 is added to header name and variables names
as preparation to add 16 bit FFT version.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Remove mt8186 unused topologies.
We use sof-mt8186 on our demo board, sof-mt8186-mt6366-rt1019-rt5682s
and sof-mt8186-mt6366-da7219-max98357 will no be used anymore.
Signed-off-by: Chunxu Li <chunxu.li@mediatek.com>
Fixes: #5323
The v1.2.6 requirement was a lie the whole time because alsatplg v1.2.6
does not have any `-I` option. The truth was: un-released alsa-utils
from git was required. The check for v1.2.6 was an approximation good
enough for many users but not for everyone, see for instance #5323.
Now that alsa-utils v1.2.7 has been released we can stop lying:
https://github.com/alsa-project/alsa-utils/commit/7d934f3142549
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
We add a new i.MX8MP topology which will use the compress API for PCM
capture. This topology is mainly used for testing.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
We add a new i.MX8MP topology which will use the compress API for PCM
playback. This topology is mainly used for testing.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
We add a new i.MX8Q(M/XP) topology which will use the compress API for
PCM capture. This topology is mainly used for testing.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
We add a new i.MX8Q(M/XP) topology which will use the compress API for
PCM playback. This topology is mainly used for testing.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
We want to be able to create topologies for the case of
compress capture. This change will enable us to do so.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
This change will allow us to prepare for adding a new macro
for the case of compress capture.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Identify non-audio probe streams and write them out with ".bin"
extension and without the RIFF WAVE header.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Modify code to correctly handle probe streams where sync word
can occur at any byte boundary, and where probe packet size may
not be aligned to 32bit word size.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
After commit:
5763c74bf4 ("codec_adapter: Remove setup config from module data")
we no longer setup config bytes in codec adapter control bytes.
So, we need to remove ca_config bytes and fix payload size. This
didn't introduce any bug because this is the default
CA_SETUP_CONTROLBYTES. Each topology uses a custom control bytes
which overrides this default values.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
This patch allows to test SRC with all 16/24/32 bit formats
in UP-squared device. Without this patch only 16 bit is
supported.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
setup config data was removed with commit
5763c74bf4 ("codec_adapter: Remove setup config from module data")
update documentation to reflect this.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
We apparently missed quite a few platforms with SSP1, and SSP5 is also
needed for APL/GLK.
One day we'll have a better way to add topologies, but so far it's
brute-force combinatorial addition. Oh well.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Don't fail immediately when the driver is not loaded. Use inotify
instead to wait for /sys/kernel/debug/sof/[e]trace to appear.
This makes it possible to start before the driver is loaded which
reduces considerably the chances of missing early logs.
Fixes a small part of https://github.com/thesofproject/linux/issues/3275
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
Open /sys/kernel/debug/sof/fw_version _after_
/sys/kernel/debug/sof/[e]trace because reading the former is optional
and the latter is not.
So when the driver is not loaded, we get the same (missing trace) error
trace message whether we use the -n option or not.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
Patch a0ff2bb277 added field .gain to configuration data for
src_generate() but the previous generator scripts were not
updated to set it. This patch fixes in them the error about
undefined gain by setting it to previous -1 dB default.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch updates the SRC tool to export same guidance for
Doxygen as added by a previous patch for coefficients
header files. The added comments to begin and end are:
/** \cond GENERATED_BY_TOOLS_TUNE_SRC */
/** \endcond */
The impacted headers remain identical so they don't need update.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
For some reason we added DMIC-based topologies for all platforms
except GLK and APL.
This should be back-ported to 2.2 stable.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Add support for loading the process components by UUID. This needs a
modification in the IPC3 helper to modify the ipc data pointer to
address followed by the UUID in the component extended data.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
In the earliest design, mclk is turned on in set_config() and never
turned off. The behavior is modified in this commit:
d5840a9200 ("ssp: move mclk request/release to pre_start and post_stop")
Now the mclk is enabled only during audio streaming so some codec may
pop. This commit adds the always-on behavior back as an new feature.
Signed-off-by: Brent Lu <brent.lu@intel.com>