The use of Zephyr LOG_*() API in SOF is breaking compilation.
Replace it with with the native trace logging until a proper
fix is available.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Add a generic header type and update the mailbox and command handler
logic to accept generic headers. Generic header type should also support
the existing compact message API and expand it to other platforms.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
We need to make sure that the local buffer has enough room to hold
the output of the processing.
This means that for each type of decoding algorithm we need to know
the maximum possible output size and skip processing if local buffer
size is less than that.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
This codec_adapter interface will return the number
of samples expected after decoding one compressed input frame.
This is optional. For codecs which do not care, this will return 0.
Do not care means that the number of input samples is equal with the
number of output samples after processing is done.
This will be used in the next patch to determine if the local output
buffer has enough space to copy the decoded samples.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
The atomic code is implemented in zephyr. When sof is used as
a zephyr module, there is no need to reimplement atomic.
The modification here is to solve the problem of repeated
definition of atomic related content.
Signed-off-by: Yang XiaoHua <yangxiaohuamail@gmail.com>
In some situations the domain clear routine might encounter
a case, when the number of clients is decremented and 0,
as such, a subsequent subdivision will result in an integer underflow.
Signed-off-by: Slawomir Blauciak <slawomir.blauciak@linux.intel.com>
With SDMA2 in place now it is shared by both A and HiFi core
- this breaks 8MP EVK + WM8960 topology. Remove SDMA2 so that
SDMA2 remains assigned to A core and SDMA3 assigned to HiFi core
as it was initially planned.
Suggested-by: Paul Olaru <paul.olaru@nxp.com>
Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
Do not reset component status in the case of xrun.
An irrecoverable xrun will lead to the pipeline being
stopped by the host and resetting the status will result
in an error stating invalid current state during the STOP
trigger.
Also update the unit test to retain the same state during an xrun.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Don't try to pack the ring buffer to the very last byte so we don't
split (and lose!) trace events across the end and start of the
buffer. The logger on the receive side does not support such
re-assembly.
Note this was never noticed because the logger tends to silently (!)
discard garbage like this, addressed in other commit(s).
Also switch to memset() and memcpy_s()
Fixes commit 271c75aa71 ("debugability: Fix potential buffer overflow
in mbox traces")
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
This makes the display of the mailbox ring buffer log much less
confusing. It should not happen with the DMA trace but will behave the
same in case something goes wrong.
Before this commit the only clue that wrapping had happened was a NaN in
the delta column (instead of the negative value).
The "other?" is because the start of the mailbox is sometimes corrupted,
or the timestamp goes sometimes back at boot for no obvious reason. In
other words this new separator is useful to highlight bugs too.
Absolute mode -e 0 with this commit:
TIMESTAMP DELTA C# COMPONENT LOCATION
[22598174808] ( 11) c0 ipc src/ipc/....
[22598174824] ( 15) c0 ipc src/ipc/....
[22598443257] ( 268433) c0 dma-trace src/trace/....
[22598443271] ( 14) c0 dma-trace src/trace/....
[22598443286] ( 14) c0 dma-trace src/trace/....
[22598943257] ( 499971) c0 dma-trace src/trace/....
--- negative DELTA: wrap, IPC_TRACE, other? ---
[22430943257] ( 0) c0 dma-trace src/trace/....
[22530943257] ( 100000000) c0 dma-trace src/trace/....
[22542943257] ( 12000000) c0 dma-trace src/trace/....
[22542943271] ( 14) c0 dma-trace src/trace/....
[22542943285] ( 14) c0 dma-trace src/trace/....
Relative mode -e 1 with this commit:
TIMESTAMP DELTA C# COMPONENT LOCATION
[ 3080783.6] ( 11.4) c0 ipc src/ipc/....
[ 3080799.1] ( 15.5) c0 ipc src/ipc/....
[ 3349232.5] ( 268433.4) c0 dma-trace src/trace/....
[ 3349246.8] ( 14.3) c0 dma-trace src/trace/....
[ 3349261.2] ( 14.4) c0 dma-trace src/trace/....
[ 3849232.4] ( 499971.2) c0 dma-trace src/trace/....
--- negative DELTA: wrap, IPC_TRACE, other? ---
[22430943257.0] ( 0.0) c0 dma-trace src/trace/....
[100000000.0] (100000000.0) c0 dma-trace src/trace/....
[111999999.5] ( 12000000.0) c0 dma-trace src/trace/....
[112000013.9] ( 14.4) c0 dma-trace src/trace/....
[112000028.2] ( 14.3) c0 dma-trace src/trace/....
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
XT_ROUND_S is available only when you include option of
"Xtensa's single precision FPU option (scalar)".
IF current DSP includes optional vector FPU (single precision).
FIROUND.S (with appropriate RoundMode state set) followed by
TRUNC.S can be used to emulate Xtensa scalar FPU’s ROUND.S, CEIL.S and
FLOOR.S instructions."FIROUND.S", does round, but no scaling.Result
still in float format.Use TRUNC.S to scale it and truncate as necessary.
Signed-off-by: Yang XiaoHua <yangxiaohuamail@gmail.com>
This reverts commit cd2444adbf.
Reverting this to unblock the CI runningon tgl-nocodec-ci platform.
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
SOF registers IRQ handlers dynamically, therefore disabling
support for dynamic interrupts for SOF builds doesn't make
much sense. However, this can be used to at least increase
compile-time testing coverage and potentially enable
applications, not using dynamic interrupt registration.
BugLink: https://github.com/thesofproject/sof/issues/4044
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Commit b3f195e92a ("zephyr: fix build with recent file name
changes.") partially fixed a regression, caused by 4e436f8570
("ipc: split out ipc functions into separate files.")
partially. This patch completes the fix.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
we are setting the value but have paths that don't use it and always set
on paths that do use it, lets remove the double write.
Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
Increase the count of the runtime heap 256 Bytes block on apollolake to
satisfy the buffer requirement of the new implemented dynamic DAI config
feature.
Fixes: 6c2cdffd02 ("dai: dai_config refinement")
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Make BT offload m4 generic for platforms that supports it.
User needs to provide id number for pipe/link/pcm and hw config.
I2S config for BT SCO:
16 bit samples, 1 slot TDM, no padding
19.2Mhz MCLK, 256/128kHz BCLK, 16/8kHz fsync
Frame-sync length 1 cycle ("DSP_A" mode)
Codec clk in primary mode
For BT A2DP:
16 bit samples, DSP_A protocol
2 slot TDM, no padding
38.4Mhz MCLK, 1.536Mhz BCLK, 48kHz fsync
Codec clk in secondary mode
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Signed-off-by: Jaska Uimonen <jaska.uimonen@linux.intel.com>
Signed-off-by: Yong Zhi <yong.zhi@intel.com>
Add macro to restrict channel number of PCM capabilities, this will
allow channels_min to be configurable. The default behavior is
not changed with this patch.
Signed-off-by: Yong Zhi <yong.zhi@intel.com>
When CONFIG_LIBRARY is enabled, but the architecture that
exists in sof is not enabled, the "PLATFORM" variable in
the zephyr\CMakeLists.txt file is empty, resulting in an
error in the include path.
The modification here is to get the correct include
path under this condition
Signed-off-by: yxh <yangxiaohuamail@gmail.com>
Use the right header file to fix the compilation
error when building with probes enabled.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Add "hw_params" callback in order to provide the
stream information like stream rate, number of channels
and format to DAI IP driver.
Signed-off-by: Viorel Suman <viorel.suman@nxp.com>
Allow building SOF with Zephyr with Xtensa platforms other than
cAVS.
BugLink: https://github.com/thesofproject/sof/issues/4046
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Allows the mocks to be built only for xtensa GCC. i.e a build test only.
Running on qemu requires more work.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Allows the mocks to be quickly run on the host with full access to host
debug and development tooling.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Add missing "break" so the -e option stops spilling on the -f precision
option. Fixes commit 53ce8b9d9f ("logger: new relative timestamps
option, relative to first entry seen"). Since that commit the -e option
was wrongly assigned to the precision too.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
This is cleanup of the dai_config logic to make it more robust.
The host side should send _DAI_ONFIG IPC before trigger start, it can be
at:
a. topology parsing and pipeline initialization stage, or
b. before hw_params, send _DAI_CONFIG according to runtime params.
For both #a and #b, the configured dai will be stored in the new added
dai_data.dai_config, then set at the start of .params(), while the DMA
channel will be requested later at .prepare() and freed at .reset().
There is no need for the host side to send DMA_CHAN_INVALID to ask for
freeing the DMA channel anymore, if the host side keep sending this,
it will be ignored since the dd->chan is already freed at .reset().
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Reduce the number of functions we mock and use the real functions where
we can. This brings in more runtime code so will increase the test
coverage.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Decouple the IPC ABI major version from pipeline creation. This moves
struct sof_ipc_pipe_new from the pipeline and replaces it with it's
members (saving 8 bytes as no header is needed).
Add new feature specific pipeline APIs to configure pipeline at creation.
Additionally align testbench and UTs to API change.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
ipc_msg_send() and ipc_schedule_process() are IPC generic and hence can
be moved to ipc-common.
No code changes, only moves.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
comp_new() and dependencies are all specific to the IPC ABI MAJOR,
move them to IPC helper.
No code changes, move only.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
ipc_comp_new() and ipc_comp_free() are ABI specific so move to
ABI handler. Code move only, no changes.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
The m4 ifelse parameters using defn() are not working as expected.
If more than 3 parameters are passed to SSP_MULTI_CONFIG_DATA(),
the values are not correctly passed.
Fix this by removing defn() and correctly quoting the whole
ifelse section.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>