Prefer to use source components direction, rather than dai direction when
setting pipeline components direction. Accept first direction set in
pipeline. This properly handles
host_copier -> module -> host_copier pipelines.
Signed-off-by: Krzysztof Frydryk <krzysztofx.frydryk@intel.com>
while simultaneous playback and internal mic capture usecases
are running, there is a case where dmic driver was clearing the
playback interrupt.This might cause noise in playback or no audio
in speaker.Done changes to clear only dmic interrupt status only
in dmic irq handler.
Signed-off-by: Balakishorepati <balaKishore.pati@amd.com>
Group together the Cadence main Kconfig option with the options related
to various Cadence based codecs.
This is only a visual fix.
Signed-off-by: Paul Olaru <paul.olaru@nxp.com>
When module adapter is enabled, it is best to keep the new related
options next to it, rather than one option after that.
Signed-off-by: Paul Olaru <paul.olaru@nxp.com>
Deprecate the usage of circular buffer check while doing convert, and
use 2-way and 4-way xtensa instructions first to optimize the converter
functions, and process the left samples one by one to avoid potential
risk of memory access overrun. Here are the results:
Optimize pcm_convert_s16_to_s24 and save about 38% cycles;
Optimize pcm_convert_s24_to_s16 and save about 25% cycles;
Optimize pcm_convert_s16_to_s32 and save about 39% cycles;
Optimize pcm_convert_s32_to_s16 and save about 40% cycles;
Optimize pcm_convert_s32_to_s24 and save about 38% cycles;
Optimize pcm_convert_s24_to_s32 and save about 47% cycles;
Signed-off-by: Andrula Song <xiaoyuan.song@intel.com>
Fill in cfg.rate to be used by zephyr native drivers as rate is not
always present in ipc config.
Signed-off-by: Krzysztof Frydryk <krzysztofx.frydryk@intel.com>
Fix the memory overrun risk of odd samples to be processed.
Since the 2-way xtensa instruction would always process 2
samples and there would be risk of memory overrun at the
boundary of buffer.
Signed-off-by: Andrula Song <xiaoyuan.song@intel.com>
Added glue logic to integrate with module adapter
the loadable modules developed under Intel
IADK Framework.
Signed-off-by: Jaroslaw Stelter <Jaroslaw.Stelter@intel.com>
IADK based modules uses two interfaces to communicate with
base firmware:
- ProcessingModuleInterface;
- SystemServices.
Implementation of both with C++->C wrappers are added in
these files. Additionally system_agent component is
responsible for integration of both communications path
after module loading.
Signed-off-by: Jaroslaw Stelter <Jaroslaw.Stelter@intel.com>
Add header files with definitions needed to build wrappers
for run time integration of 3rd party modules developed
with Intel IADK framework.
Note: file naming and localization is kept from IADK Framework
to be able to integrate or also rebuild and integrate original
3rd party modules without their code modifications.
Signed-off-by: Jaroslaw Stelter <Jaroslaw.Stelter@intel.com>
These defines need to be included in C++ wrappers for
ProcesingModuleInterface defined in Intel IADK based
3rd party modules. Move it to separate file to not include
whole sof stuff there.
Signed-off-by: Jaroslaw Stelter <Jaroslaw.Stelter@intel.com>
Add a new component attribute COMP_ATTR_BASE_CONFIG to retrieve the base
config from the modules instead of using ipc4_comp_get_base_module_cfg().
Also, implement the get_attribute API for all the components that support
IPC4.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
When using simple_copy for components like volume, there is no need to
allocate intermediate sink buffers. So, move the check before the
calculation for sink buffers size.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Since volume component uses the module interface, vol_data should be
accessed module_get_private_data() instead of comp_get_drvdata().
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Since we do not know the size of the IPC payload, just pass the pointer
to the mailbox data and let me module handle it during it's init. No
need to copy the data into the module config.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Instead of acquiring and releasing buffers locally multiple times,
do that once for the .prepare() method.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Instead of acquiring and releasing buffers locally multiple times,
do that once for .copy() and .params() methods.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Instead of acquiring and releasing buffers locally multiple times,
do that once for .copy() and .prepare() methods.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Instead of acquiring and releasing buffers locally multiple times,
do that once for the .copy() method.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Instead of acquiring and releasing buffers locally multiple times,
do that once for .copy(), .params() and .prepare() methods.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Instead of acquiring and releasing buffers locally multiple times,
do that once for .copy() and .params() methods.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Instead of acquiring and releasing buffers locally multiple times,
do that once for .copy() and .prepare() methods.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
The config name was changed in zephyr to INTEL_ADSP_TIMER to accommodate
non-cavs platforms. Align with upstream zephyr so we can deprecate it in
zephyr.
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This script had been rewritten to python xtensa-build-zephyr.py
script and is no longer used in CI.
Due to changes to sof processes related to Zephyr integration
this script will no longer be maintained.
Signed-off-by: Andrey Borisovich <andrey.borisovich@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>
The condition statement is wrong in set_pipeline_state() when handling
SOF_IPC4_PIPELINE_STATE_RESET cmd.
Signed-off-by: Libin Yang <libin.yang@intel.com>
Add missing `ALL` keyword so a bare `make` or `ninja` without any
argument runs doxygen by default instead of doing nothing at all. There
is a single target so really no reason not to build it. It's not
required anymore to know the secret word `make doc`.
Note this CMakeLists.txt is not included by any other CMakeLists.txt
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
sof-docs/Makefile used to require building doxygen inside the `sof/doc/`
sources. This was a very bad idea, in-source builds have been
discouraged by CMake since forever. It made it very hard to clean CMake
files in `sof/doc/` (`make clean` does obviously NOT deletes CMake
files)
gitignore was being enrolled to cover up this CMake crime. This was
de-hardcoded 2 years ago in sof-docs commit 2d664c658c14 and much more
recently sof-docs stopped recommending in-source builds in sof-docs
commit 9788c4be32cf. So there's no need to ignore in-source CMake files
any more. If someone still makes the mistake of building sof/doc/
(or anything else) in-source, the lack of .gitignore will now help them
clean up.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
Add a new helper to update the consumed bytes in the input stream
buffer and the produces bytes in the output stream buffer.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
And macros for converting bytes to samples and samples to bytes and use
it in all components to avoid duplication.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Use the module interface instead of the comp drv interface for the
EQ IIR component.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@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>
Introduce a new helper function to set the blob to be used with the
module adapter set_configuration op. When all modules are converted to
use the new op, the comp_data_blob_set_cmd() can be removed.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Remove overlays as they are the same board configurations available in
app/.
Keep common overlays and change script to reflect those changes.
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Make the main SOF app part of SOF, where it belongs. No need for any
overlays (which just duplicated the sample .conf anyways) and one place
to build everything.
This now does not depend on zephyr samples, which have a different
purpose completely.
Signed-off-by: Anas Nashif <anas.nashif@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>