Commit Graph

12033 Commits

Author SHA1 Message Date
Bard Liao 4a761f6d60 Topology2: add mtl rt713 rt1318 rt1713 support
Two configurations for sof-mtl-rt713-l0-rt1318-l12-rt1713-l3 and
sof-mtl-rt713-l0-rt1318-l1-rt1713-l3.

Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
2024-05-08 09:56:31 +01:00
Kai Vehmanen 81348f09d3 audio: fix indentation in audio/Kconfig
Use tabs for indentation consistently.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-05-08 09:41:28 +01:00
Kai Vehmanen b10ec85ebd audio: base_fw: do not use platform interface for vendor extensions
In commit 14c4e86757 ("audio: base_fw: add platform layer to IPC4
hw_config data"), the platform specific code was moved to platform
layer.

This commit implements a lighter weight abstraction for the moved
code. Instead of using the platform layer, the Intel specific vendor
code is added directly in base_fw_intel.c and guarded by a Kconfig.
All other IPC4 build targets will use an empty implementation.

This avoids the need to add a platform definition for all IPC4 targets.
The common implementation in base_fw.c is sufficient to cover all
mandatory functionality required e.g. by the upstream SOF Linux driver's
IPC4 implementation.

The interfaces are renamed to refer to "vendor" instead of "platform",
to avoid any confusion with the platform layer with the new
implementation.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-05-08 09:41:28 +01:00
Kai Vehmanen 0ea0d62feb west.yml: update Zephyr to d3c9a986ec30
Contains following commits affecting SOF build targets:

6205f82d4f60 intel_adsp: adsp_memory: update mtl memory definitions
6fe16960fd1f intel_adsp: adsp_memory: update lnl memory definitions
2176ca9f9bdc intel_adsp: adsp_memory: update cAVS 2.5 memory definitions

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-05-07 12:51:19 +03:00
Guennadi Liakhovetski a090f5151e llext: use xtensa-build-zephyr.py in GitHub CI
Switch the GitHub CI workflow to use xtensa-build-zephyr.py

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-05-07 10:51:34 +03:00
Guennadi Liakhovetski 6ead80fa55 deployable build: install LLEXT modules into the tree
Install loadable LLEXT modules into the deployment tree and
create symbolic links for them.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-05-07 10:51:34 +03:00
Guennadi Liakhovetski 6790c449ab smart_amp_test: use the correct loading type
Set "load_type" to 2 in TOML configuration, when building for LLEXT.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-05-07 10:51:34 +03:00
Guennadi Liakhovetski 0543783d3c smart-amp-test: add toml preprocessing when modular
When building smart-amp-test as a module, we also need to
preprocess its TOML configuration file. Add it to cmake.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-05-07 10:51:34 +03:00
Guennadi Liakhovetski 9a2d1a6f05 module: support multi-module builds
To be able to build and sign multiple modules within one build we
need to unify name generation. For signing we invoke something like
west sign -i smart_amp_test
which means, that the west sign utility must be able to locate the
module binary directory and recognise files in it using only that
input file name. It will then create signed llext images inside those
binary directories too, so that deployment scripts can find and
recognise them there. We unify the naming as
${MODULE}_llext - for the binary directory,
${MODULE}.so - ELF file for signing in that directory
${MODULE}.llext - final signed extension
llext.uuid - a file with a list of UUIDs, provided by this extension

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-05-07 10:51:34 +03:00
Guennadi Liakhovetski 40f4b25d9a smart-amp: add a UUID file creation
When installing modular components we need to create UUID-based soft
links. Create a separate file with a list of UUIDs to assist in that.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-05-07 10:51:34 +03:00
Guennadi Liakhovetski 7cb5ef0ad2 llext: catch only the expected exception
When an ELF section isn't found .get_section_by_name() raises an
AttributeError exception, catch it specitically instead of catching
any exception.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-05-07 10:51:34 +03:00
Guennadi Liakhovetski 7457e7da23 llext: (cosmetic) use a macro instead of a constant
0x8000 is the manifest .text offset, use an existing macro instead of
open-coding it.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-05-07 10:51:34 +03:00
Marc Herbert a64e2817b6 xtensa-build-zephyr.py: remove obsolete and misleading comment
Pure comment fix, zero code change.

Fixes miss in commit f55338a985 ("Switch Zephyr build to new
sof/tools/rimage location")

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2024-05-06 17:34:48 +01:00
Seppo Ingalsuo 07c9043516 Tools: Topology2: Use for LNL own platform configuration lnl.conf
The new lnl.conf is copy of mtl.conf but DMIC_DRIVER_VERSION needs
to be increased by one for a small registers change.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-05-06 12:33:41 +03:00
Seppo Ingalsuo 03dbc7ba2c Tools: Tune: EQ: Normalize IIR and FIR separately
This allows more freedom to scale the equalizers. Common criteria
resulted with safe scaling to unnecessarily silent result or
risk for audible clipping in the equalizer.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-05-03 21:02:34 +03:00
Marc Herbert a2338e5103 rembrandt_defconfig: remove duplicate CONFIG_COMP_DCBLOCK=n
Fixed redefinition warning spotted by chance while testing various CMake
combinations.

Fixes commit 07d401af9d ("drivers:amd:four channel dmic
configurations") which added the duplicate.

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2024-05-03 15:01:53 +03:00
Marc Herbert 7cbaa00cd2 installer: same default platforms as xtensa-build-all.sh
Commit a4c8d4ef79 ("Intel: remove XTOS support") stopped building
anything by default.

All Intel firmware in this branch is now Zephyr-based. So this Makefile
is NOT used anymore for sof-bin releases. However it is still useful as
a single command, fully parallelized and much faster alternative to
build everything at once in just a few seconds.

See source comment for more.

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2024-05-03 15:01:53 +03:00
Marc Herbert 5ffa1cdc17 installer: drop harmless but misleading target_of_imx
No one needs a imx -> imx8 symbolic link.

Fixes misguided search/replace from commit a4c8d4ef79 ("Intel: remove
XTOS support")

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2024-05-03 15:01:53 +03:00
Marc Herbert ff92658ce2 installer: fix staging error message when no firmware was built
Commit a4c8d4ef79 ("Intel: remove XTOS support") stopped
installer/GNUmakefile from building all XTOS firmware by default:
nothing unless either SIGNED_list or UNSIGNED_list is passed on the
command line. This didn't break CI which sets one of these parameters.
But it resulted in a cryptic "test -e staging/sof" failure and lack of
error message when trying to build by default.

Add a one-line, explicit check. The comment doubles as an error message.

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2024-05-03 15:01:53 +03:00
Marc Herbert b9f331c8a6 .github/tools: add missing -GNinja when building ALSA plugin
Fixes initial commit fb229b9cc1 (".github/tools.tml: add build of SOF
ALSA plugin")

Github free runners don't have that many cores but let's build in
parallel and use them all.

Perhaps even more useful: let's give people who copy the build steps
from this file a much faster build.

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2024-05-03 15:01:53 +03:00
Grzegorz Bernat 25423f5b6b Audio: basefw: Implement ipc4 modules info get
Add support to handle IPC4_MODULES_INFO_GET message.
This make it possible to get information about the current loaded modules.

Signed-off-by: Grzegorz Bernat <grzegorzx.bernat@intel.com>
2024-05-02 15:14:54 +03:00
Grzegorz Bernat d7681434e9 ipc: Change ipc4 message max size
Maximym ipc4 message size changed to 4kB.
This is the size of a page.

Signed-off-by: Grzegorz Bernat <grzegorzx.bernat@intel.com>
2024-05-02 15:14:54 +03:00
Marc Herbert bb31696aa6 dma-trace.c: lower log level of dropped logs and stop recursion
Dropping logs is bad but it should not be fatal in itself.

This ERROR is one of the last remaining errors in stable-v2.2, see
https://github.com/thesofproject/sof-test/pull/1075#issuecomment-2049051006

Also switch to the "etrace": drop the dubious recursion and stop using
the DMA trace when it's already saturated.

Disclaimer: this was (successfully) tested only on stable-v2.2, see #9036

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2024-04-30 15:23:25 +01:00
Yong Zhi 18ab8c2468 topology2: cavs-rt5682: expose spk core_id for overriding
Port from nocodec topology for multi-core validation.

Signed-off-by: Yong Zhi <yong.zhi@intel.com>
2024-04-30 13:17:42 +03:00
Seppo Ingalsuo e8fcaf6958 Tools: Tune: Crossover: Cleanup blob files paths
This patch moves blobs for crossover component into
sub-directory "crossover" to clean up clutter from
ctl/ipc3 and ipc4 level.

The patch also adds export of blobs for IPC4 mode that
was missing.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-04-29 14:07:25 +01:00
Seppo Ingalsuo 70449a3d70 Tools: Tune: EQ: Cleanup produced blob files structure
To remove clutter from upper level this patch changes
generated files naming from e.g. "ipc4/eq_fir_loudness.blob" to
"ipc4/eq_fir/loudness.blob". It helps to find the blob files
from directory that has same name as the target component.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-04-29 14:07:25 +01:00
Seppo Ingalsuo ec4e2a9cf9 Tools: Tune: EQ: Rename configuration blobs to use .blob
We have both .bin and .blob file name suffixes in use for
similar byte controls initialize files. The scripts those
generate files with .bin are changed to .blob.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-04-29 14:07:25 +01:00
Seppo Ingalsuo 4f46135fba Tools: Tune: EQ: The function eq_blob_write.m is deleted
The replacement is sof_ucm_blob_write.m.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-04-29 14:07:25 +01:00
Seppo Ingalsuo b5bd60c1f0 Tools: Tune: EQ: Create highpass blobs and add 100 Hz version
There were no bytes control binary blobs for highpass filters.
This patch adds export of them and adds a 100 Hz filter option.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-04-29 14:07:25 +01:00
Seppo Ingalsuo 25e105026d Tools: Tune: Use common/sof_ucm_blob_write.m for binary blob export
The sof_ucm_blob_write.m is an updated copy of blob_write that
exports binary blobs with header that is suitable for ALSA UCM's
cset-tlv command. The UCM requires binary files so the default
binary export is changed for every component setup script to this
format.

The ASCII decimal numbers .txt format export remains suitable for
sof-ctl tool.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-04-29 14:07:25 +01:00
Laurentiu Mihalcea 48499455c8 cleanup: platform: imx8: remove unneeded `include` statements
Remove unneeded `include` statements. An `include` statement
is deemed as unneeded if, by removing it, the build process
will not fail.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-04-29 13:56:20 +03:00
Laurentiu Mihalcea c03635d84b cleanup: platform: imx8: remove `platform_wait_for_interrupt` definition
`platform_wait_for_interrupt()` is an XTOS-only construct
so it's not needed for imx8 which is a Zephyr-only platform.
Remove it.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-04-29 13:56:20 +03:00
Laurentiu Mihalcea 42ed96ef44 cleanup: platform: imx8: remove unused structure declaration
Commit b0cc9dc7b5 ("cleanup: platform: imx8: remove redundant
calls in platform_init()") removes function call that uses the
`timer_shared` structure so it can be dropped.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-04-29 13:56:20 +03:00
Laurentiu Mihalcea 6e30aaee32 cleanup: platform: imx8: remove redundant calls in platform_init()
XTOS is no longer supported on imx8. As a consequence,
some calls from imx8's platform_init() have become
redundant. Remove these calls/initializations as well
as those who are redundant because of some configurations
that are not enabled (e.g: `CONFIG_TRACE`, or `CONFIG_HAVE_AGENT`).

This is a followup for #8863.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-04-29 13:56:20 +03:00
Tobiasz Dryjanski 40a6fc7dab volume: fix fadeout curve shape
Fadeout curve had inaccurate shape due to incorrect computation of ramp
function.

Suggested by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Signed-off-by: Tobiasz Dryjanski <tobiaszx.dryjanski@intel.com>
2024-04-29 10:56:08 +03:00
Kai Vehmanen 278ecc5b74 topology2: intel: bt-generic.conf: fix rate constraints
Commit c77a4feb2f ("topology2: pcm_caps: Remove defaults for
rate_min/rate_max") changed how rate constraints are described in
topology. After this change, the rate_min/max was ignored by SOF Linux
driver and the rate was incorrectly limited to 48000Hz for these
topologies.

Fix this issue by enumerating the supported sampling rates with "rates".

Link: https://github.com/thesofproject/sof/issues/9067
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-04-26 13:04:35 +01:00
Damian Nikodem e603d8f09b audio: copier: use v_index for DAI index in I2S link creation
This commit updates the copier DAI creation logic for I2S links to use
the `v_index` field from the `node_id` structure as the DAI index. This
change ensures that the correct DAI index is used when creating I2S links,
aligning with the new SSP link management mechanism.

West update to necessary SSP changes:
driver: ssp: update Intel SSP DAI driver to support dynamic SSP management

Signed-off-by: Damian Nikodem <damian.nikodem@intel.com>
2024-04-25 15:58:23 +01:00
Marcin Szkudlinski 5f25174789 dp: make dp_queue using externally provided params set
Dp_queue is currently used only as a comp_buffer "shadow"
for DP modules.
Shadow buffers must have the very same param set as main
buffers.
Problem: till now the complete vector of params was
copied from comp_buffer to dp_queue inm prepare method.
Problem is that if anything will change any of params
afterwards, the change won't propagate.
This commit introduces sharing the param vector between
comp_buffer and its shadow

Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
2024-04-25 15:35:06 +01:00
Marcin Szkudlinski 80445dc5ee dp: remove dead code from dp_queue
the backdoor removed in this commit has never been used
A new backdoor will be introduced in new commit

Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
2024-04-25 15:35:06 +01:00
Laurentiu Mihalcea 65b8a32f27 nxp: imx8ulp: switch to native Zephyr drivers and timer domain
Switch to Zephyr native drivers and timer domain. This
includes:
	1) Switching all imx8ulp topologies to timer domain.
	2) Disabling Zephyr DMA domain
	3) Various interrupt-related fixes via Kconfig-related
	ifdef logic.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-04-25 14:12:41 +03:00
Laurentiu Mihalcea b78d924fe8 lib: dma: add entries for 8ULP's EDMA2 and HOST_DMA
Add entries for 8ULP's EDMA2 and HOST_DMA.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-04-25 14:12:41 +03:00
Laurentiu Mihalcea 4b567533eb nxp: imx8ulp: and nodes and enable drivers for SAI, EDMA and HOST_DMA
Add DTS nodes for and enable the drivers of SAI, EDMA
and HOST_DMA.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-04-25 14:12:41 +03:00
Laurentiu Mihalcea 3f1f45aaeb boards: imx8ulp: switch to Zephyr logging
Switch to Zephyr logging to prepare for the
switch to native Zephyr drivers.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-04-25 14:12:41 +03:00
Peter Ujfalusi aa60e65c6b topology2: intel: deep-buffer: Adjust the buffer_size_min only
There is no benefit on changing the period/buffer size_max as it is set
by default to a reasonably large value already.
What matters is the buffer_size_min: it needs to be larger than the
amount of data that one DMA burst will transfer, which is equal to the
DeepBuffer size. For safety reasons the minimum buffer size has to be
larger than this.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
2024-04-24 16:27:52 +03:00
Peter Ujfalusi bba6a4cb04 topology2: common: pcm_caps: Revisit default period and buffer sizes
Increase the default period_size_max to a much larger value which is
commonly used by sound cards from 16384 to 2097152.

Adjust the buffer_size limits to minimum 384 (2 * period_size_min) and the
maximum to 4194304 (2 * period_size_max).

Applications do not need to use these large buffers, but there is no
technical reason to not allow them, like they available on other sound
hardware.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
2024-04-24 16:27:52 +03:00
Peter Ujfalusi b3a6d1c570 topology2: common: pcm_caps: Increase periods_max from 16 to 1024
There is no technical reason to limit how many periods applications use.
Generic sound cards tends to allow 32768 periods (period size range
is 16 - 524288) but that is an overshot, let's raise the limit to 1024.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
2024-04-24 16:27:52 +03:00
Kai Vehmanen d42e8822f2 audio: base_fw: add missing copyright statement to banner
Add missing copyright statement to file header.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-04-24 13:36:35 +03:00
Kai Vehmanen 5a6455630e audio: base_fw: move IPC4_EXTENDED_SYSTEM_TIME to platform code
Move implementation of IPC4_EXTENDED_SYSTEM_TIME from generic
to platform specific code. The implementation depends on specific
ART counter that is not available on all platforms, so it is better
to handle this in platform specific code.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-04-24 13:36:35 +03:00
Kai Vehmanen 422fdc1229 audio: base_fw: move IPC4_MEMORY_STATE_INFO_GET code to platform
The implementation for IPC4_MEMORY_STATE_INFO_GET requires
reading direct register contents to fill out the structure,
so this is by definition platform specific code. Move this
to platform implementation.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-04-24 13:36:35 +03:00
Kai Vehmanen a1120f0f9f audio: base_fw: move L1_EXIT control to platform specific code
Move the Intel specific L1_EXIT control handling from base_fw.c
to Intel specific platform code.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-04-24 13:36:35 +03:00