This will allow to correctly set multiple pipelines state
even if they are allocated on different cores.
ipc4_set_pipeline_state will check if several cores are involved
- set ppl state if only current core requested
- process IPC on another core if only single secondary core requested
- send IDC messages if several secondary cores involved
Signed-off-by: Adrian Bonislawski <adrian.bonislawski@intel.com>
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
According to MU's documentation from the i.MX TRM, setting
the GIRn bit to 1 if already 1 may lead to issuing a second interrupt.
This leads to kernel errors such as:
"reply size (16) exceeds the buffer size (12)"
because of the fact that the MU IRQ is triggered prematurely and
the firmware doesn't have enough time to write the reply. As such,
the host will read the message it has sent to the firmware instead
of its reply.
To fix this, make sure that GIRn is set to 0 before setting it 1.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
When using buffer_attach() on MediaTek platform after commit 3e3d0cde,
invalidating the dcache of a list can result in DSP panic.
To make sure that cached and uncached access is performed correctly on
Intel DSP implementations, invalidating the cache is necessary only for
INTEL platform. Therefore, adding #if CONFIG_INTEL to make the line
specific to INTEL platform.
Signed-off-by: Trevor Wu <trevor.wu@mediatek.com>
Mark enums that are unused or never implemented as deprecated since they
will never be implemented as IPC3 is legacy.
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
Fix the comments of align_frame_cnt and align_shift_idx to
make them more clear and understandable.
Signed-off-by: Andrula Song <andrula.song@intel.com>
Pull in following rimage changes:
aa0ac9eae6 rimage.c: fix bug where -p requires a new
and ignored parameter
Signed-off-by: Andrey Borisovich <andrey.borisovich@intel.com>
In last time copier code split, it split multi-endpoint copy and
module copy with commit: e424b87, source buffer consume was missed,
added it back with this PR.
Fixes:#7979
Signed-off-by: Baofeng Tian <baofeng.tian@intel.com>
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Calling zephyr_ll_task_cancel() for a task which was actually never
scheduled results later in panic in zephyr_ll_task_done().
The fix makes zephyr_ll_task_cancel() do nothing for tasks which were
only initialized but never scheduled.
Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com>
Commit 05871a16de ("pipeline2.0: add source/sink api to
audio_stream") added two new fields to `struct audio_stream`:
struct audio_stream {
+ struct sof_source source_api;
+ struct sof_sink sink_api;
and because `struct audio_stream` is part of `struct comp_buffer`
we see an increase of `struct comp_buffer` size from 256 to 384.
With this modification, i.MX mixer use case goes out of memory:
c0 dma-trace src/lib/alloc.c:765 ERROR failed to alloc 0x180 bytes zone 0x4 caps 0x1 flags 0x0
c0 dma-trace src/audio/buffer.c:51 ERROR buffer_alloc(): could not alloc structure
This is not ideal. Anyhow, it was necessary for new source/sink API.
Fix this by increasing the number of 512-byte heap blocks to 32.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
Pipeline data is allocated in cached space. This workaround
prevents from accessing another core pipeline data when
calculating latency.
Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com>
To support pipelines connection between cores, ipc4_create_buffer()
must be able to create buffer shared between source and sink
components created on different cores. ipc4_create_buffer() requires
source component obs size. When both source and sink components
created on same core, ipc4_create_buffer() is executed on that core,
otherwise it is executed of core 0 (IPC processing core). So for the
case when source and sink components are created on different cores
comp_get_attribute_remote() is used to receive source obs size.
Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com>
bind/unbind handler must be called from core on which component was
created.
When both source and sink components are created on same core,
bind/unbind IPC is processed on that core. However, when connected
source and sink are on different cores, IPC is processed on core 0.
Hence comp_bind_remote() and comp_unbide_remote() is added to call
bind/unbide from proper core.
Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com>
Utilize the posix build so that as many components as possible can be
built at once. Also build a bunch of `default n` components as well.
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
Add support to specify an overlay file to use with the fuzz script and
another flag to build without fuzzing
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
This will allow the fuzzer to probe deeper into the code while also
allowing CI to build test the adapter.
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
Add a stub for the Waves library for the fuzzer to build against. This
will also improve build tests in CI.
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
Now that we have the ability to do a posix builds we can start working
towards a "make allyesconfig" equivalent. One limitation though is that
we cannot build what we don't have, in this case 3P blocks. This commit
adds a toplevel config for 3P adapters to switch to a stub file so they
can still have their builds validated. These will also be eventually
enabled in the fuzzers.
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
This reverts commit 4849a71ada.
The commit has been merged with CI test fail
The test is now failing constantly making CI unusabe
Either CI test or the code requires changes before merging
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
In some error situations the configuration init_data may be NULL, and
in such a situations we should fail gracefully and not crash. Also adds
check that the IPC message is of correct size and of correct type.
Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
This patch adds to component prepare() handling of IPC4 module
init parameters and set of sink parameters with audio format
from there.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch replaces legacy component API with new module adapter
API. There are no changes to functionality.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Zephyr uses MP_MAX_NUM_CPUS internally to represent the
number of cores available and consequently to allocate
resources. It is even expected, and checked through assert,
that these two symbols have the same value. Use different
value can lead to an undesired behavior, so lets use
MP_MAX_NUM_CPUS.
Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
- Renoir and rembrandt have the common functionality.
Moving the common code to common folder as per the recommendation from
maintainers and to support future platform's common functionality.
- Remove unused code.
Signed-off-by: SaiSurya, Ch <saisurya.chakkaveeravenkatanaga@amd.com>
- Renoir and Rembrandt have the common functionality.
Moving the common code to common folder as per the recommendation from
maintainers and to support future platform's common functionality.
- Remove unused code.
Signed-off-by: SaiSurya, Ch <saisurya.chakkaveeravenkatanaga@amd.com>
Defined a new frame type SOF_IPC_FRAME_U8 for 8-bit unsigned samples. Added
support for a new format to stream format conversion function and
get_sample_bytes function.
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
The switch supporting various sample formats was missing a default handler,
which caused compilation errors when enabling/adding a new format that is
not supported.
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
The switch supporting various sample formats was missing a default handler,
which caused compilation errors when enabling/adding a new format that is
not supported.
Signed-off-by: Adrian Warecki <adrian.warecki@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>
If there is a compat issue it will show up at build time, also it blocks
stubbing out the library, so remove it.
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>