Commit Graph

9898 Commits

Author SHA1 Message Date
Laurentiu Mihalcea bcbb85a29e zephyr: wrapper: Conditionally call platform_boot_complete()
Due to the fact that on i.MX93 the host will initialize the
SOF_IPC_FW_READY sequence there's no need to call
platform_boot_complete() at the end of start_complete(). This
will be handled in the IPC3 handler.

This commit makes sure that aforementioned scenario won't
happen for i.MX93 while keeping the flow constant for the
other platforms.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2023-05-02 12:19:11 +03:00
Guennadi Liakhovetski 91dbc05ff3 IPC4: host: remove notifier, call the copier callback directly
Using the notifier between the copier and the host makes little
sense with native Zephyr drivers: it ends up in a direct function
call, but before that it has to look for the correct callback in a
global notifier list. The callback can perfectly be called directly
instead.

With legacy SOF drivers we still need to use the notifier because
that is how SOF DMA drivers trigger the host component. We have to
provide a compatibility callback in the copier for the IPC4 case.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-28 14:43:33 +03:00
Guennadi Liakhovetski cfd877e6c0 notifier: add a type for callbacks
To make sure the same prototype is used for all notifier callbacks
add a typedef.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-28 14:43:33 +03:00
Iuliana Prodan 7a445b8b38 hal: Update parameter type to match xtensa/hal.h
Update parameter type for _xt_atomic_compare_exchange_4()
to match xthal_compare_and_set() from xtensa/hal.h

This fixes "error: passing argument 1 of
'xthal_compare_and_set' from incompatible pointer type"

Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
2023-04-28 14:34:16 +03:00
Iuliana Prodan 68da12b195 ASRC: Update parameter type to match the header
Update parameter type for asrc_initialise() to match those
from header file.

This fixes "error: conflicting types for 'asrc_initialise'".

Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>
2023-04-28 14:34:16 +03:00
Guennadi Liakhovetski 880ee3b202 buffer: add final accessors to struct audio_stream fields
Add read and write accessors for .underrun_permitted and
.overrun_permitted fields of struct audio_stream and convert the code
base to use them.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-28 14:05:58 +03:00
Guennadi Liakhovetski 6afe1ddbc2 buffer: don't access stream internals in buffer_new()
Don't access struct audio_stream internals in buffer_new(), pass
buffer flags to buffer_alloc() instead.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-28 14:05:58 +03:00
Guennadi Liakhovetski d8ce56c59f buffer: add more accessors for setting struct audio_stream fields
Add accessors for setting .frame_fmt, .valid_sample_fmt, .channels
and .rate and convert direct assignments to use them.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-28 14:05:58 +03:00
Guennadi Liakhovetski ec22e4a702 rtnr: fix a left over direct access
Fix a missed direct read of the stream channel count.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-28 14:05:58 +03:00
Guennadi Liakhovetski ffbac0ca6b buffer: add accessors for setting some struct audio_stream fields
Multiple fields in struct audio_stream are only set in the
audio_stream.h header itself, which is valid, and in rtnr.c. Add
accessors to replace the latter operations.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-28 14:05:58 +03:00
Anas Nashif 54c4b88d57 zephyr: use system cache API
Use zephyr cache APIs instead of xtensa specific ones.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2023-04-28 10:37:55 +03:00
Paul Olaru b09d1afabc imx8m: scripts: Add XCC build configuration for Zephyr
This configuration is build tested, builds fine.

Signed-off-by: Paul Olaru <paul.olaru@nxp.com>
2023-04-27 11:07:39 +03:00
Paul Olaru 7f1be246bd imx8x: scripts: Add XCC build configuration for Zephyr
This configuration is build tested, builds fine.

Signed-off-by: Paul Olaru <paul.olaru@nxp.com>
2023-04-27 11:07:39 +03:00
Paul Olaru de884627f8 imx8: scripts: Add XCC build configuration for Zephyr
This configuration is build tested, builds fine.

Signed-off-by: Paul Olaru <paul.olaru@nxp.com>
2023-04-27 11:07:39 +03:00
Chao Song fabeb63842 Topology2: Add mtl-rt711-l0-rt1316-l23-rt714-l1 support
This topology could be used by MTL SDW RVP with 3-in-1
SDCA codec board, or other hardware configuration with
the same codec layout:
    SDW0: RT711 Headphone
    SDW1: RT714 DMIC
    SDW2: RT1316 Speaker
    SDW3: RT1316 Speaker

Signed-off-by: Chao Song <chao.song@linux.intel.com>
2023-04-27 10:29:34 +03:00
Chao Song d3e3943bad Topology2: add comment to separate chromebook topology clearly
Add a single comment to separate chromebook topologies
from non-chromebook topologies.

Signed-off-by: Chao Song <chao.song@linux.intel.com>
2023-04-27 10:29:34 +03:00
Brent Lu eff50e4262 pipeline: try to stop active component when reset
When resetting a pipeline, components may be still in active state if
previous pipeline walkthrough of stop trigger aborted due to some
reason. Here we give it a second chance to stop the component before
resetting it. Without doing this, some components like dai could cause
DSP panic because the DMA is still running.

Signed-off-by: Brent Lu <brent.lu@intel.com>
2023-04-27 10:27:16 +03:00
Ranjani Sridharan 0140c43099 topology2: Set the deepbuffer PCM D0i3 compatibility conditionally
Set the deep buffer PCM as D0I3 compatible only for MTL.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2023-04-27 10:25:45 +03:00
Guennadi Liakhovetski 64f011acdb rtnr: fix regression
Earlier commits wrongly used struct audio_stream accessors to read
members of struct audio_stream_rtnr in rtnr_copy_to_sof_stream().
Revert those changes.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-27 10:22:05 +03:00
Tomasz Leman 9632135d33 west.yml: upgrade zephyr to 9028ad5d71
Zepych update: total of 132 commits.

Changes include GP DMA power management changes.

Signed-off-by: Tomasz Leman <tomasz.m.leman@intel.com>
2023-04-26 16:55:10 +03:00
Peter Ujfalusi f599f61311 audio: mixin_mixout_generic: normal_mix: Update src/dst after each copy
The copying part of the functions need to update the src/dst buffer
pointers after each iteration to correctly account for the possible wrap
of the buffer.

This was discovered while doing pause - 1sec_wait - resume - 3sec_wait
cycles and around the 10th iteration audio became 'metallic' sounding.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
2023-04-26 15:04:39 +03:00
Guennadi Liakhovetski eee146bd02 lib-manager: fix compilation breakage
Fix breakage introduced by 32e4f7e27a ("buffer: use an accessor to
read struct audio_stream::end_ptr") which accidentally wrongly used
audio_stream_get_end_addr() to access the .end_addr member of
struct lib_manager_dma_buf.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-26 12:02:05 +01:00
Marc Herbert 34d7baa800 scripts: Dockerfile: re-add TGL toolchain removed by accident
TGL has always been using the `xtensa-cnl-elf` toolchain. That
toolchain was removed by accident when cavs 1.8 support (including
CNL) was removed by massive search/replace commit dc9ba281d7
("platform: remove support for cAVS 1.8 platforms")

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2023-04-26 11:38:10 +01:00
Marc Herbert 0c7db9a58e Revert "scripts/docker-run.sh: run with sudo-cwd.sh"
This reverts commit 80e9c3454a.

This was merged too early, there are still build issues and failures
to solve first, notably issues caused by the now missing
xtensa-cnl-elf-gcc

https://github.com/thesofproject/sof/actions/runs/4789961860/jobs/8518459642
https://github.com/thesofproject/sof/actions/runs/4789961859/jobs/8518459155
etc.

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2023-04-25 12:48:44 -07:00
Fred Oh 80e9c3454a scripts/docker-run.sh: run with sudo-cwd.sh
There is a UID mistmatch and file permission problem. sudo-cwd.sh will
switch id every docker run command.

This can be done like this,
./scripts/docker-run.sh ./scripts/sudo-cwd.sh CMD

But not to make build script, just include sudo-cwd.sh in docker-run.sh.

Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
2023-04-25 15:30:45 +01:00
Fred Oh 05f92cb371 docker: upgrade to ubuntu 22.04 as a base image
Upgrade Ubuntu to latest LTS version, 22.04.
Permission issue has started when UID didn't match with local UID.
As an solution, created high value UID to unmatch local UID.
sof home doesn't have permission for others, so add o+rx permission to
avoid any permission issue when id does not match.

Signed-off-by: Fred Oh <fred.oh@linux.intel.com>
2023-04-25 15:30:45 +01:00
Guennadi Liakhovetski e57883f3c2 buffer: use an accessor to read struct audio_stream::channels
This patch adds audio_stream_get_channels() to read
struct audio_stream::channels and converts all users. Apart from
hiding internals of the structure, it also enforces the use of the
__sparse_cache annotation.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-25 14:59:34 +01:00
Guennadi Liakhovetski f8e4d693b2 buffer: use an accessor to read struct audio_stream::rate
This patch adds audio_stream_get_rate() to read
struct audio_stream::rate and converts all users. Apart from
hiding internals of the structure, it also enforces the use of the
__sparse_cache annotation.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-25 14:59:34 +01:00
Guennadi Liakhovetski a25f098b72 buffer: use an accessor to read struct audio_stream::valid_sample_fmt
This patch adds audio_stream_get_valid_fmt() to read
struct audio_stream::valid_sample_fmt and converts all users. Apart
from hiding internals of the structure, it also enforces the use of
the __sparse_cache annotation.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-25 14:59:34 +01:00
Guennadi Liakhovetski 017b8ebcde buffer: use an accessor to read struct audio_stream::frame_fmt
This patch adds audio_stream_get_frm_fmt() to read
struct audio_stream::frame_fmt and converts all users. Apart from
hiding internals of the structure, it also enforces the use of the
__sparse_cache annotation.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-25 14:59:34 +01:00
Guennadi Liakhovetski 3ab21638cf buffer: remove cache annotations from audio_stream_fmt_conversion()
audio_stream_fmt_conversion() is used both directly with fields from
acquired buffers in its arguments and ordinary local variables. In
the former case the arguments should have cache annotations, in the
latter case it isn't compulsory. A choice has been made to enforce
cache annotations in both cases, which however now becomes an
inconvenience. Revert that by using temporary variables instead of
buffer fields directly.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-25 14:59:34 +01:00
Guennadi Liakhovetski b8233ce791 buffer: use an accessor to read struct audio_stream::free
This patch adds audio_stream_get_free() to read
struct audio_stream::free and converts all users. Apart from hiding
internals of the structure, it also enforces the use of the
__sparse_cache annotation.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-25 14:59:34 +01:00
Guennadi Liakhovetski b667c914c6 buffer: use an accessor to read struct audio_stream::avail
This patch adds audio_stream_get_avail() to read
struct audio_stream::avail and converts all users. Apart from hiding
internals of the structure, it also enforces the use of the
__sparse_cache annotation.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-25 14:59:34 +01:00
Guennadi Liakhovetski 932cf4f73c buffer: use an accessor to read struct audio_stream::size
This patch adds audio_stream_get_size() to read
struct audio_stream::size and converts all users. Apart from hiding
internals of the structure, it also enforces the use of the
__sparse_cache annotation.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-25 14:59:34 +01:00
Guennadi Liakhovetski f1ee4eb3ac buffer: use an accessor to read struct audio_stream::addr
This patch adds audio_stream_get_addr() to read
struct audio_stream::addr and converts all users. Apart from hiding
internals of the structure, it also enforces the use of the
__sparse_cache annotation.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-25 14:59:34 +01:00
Guennadi Liakhovetski 32e4f7e27a buffer: use an accessor to read struct audio_stream::end_ptr
This patch adds audio_stream_get_end_ptr() to read
struct audio_stream::end_addr and converts all users. Apart from
hiding internals of the structure, it also enforces the use of the
__sparse_cache annotation.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-25 14:59:34 +01:00
Guennadi Liakhovetski 7bc69845cc buffer: use an accessor to read struct audio_stream::w_ptr
This patch adds audio_stream_get_wptr() to read
struct audio_stream::w_ptr and converts all users. Apart from hiding
internals of the structure, it also enforces the use of the
__sparse_cache annotation.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-25 14:59:34 +01:00
Guennadi Liakhovetski e3bbd78ee2 buffer: use an accessor to read struct audio_stream::r_ptr
This is the first patch in a series, whose goal is to make struct
audio_stream opaque for its users. Instead of accessing structure
internals we'll add a set of accessor functions.

This patch adds audio_stream_get_rptr() to read
struct audio_stream::r_ptr and converts all users. Apart from hiding
internals of the structure, it also enforces the use of the
__sparse_cache annotation.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2023-04-25 14:59:34 +01:00
Serhiy Katsyuba d2336bbe4b ipc4: copier: Fix memory leak
Adds forgotten buffer_free() for copier multi_endpoint_buffer.

Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com>
2023-04-25 14:32:58 +03:00
Marc Herbert 322d2cc08f xtensa-build-zephyr.py: log environment changes only for `west build`
As recommended by Andrey in #7364, reduce the noise and log the
environment only for the `west build` command - unless the log level is
increased with `-v`, then log for every command.

Also fix a very unlikely corner case where the caller would invoke
execute_command() with `check=None` and get the opposite effect.

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2023-04-25 13:34:06 +03:00
Nishal Kulkarni c8253afad9 common.h: Prevent error when compiling with Clang
Clang requires fields to have a constant size and does not
support variable length array in structure causing build to
to fail at compile_check()

This change selects the compatible version of ALIGN_UP and
ALIGN_DOWN macro when compiling with Clang.

Signed-off-by: Nishal Kulkarni <nishalkulkarni@gmail.com>
2023-04-25 13:31:57 +03:00
Marcin Szkudlinski 730bbcad13 ipc4: raise error when DP cannot be created
when a DP module is to be created when DP
is disabled, module creation is rejected with
a message in log

Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
2023-04-25 13:23:28 +03:00
Marcin Szkudlinski 85b4cdd6c5 kconfig: limit DP scheduler to ACE
DP scheduler is intended to work on MTL and
future platforms only - has not been tested on
any legacy.

Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
2023-04-25 13:23:28 +03:00
Marc Herbert 6f9f2ee28e .github/zephyr: build with the debug overlay and CONFIG_ASSERT
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>
2023-04-25 13:22:41 +03:00
Marc Herbert 4286bb3ee1 .github/zephyr: west update with new, faster git --filter-tree:0
Twice faster than shallow clones without any of the git describe or
other hassle. More info in
https://github.com/zephyrproject-rtos/west/issues/638

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2023-04-25 13:22:41 +03:00
Laurentiu Mihalcea 2b30188f1b zephyr: CMakeLists.txt: Add support for building SOF for i.MX93
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>
2023-04-25 13:04:58 +03:00
Laurentiu Mihalcea aff453e4c8 app: boards: Add new board configuration for i.MX93
This commit introduces a new board configuration for i.MX93.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2023-04-25 13:04:58 +03:00
Rander Wang 98a3f67b10 module_adapter: add get_total_process_data_process support
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>
2023-04-25 10:45:28 +01:00
Seppo Ingalsuo b3d1583f3c Audio: Component: Update to component.h module adapter conversions
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>
2023-04-25 10:39:50 +01:00
Marc Herbert d345c56e71 parse_sparse_output.sh: add "removes address space" and "too many"
Catch the additional two warnings below:

warning: too many warnings
warning: cast removes address space

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2023-04-25 11:52:23 +03:00