Function igo_nr_init() expects a nonzero value for rballoc()
size so this can't be left zero. The value is just something
for stub usage that felt suitable for an unknown.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch converts this component to module adapter API.
- New() becomes simpler init()
- Params() is handled in module adapter, in init()
"mod->verify_params_flags = BUFF_PARAMS_RATE;" replaces
igo_nr_verify_params().
- Rates check in params() is placed to separate function
igo_nr_check_params() to be called from prepare().
- cmd() handler is changed to module adapter client style with
igo_nr_set_config() and igo_nr_get_config().
- igo_nr_process() and igo_nr_copy() are merged to module API
style igo_nr_process() function.
- igo_nr_prepare() sets source and sink align constraints for
processing.
- igo_nr_trigger() is removed, handled by module adapter.
- Changes to support IPC4.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This change avoids with stub library version annoying playback
sound from non-updated sink buffer when the processing ALSA
switch control is enabled. The audio is passed through from
source to sink.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The init code checks for NULL and errors, so need to return
from RTKMA_API_Context_Create() a valid allocated address. The
free is added to RTKMA_API_Context_Free().
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The "sof," as local sources list is not correct. It causes
build fail with x86 testbench when CONFIG_COMP_RTNR_STUB
is set.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
common.h defines the IS_ALIGNED macro, which conflicts with
a Zephyr macro of the same name. Add guards to define it only
if it is not already defined by Zephyr.
Signed-off-by: Yonatan Schachter <yonatan.schachter@gmail.com>
Move sink_list under CONFIG_IPC_MAJOR_4 in order to avoid the following variable unused warning:
$ sof/src/audio/dai-zephyr.c: In function 'dai_dma_cb':
$ sof_dir/sof/src/audio/dai-zephyr.c:259:35: warning: unused variable 'sink_list' [-Wunused-variable]
259 | struct list_item *sink_list;
| ^~~~~~~~~
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
The image header contains a bitfield with flags specifying a image type.
This commit sets correct image type depending on whether firmware or
a loadable module is being signed.
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
This change saves in TGL platform about 13 MPCS, from 83
to 70 MCPS. In MTL platform the saving is 12 MCPS, from 46
to 34 MCPS. The .bss RAM usage increases by 1 kB from
selecting CONFIG_MATH_LUT_SINE_FIXED.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The test function is based on test function for the cordic
sine function. The error tolerance is adjusted to just pass.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds function sofm_lut_sin_fixed_16b(). It was
used earlier in SOF with name sin_fixed() but was remove
at add of Cordic trigonometric library. This sine function
can be used in hot code parts. Due to look-up table usage it
consumes more .bss RAM than cordic version.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Remove unused META definition, below work is done:
1. removed META definition.
2. removed cmocka preproc module.
3. removed cmocka strcheck and debugability module.
With this change, cmocka does not have any dependency on
META programming.
Signed-off-by: Baofeng Tian <baofeng.tian@intel.com>
After the following change:
"copier: add support for windows driver
(383d17a19e)"
aria stopped working properly.
It is necessary to adapt the module
S24_LE format processing
Signed-off-by: Fabiola Kwasowiec <fabiola.kwasowiec@intel.com>
The default "is ready to process" implementation used to look
at a first sink and first source only.
This change makes it to look at all sinks and sources.
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
When printing a missing module UUID, include leading zeros for
easier matching.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Use goto to just to an existing error handling label instead of
freeing memory in place and returning.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
- Use rzalloc() instead of rmalloc() + memset()
- Don't check for NULL before freeing
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Zephyr has a logging module, named "modules" too, use "sof_modules"
to avoid a conflict.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Remove unneeded initialisation and move a variable definition closer
to where it's used.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
The loadable module API needs to support all module-adapter methods,
add all the missing ones.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
The library manager uses a DMA buffer only to receive data via DMA
from the host and to copy it from it once completely to a destination
buffer. With that flow using cached access to the DMA buffer doesn't
accelerate IO but adds complexity and can slow it down instead.
Switch over to using uncached access.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
The code here never really worked right. The module base config
values weren't saved by the core layers, so querying the attribute
returned nothing. A few components have been modified with a whitebox
workaround where they write directly to the basecfg_ext field in the
module_config, but that's not really an API we should want to support.
Get the values from the now-correctly-saved-and-parsed fields the
module init layer has left for us, with considerable code savings and
much less heap thrashing for the temporary copy.
Signed-off-by: Andy Ross <andyross@google.com>
The kernel-provided "base_cfg_ext" data wasn't being handled correctly
by the module adapter layer. These structs (packed wire formats) only
ever lived in the IPC memory. The module would set them on an
"init_data" before calling into driver init, and then clear that
pointer afterwards. That's a critical problem, because the values in
that struct need to be used at pipeline setup time to configure buffer
formats!
Save the data correctly. Also pre-parse it so users don't need to do
byte math on raw buffers and can just use "in/output_pins[]" arrays on
the module_config struct.
Signed-off-by: Andy Ross <andyross@google.com>
This patch adds build of hda-generic development topologies to
test SRC LITE component with all s16/s24/s32 formats
Signed-off-by: Andrula Song <andrula.song@intel.com>
After recent changes, the audio_stream_init_alignment_constants()
routine isn't an "init" step anymore, it sets requirements and can be
called at any time. Rename it to "audio_stream_set_align()" to better
capture its behavior, and rework the documentation to make it clearer
how it works.
Signed-off-by: Andy Ross <andyross@google.com>
Traditionally audio_stream has failed to initialize its computed
alignment fields, forcing components to do this themselves even when
they don't actually have special alignment requirements.
Remove all the code that was merely setting default values, leaving
only a handful of spots with specialr equirements (e.g. eq/area need
to treat pairs of samples, a few others have HiFi-optimized variants
which need SIMD alignment).
Signed-off-by: Andy Ross <andyross@google.com>
As specified, this function was a bit of a booby trap: it has to be
called exactly once, after all other setup that modifies frame size
has been done. If it is called in the wrong order, or not at all, any
consumers of the frame alignment API on this stream will see garbage
data in the computed fields. That's way too much complexity for the
component code that needs to use this tool, especially as the impact
is not in the component itself (e.g. it's a downstream copier widget
with SIMD code that fails).
Instead, preserve the two requirements set by this function in the
audio_stream struct and recompute them any time any of the upstream
values change. That allows this to be safely used from any context.
There's a mild complexity with audio_sink/source layer, which is
written to directly modify the format (it keeps a pointer into
audio_stream of its own) without going through the audio_stream API
itself. There, the framework gives us "on_audio_format_set()"
callbacks on source and sink, so implement it there.
This is a partial fix for Issue #8639
Signed-off-by: Andy Ross <andyross@google.com>
audio_stream_init_alignment_constants() isn't a particularly small
function, isn't used in performance-sensitive contexts, and doesn't
really belong in a header. Move to audio_stream.c for hygiene, and
because it's about to be modified.
Also move the depended-on function audio_stream_frame_align_get(), and
(as it has no consumers outside of audio_stream) remove its
declaration from the header.
Signed-off-by: Andy Ross <andyross@google.com>
It is a general implementation for logging and it doesn't use intel
audio hardware feature like ART counter. 64bits timestamp is needed
for accuracy since the timestamp used by host is beyond 32bits in most
cases.
Signed-off-by: Rander Wang <rander.wang@intel.com>
The default for DEEPBUFFER_FW_DMA_MS is 100, remove the
DEEPBUFFER_FW_DMA_MS parameter set for individual topologies when the value
set is also 100
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
The DeepBuffer stream is D0I3 compatible for some time now on all IPC4
platforms, The CAVS2.5 topologies just did not got updated.
Swap the default for the DEEPBUFFER_D0I3_COMPATIBLE to true.
New, experimental platforms can change this if needed until the feature is
verified.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
The exp_fixed() function is replaced by fast sofm_exp_fixed()
and sofm_db2lin() functions. It saves 40 MCPS, from 123 to 83 MCPS
in a test run in TGL platform.
Signed-off-by: shastry <malladi.sastry@intel.com>
In Zephyr CMakeLists, add exponential source files to facilitate
the compilation of math C and HiFi code.
Signed-off-by: shastry <malladi.sastry@intel.com>
This change allows the fast exponent library to replace
the decibels library for applications like DRC where exponent
function is used in hot code parts.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Signed-off-by: shastry <malladi.sastry@intel.com>
Unused variables from HiFi4/5 were reshuffled and placed in order
to use HiFi3 code. If the variable 'ret' is used uninitialized
whenever the 'if' condition is false, set it to false.
Signed-off-by: shastry <malladi.sastry@intel.com>