This makes sure Zephyr's -fmacro-prefix-map is working and keeps the
builds reproducible when using a recent enough toolchain.
As found in the CONFIG_ASSERT PR
https://github.com/thesofproject/sof/pull/6530#issuecomment-1482330214
this is not true for old Xtensa toolchains.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
This commit introduces support in the CMakeLists.txt of Zephyr for
building SOF for i.MX93 platform.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Get_total_process_data_process is used to get the processed data of
a module when stream is started. It is used to calculate pipeline
latency with the algorithm of subtracting processed data count between
source pipeline module and sink pipeline module. This patch will
calculate consumed & produced data count based on input & output buffer
setting and return produced data count for source module and consumed
data for sink module.
Currently only copier supports this function, now add it to
module_adapter framework to support other modules.
Signed-off-by: Rander Wang <rander.wang@intel.com>
In component.h the eq_iir and mixer have still the old component
API function prototypes. They can be removed as not needed. These
components do not support legacy mode.
Similar update is done to testbench common_test.h. The function
prototypes there are duplicate since they are now available in
component.h.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Catch the additional two warnings below:
warning: too many warnings
warning: cast removes address space
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
When changing pointer type between different sparse address spaces,
the change has to be forced to let sparse know, that this is intended
and to avoid a warning. Fix such type cases in ams.c.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
In the case of ARM64 with GIC, the interrupts are cleared after
the ISR is executed (for reference please see arm_gic_eoi() and
arch/arm64/core/isr_wrapper.S from Zephyr). Thanks to this, we
don't need to clear them explicitly, hence there's no need for
interrupt_clear_mask() to be defined. This commit fixes linkage
problems caused by the fact that interrupt_clear_mask() is not
defined on ARM64.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
In the case of ARM64 with GIC, the interrupts are cleared after
the ISR is executed (for reference please see arm_gic_eoi() and
arch/arm64/core/isr_wrapper.S from Zephyr). Thanks to this, we
don't need to clear them explicitly, hence there's no need for
interrupt_clear() to be defined. This commit fixes linkage
problems caused by the fact that interrupt_clear() is not
defined on ARM64.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
This commit makes sure that all macros used by the SAI driver
are correct in the case of i.MX93's SAI3.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Since i.MX93 doesn't support PM and doesn't have an implementation
for wait_for_interrupt() we need to encase the D3 preparation in
an ifndef block. This commit does exacly so.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Just like IMX8ULP i.MX93's EDMA2 uses a channel multiplexer
to assign a peripheral to a channel. To make the driver work
it's required to write the peripheral's line number to the
CH_MUX register.
This commit also introduces all macros necessary for EDMA2.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Zephyr DMA domain thread should have a higher priority than the
logging thread. Not meeting this criteria may cause problems
such as buzzing noises after resuming a paused stream. This
was the case on i.MX93.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
This commit adds ZEPHYR_DMA_DOMAIN_THREAD_PRIO macro which
holds the value of the thread priority for Zephyr DMA domain.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Make sure users do not misinterpret our single `debug_overlay.conf` file
as some kind of complex and elaborate "debug build" concept. Also save
users who want to see the file a lot of time by naming it directly in
the --help.
Empty layers of indirection are just spurious obfuscation.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
CMake seems to behave differently on Linux and Windows: it generates
different `-I` command line parameters. This results in spurious
`__FILE__` mismatches and non-reproducible builds when using
CONFIG_ASSERT, see example in #7428.
On Windows, '..' seem resolved more often which also seems to convert
forward slashes to backslashes.
They are also less readable and wasting a bit of space. Remove them
using cmake_path(SET ...)
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
By mistake, the lib_manager module used a private manifest header from the
rimage project. It included other private headers. Switched to the public
header.
Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
`drivers: imx: ipc`
Split long line into two short lines
at 135: FILE: src/drivers/imx/ipc.c:135:
"CHECK: line length of 103 exceeds 100 columns"
Modified to match the alignment of the open parenthesis
at 227: FILE: src/drivers/imx/ipc.c:227:
"CHECK: Alignment should match open parenthesis"
Split long line into two short lines
at 309: FILE: src/drivers/imx/ipc.c:309:
"CHECK: line length of 101 exceeds 100 columns"
`drivers: imx: sai`
Modified to match the alignment of the open parenthesis
at 353: FILE: src/drivers/imx/sai.c:353:
"CHECK: Alignment should match open parenthesis"
Signed-off-by: Jian De <jiande2020@gmail.com>
Calculation of SOF_TKN_BUF_SIZE in COMP_PERIOD_FRAMES() macro
led to incorrect results with large period size values.
For example at 48000Hz sampling rate, period size larger than
44739us would be incorrectly calculated.
This happens as m4 eval does arithmetic in 32bit signed values
and multiplication of period size and sampling rate can easily
exceed 2^31.
Fix the issue by splitting the arithmetic in steps that
fit available value range.
Link: https://github.com/thesofproject/sof/issues/7476
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
ARM64's GIC doesn't utilize cascaded interrupts so interrupt_get_irq
will have to return the given INTID.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
This commit removes all occurrences of the soc.h header file
since this is not used. This also fixes build problem on i.MX93
caused by the fact that i.MX93 doesn't have a soc.h.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
SOF got broken for legacy internal driver builds when the host was
merged into the copier. Fix the breakage.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
host_dma_cb() should be static. Also move function description
comments to exported functions instead of their static wrappers.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
In most of the user code buffer control structures should only be
accessed after acquisition, not via their raw pointers.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
--cmake-args is actually safe, just a bit slower. See explanation in
https://github.com/zephyrproject-rtos/zephyr/pull/56671
Fixes unnecessary restriction added by commit 9fb7a607eb
("xtensa-build-zephyr.py: fix -C option so it can support whitespace")
Also warn for overlays because they act the same.
Log the `west config` due to the suggestion to use build.cmake-args and
the recent rimage changes in Zephyr PR 54700
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
This is required by ARM64 platforms as they don't have
an arch/compiler_info.h so the compilation would fail.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
These were added for use with IPC3 but since topology2 is not targeted
for IPC3, there's no need to keep them anymore.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
This has been replaced by num_input_audio_formats and
num_output_audio_formats. So remove the attribute from all components
and mark the token ID as deprecated.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Set byte_align as 1 and frame_align as 1 means no limit on both byte and
frame for this stream. Call audio_stream_init_alignment_constants in
audio_stream_init, set default align info while buffer created. And every
specific component can set its own byte and frame align info in its
prepare function later.
Signed-off-by: Andrula Song <andrula.song@intel.com>
No need for type-casting: void * is compatible with any pointers and
both pointers already have the __sparse_cache annotation. Dropping it
causes sparse warnings.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
NUM_SDW_AMPS refers to how many sdw links are used by the amp pcm.
Rename to NUM_SDW_AMP_LINKS for less confusing.
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
The 24-bit formats defined in topologies will never be used because the
mixin/mixout only support 32-bit format. So remove these audio formats
from the component and pipelines audio format definitions.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Separate the pin index token ID for input/output pin index to avoid
collisions between the two and incorrect pin index parsing in the
kernel.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
GDB debug should only be used when CONFIG_DBG_DEBUG=y. On ARM64
platforms with Zephyr, including this header will cause compilation
errors due to the fact that they don't have an arch/ entry. This
commit fixes this issue by conditionally defining all symbols based
on CONFIG_GDB_DEBUG.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>