Add the label "(optional)" in the function documentation for functions
whose implementation by a module is optional. The module adapter checks
whether the function is provided by the module before calling it.
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
The Logger class ia a log wrapper intended for use by IADK loadable
modules. Remove it because it is not needed in the sof.
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
Add the const modifier to system_service structures containing pointers to
shared functions to protect them from accidental modification.
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
Total of 391 commits.
Changes include:
44464c4d4fc drivers: dai: intel: ssp: Introduce DMA control set API
5084decbc46 drivers: dai: intel: ssp: Refactor TLV parsing into a
separate function
230709e4ae6 include: dai: Introduce runtime DAI configuration update API
1497f77cc89 intel: adsp: make SRAM power-off configurable
293fa118df9 intel: adsp: fix firmware image in IMR overwriting
Signed-off-by: Tomasz Leman <tomasz.m.leman@intel.com>
Start moving SoundWire topologies from the shadows into main...
We generate a single topology for RT722-based skews since the link
information is not used in the matching with the machine driver
dailinks. The same topology can be used for link0 or link3 setups.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
This change enables CONFIG_CADENCE_CODEC in the app/stub_build_all_ipc3/4.conf files.
With this, the Cadence Codec component will be included in builds for CI testing.
Signed-off-by: Anne Onciulescu <anne.onciulescu@gmail.com>
Adds channel map parameter to get_convertion_func() to support remapping
conversion functions.
Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com>
When the hardware is able to return a valid number of DMA buffer audio
channels (e.g., extracted from a blob), give the returned number
of channels higher precedence over the number supplied via the base config
params.
Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com>
Adds a set of conversion functions that perform both format conversion
and channel remapping. These are required to swap channels for the device
posture feature.
Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com>
Adds a channel map parameter to conversion functions, allowing for
the introduction of conversions that can handle both format conversion
and channel remapping.
Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com>
Prepare DAI gateway to support channel remapping conversion functions
that can modify number of channels. Consequently, frames, not samples,
should be used for DMA copy bytes calculation.
Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com>
Copier may have multiple sinks connected to different pipelines. While
the copier pipeline might already be running, the sink pipeline has not yet
initialized stream parameters of the buffer connected to copier's sink.
It appears that checking for the sink component state is not enough.
Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com>
The multi-gateway channel copy function and the DAI process function serve distinct purposes.
Although they currently share the same number of arguments of the same type, this similarity
is coincidental and might be changed during future refactoring.
Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com>
If a module contains 0 as its CPC value, the consumption calculation
routine will assign a "safe" maximum value to keep the DSP running at
the maximum clock rate. This works when constructing a pipeline, but
when a pipeline is torn down, returning the maximum clock rate leads
to the clock being reduced to a small value. Fix this by detecting
such cases in pipeline termination code.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Export missing symbols for modular DRC builds and select it as a
module on MTL and LNL. DRC isn't built by default, so we cannot
use CONFIG_LIBRARY_DEFAULT_MODULAR for it.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Add support for LLEXT building to drc. Since multiband DRC calls
functions from DRC, we cannot so far build it if DRC is configured as
a module. In the future it should be possible to build both as
modules and to export symbols between them.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
So far we cannot build identical LLEXT modules under Linux and
Windows, build a monolithic firmware for this test.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
When pipelines are destroyed, component drivers' .reset() and .free()
are called. If those drivers were loaded dynamically their memory is
then unmapped. But logging takes place in a low priority task, so it
is important that no logging is done from those methods.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Maximum instance count cannot be zero, they have to be supplied by
respective modules.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
When ipc4_get_drv() fails to find a driver, it might mean, that the
driver needs to be linked dynamically. Printing an error in such a
case wrongly fails CI testing.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Under windows the Python interpreter has to be called explicitly.
Without it an attempt to execute a Python script fails silently.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Suggested-by: Marc Herbert <marc.herbert@intel.com>
Using S32_LE wastes bandwdith for no good reason, we should use 24
bits on the link to maximize bus efficiency with the 9.6 MHz bus
clock.
There is no need for a kernel-side change, the dailink fixup already
changes the dailink format based on the topology information.
Link: https://github.com/thesofproject/sof/issues/8960
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Setting the sink buffers parameters in the copier_update_params function is
not sufficient. If a sink buffer is attached during copier operation, the
module will not set buffers parameters. Add bind function to configure sink
buffers parameters.
There is no need to configure sink buffers parameters on each copy. We are
assured that they were configured at the time of bind. Remove
ipc4_update_buffer_format from the copier_module_copy function.
Fixes: #9123
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
Sink format can only be set when the sink buffer is not binded. Sink
buffer parameters will be set on binding. Remove redundant code.
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
A data producing component is responsible for setting a sink buffer
parameters. It is not necessary for the copier to override source buffer
parameters. Remove the code responsible for it.
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
Implement actual functionality for perf meas state ipc handling. This
enables changing the state of global performance measurements.
Signed-off-by: Tobiasz Dryjanski <tobiaszx.dryjanski@intel.com>
Implement extended global performance data get ipc which extracts
performance data from MW3
Signed-off-by: Tobiasz Dryjanski <tobiaszx.dryjanski@intel.com>
Implement global performance measurement which measure performance of .copy
functions of multiple components.
Signed-off-by: Tobiasz Dryjanski <tobiaszx.dryjanski@intel.com>
Implement wrapper to extend Zephyr's bitarray by adding a counter for
allocated bits. This bitmap will be used to allocate performance data
entries in memory window 3. Also adds new performance_monitor files.
Signed-off-by: Tobiasz Dryjanski <tobiaszx.dryjanski@intel.com>
Explicit usage of a local variable in a macro is not a
good practice.
Macros changed to use a variable as an argument
+ fix a warning "'flags' may be used uninitialized"
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
This flag enables changes to new pipeline structure,
known as pipeline2_0
It is required for certain new features, like DP_SCHEDULER.
The changes are incremental and at the moment pipeline 2.0
is fully backward compatible with legacy platforms, however
it generates some overhead in data and code, so it is useful to
turn if off if not needed
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
This commit removes all direct calls to ring_buffer (formerly dp_queue)
from the code, replacing with a generic sof_audio_buffer API
Only direct call that stays is creation of ring_buffer, yet it will
soon be replaced also by a buffer factory
Legacy API from ring buffer is also removed, as it should not be used
anymore
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
in pipeline2.0 there's more than one buffer type
to be used for passing audio data from one module
to another. However, each single buffer must provide
same API.
This commit introduces a common API for buffers and
at the same time connects it to ring_buffer.
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
as a follow-up of a prev commit, internal structures
should also be changed accordingly
The commit, however, does not change names of variables
in the code that use struct ring_buffer.
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
dp_queue was created as a buffer to handle
special needs for DP modules.
However, in pipeline2.0 there will be more usecases
for it - as in fact it is a lockless cross-core
cached ring buffer.
This commit does rename dp_queue to more adequate name
It also moves the file to "buffers" directory, a place
for all implementations of buffers in pipeline 2.0
The commit, however, does not change names of structures
because git/github does not handle complex changes like
rename and modification correctly
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
The DRC component was not included to build. This component is used in
upstream HDA generic topology, so must be enabled. See commit
727ad82997 ("Tools: Topology2: Add IIR, FIR, DRC to HDA analog
playback").
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>