Commit Graph

11837 Commits

Author SHA1 Message Date
Brent Lu 33e23766ff topology2: dmic-generic: add switch for LED control
Add a mute switch to gain widget for DMIC. Also register this switch
as MIC mute LED mixer control on Linux side.

Signed-off-by: Brent Lu <brent.lu@intel.com>
2024-02-08 16:58:21 +00:00
Brent Lu b2d1f09da5 topology2: gain: add mixer switch for mute control
Add a switch to gain widget for mute control. It could also be used
as MIC/SPK mute LED control purpose.

Signed-off-by: Brent Lu <brent.lu@intel.com>
2024-02-08 16:58:21 +00:00
Brent Lu f9bcf61b9a audio: volume: support switch control
Implement function to support SOF_IPC4_SWITCH_CONTROL_PARAM_ID in
set_configuration callback. Linux side could use this switch control
to mute/unmute a gain widget.

Signed-off-by: Brent Lu <brent.lu@intel.com>
2024-02-08 16:58:21 +00:00
Kalva, DineshKumar a25c70e183 amd: enable probe functionality config for AMD/Renoir platform.
Enable probe functionality config for AMD/Renoir platform.

Signed-off-by: Kalva, DineshKumar <dineshkumar.kalva@amd.com>
2024-02-08 16:04:18 +00:00
Kalva, DineshKumar cdd9863718 amd: initialization of dma descriptors for probe functionality for AMD/Renoir platform.
Initialization of dma descriptors for probe functionality
for AMD/Renoir platform.

Signed-off-by: Kalva, DineshKumar <dineshkumar.kalva@amd.com>
2024-02-08 16:04:18 +00:00
Marcin Szkudlinski 8e34109e10 AEC: Enable Google AEC with Mock compliation
Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
2024-02-08 11:48:20 +00:00
Marcin Szkudlinski b3d569a523 AEC: convert aec to use sink/src interface
This commit changes AEC to use sink/src interface
and makes it to be a DP module

it also enables optional usage of 32bit AEC API

Signed-off-by: Marcin Szkudlinski <marcin.szkudlinski@intel.com>
2024-02-08 11:48:20 +00:00
Marc Herbert e04289d6a9 scripts/fuzz.sh: add a -p "pristine" flag that deletes build-fuzz/
It's slower but safer when changing some parameters.

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2024-02-07 12:50:08 +00:00
Guennadi Liakhovetski 7f4e6aed74 src: make coefficients constant
Make coefficients and their tables constant.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-02-07 12:37:23 +00:00
Guennadi Liakhovetski 45dc968cb2 lmdk: fix building system-service modules
System-service modules cannot include Zephyr headers and don't use
exported symbols, they link sink_api.c and source_api.c into their
images. Disable symbol exporting for them.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-02-06 09:50:31 +02:00
Ranjani Sridharan a5bdcce1e1 topology2: Add topology for testing SOF plugin
The topology uses passthrough pipelines for playback/capture and
supports only 48k, 2ch, 16bit format for now.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2024-02-05 18:16:40 +02:00
Marc Herbert dd8b9328a9 app/prj.conf: stop forcing CONFIG_OUTPUT_DISASSEMBLY=y
This reverts 8f6018057b ("app: enable OUTPUT_DISASSEMBLY for Zephyr
builds")

The disassembly is useful in some contexts but can't be parallelized and
takes an enormous amount of time. On my system OUTPUT_DISASSEMBLY
almost doubles the compilation time!

Quoting Zephyr commit cc5763344709:

> This on-by-default option takes the majority of "link" time. If people
> need the disassembly, they can turn it on.

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2024-02-02 17:19:38 +02:00
Marc Herbert 478e0b0e22 .github/zephyr: force -DCONFIG_OUTPUT_DISASSEMBLY=y
Force -DCONFIG_OUTPUT_DISASSEMBLY=y when building Zephyr to make sure
the disassembly is compared between the Windows and Linux builds.

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2024-02-02 17:19:38 +02:00
Jaroslaw Stelter 8cad5bea57 lib: alloc: Use aligned allocation for L3_HEAP usage.
L3_HEAP is used in library manager for library storage buffer allocation
and in D3 enter/exit flows to allocate IMR context storage buffer.
Both buffers should be aligned so use rballoc_align() routine to get
correctly aligned buffers.

Signed-off-by: Jaroslaw Stelter <Jaroslaw.Stelter@intel.com>
2024-02-01 12:15:30 +02:00
Jaroslaw Stelter 58a42e5fdb zephyr: lib: alloc: Use cached memory for L3 Heap
This patch implements recommended hardware flow for
Intel ACE platforms.
The L3 heap should be accessed via cached pointers
including management data.

Signed-off-by: Jaroslaw Stelter <Jaroslaw.Stelter@intel.com>
2024-02-01 12:15:30 +02:00
Andrula Song d9bd3d29ce Audio: Aria: Use new ARIA HiFi config style
Use the new CONFIG_ARIA_HIFI style to choose right processing
file.

Signed-off-by: Andrula Song <andrula.song@intel.com>
2024-01-31 23:41:21 +02:00
Andrula Song d46d7831cb Audio: Aria: Add HiFi5 SIMD align limit set.
Since the HiFi5 implementation of aria uses 32x4 load
and store instructions, so add the HiFi5 version alignment
set for aria.

Signed-off-by: Andrula Song <andrula.song@intel.com>
2024-01-31 23:41:21 +02:00
Baofeng Tian 2752cdfe9c Volume: Add volume simd build option
With common header file change merged, this patch is using the
new HIFI definition to build different volume modules based on toolchain.

Signed-off-by: Baofeng Tian <baofeng.tian@intel.com>
2024-01-30 20:01:18 +02:00
Marc Herbert a3045b83a6 .github: fallback on rebuild-testbench -j 1 when failing
Parallel builds are fast but they bury errors, for instance good luck
finding the cause of this failure:
 https://github.com/thesofproject/sof/actions/runs/7667629748/job/20897861756?pr=8019

Use the well known technique of falling back on a single thread when
failing.

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2024-01-30 19:46:35 +02:00
Guennadi Liakhovetski 8bfb4896c7 llext: add or improve comments
Address clarity improvement requests from an earlier pull-request
review.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-01-29 18:42:23 +02:00
Andrula Song 193dec2c9f Topology: Topology2: Add sof-hda-benchmark-asrc32/24/16-<platform>
This patch adds build of hda-generic development topologies to
test ASRC component with s32/24/16 format.

Signed-off-by: Andrula Song <andrula.song@intel.com>
2024-01-29 15:17:24 +00:00
Laurentiu Mihalcea d5b5c8ecb0 platform: imx93_a55: remove empty interrupt.h file
The interrupt.h file was never used and is empty so remove
it as an attempt to clean up the platform/imx93_a55 hierarchy.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-01-29 14:53:26 +00:00
Laurentiu Mihalcea 17844811db zephyr: interrupt.h: conditionally include drivers/interrupt.h
NXP's i.MX8 and Intel's CAVS are the only platforms using
Zephyr that also require the usage of drivers/interrupt.h. Since
for i.MX8 platforms drivers/interrupt.h is included through
xtos/rtos/interrupt.h, add a macro guard around the inclusion of
drivers/interrupt.h which will allow the other Zephyr platforms
(i.e: NXP's i.MX93 and Intel's ACE) to finally remove the SOF-specific
drivers/interrupt.h. This is desired because the platforms should only
rely on the Zephyr interrupt support instead of having to use
a hybrid between Zephyr and SOF interrupt support.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-01-29 14:53:26 +00:00
Laurentiu Mihalcea 3de7b96566 cleanup: remove direct inclusion of drivers/interrupt.h
Zephyr and XTOS' rtos/interrupt.h already include
drivers/interrupt.h so there's no need to include it again
in files which make use of one of the two rtos/interrupt.h
headers. As such, this commit removes all drivers/interrupt.h
inclusions from said files.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-01-29 14:53:26 +00:00
Marc Herbert 46eb79eb45 .github: use new checkout v4 option "filter: tree:0"
This saves time without affecting git describe like fetch depth does.

Also cancel fetch depth when building the firmware.

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2024-01-29 16:45:19 +02:00
Marc Herbert da2b026c76 .github: upgrade all checkout actions, v3 -> v4
Fixes the new mass warnings:

Node.js 16 actions are deprecated. Please update the following
actions to use Node.js 20: actions/checkout@v3. For more information
see:
https://github.blog/changelog/
   2023-09-22-github-actions-transitioning-from-node-16-to-node-20/

We've used checkout v4 in other places and everything worked fine.

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2024-01-29 16:45:19 +02:00
Ievgen Ganakov a1deb74da0 copier: dai: use HD-A dai to configure soundwire on LNL
Since LNL soundwire uses HD-A DMA to transfer data. Add LNL specific
configuration to select HD-A DMA in case of SoundWire audio interface.
Refactor copier dai code for sndw/alh node id type.

Add support for sndw link aggregation mode for LNL platform based on
DMA config being sent during Copier Init Instance IPC.

Signed-off-by: Ievgen Ganakov <ievgen.ganakov@intel.com>
2024-01-29 11:53:53 +02:00
Ievgen Ganakov 21bcf73aba ipc4: add helper function to parse dma config
Add helper function to parse muiltiple DMA config tlv structures
added to copier Init Instance IPC in case of SNDW FW aggregation.

To be able to find correct config we need to iterate over the
sequence of DMA tlv with the same tlv type. Thus, we need to check
if device_address value (which contains PDI) is equal to device_id
parameter (passed with alh_id value).

Signed-off-by: Ievgen Ganakov <ievgen.ganakov@intel.com>
2024-01-29 11:53:53 +02:00
Ievgen Ganakov b6cdc755bd ipc4: add host_dma_config array
Add host_dma_config array to be able to keep multiple
DMA tlv pointers. This change is needed to enable SNDW
FW aggregation using HD-A DMA on LNL

Signed-off-by: Ievgen Ganakov <ievgen.ganakov@intel.com>
2024-01-29 11:53:53 +02:00
Ievgen Ganakov ec90f1fff7 tlv: add tlv_value_ptr_get() function
Add function which retrieves pointer to the TLV structure value
of the specified type

Signed-off-by: Ievgen Ganakov <ievgen.ganakov@intel.com>
2024-01-29 11:53:53 +02:00
Balamurugan C 7002215a8d topology2: mtl: Generate topology for No headset codec
Adding make file changes to generate the topology file for the products
which doesn't have no ssp-based audio codec but need to support
HDMI audio playback and HDMI-in capture via I2S.

Signed-off-by: Balamurugan C <balamurugan.c@intel.com>
2024-01-29 11:52:21 +02:00
Balamurugan C f29230698a topology2: mtl: Override default HDMI DAI link id's
override the default HDMI DAI link id's by using make
define parameters instead of fixed in file.

Signed-off-by: Balamurugan C <balamurugan.c@intel.com>
2024-01-29 11:52:21 +02:00
Balamurugan C b9132421d3 topology2: mtl: Add headset codec macro
Adding HEADSET_CODEC macro and guarded the SSP configuration handling
under this macro.By this changes we can generate the topology
configuration for the products which has no headset codec.

Signed-off-by: Balamurugan C <balamurugan.c@intel.com>
2024-01-29 11:52:21 +02:00
Anas Nashif 8b7c75addb app: fix filter in sample.yaml
nxp_adsp_imx8ulp needs to be in allowed platforms.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2024-01-29 11:20:39 +02:00
Marc Herbert 3930270e3d Add new CONFIG_DCBLOCK_HIFI and move generic XCHAL_HAVE logic to common.h
1. The `if XCHAL_HAVE_HIFI4` macro logic is duplicated across many
source files. Starting with dcblock.h, make it generic and move it to
common.h

2. Add the ability to override the max available HIFI level using
Kconfig

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2024-01-26 19:58:11 +02:00
Guennadi Liakhovetski d119d93cae rimage: add a generic platform.toml
Instead of including TOML files for each platform explicitly, add a
generic platform.toml, that will contain all respective platform
TOML files, and select the correct one, based on build configucation.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-01-26 17:56:14 +02:00
Guennadi Liakhovetski a967d955db rimage: mtl: extract platform part from mtl.toml.h
A part of mtl.toml.h is also needed for loadable modules, built for
MTL. Extract it into a separate file.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-01-26 17:56:14 +02:00
Guennadi Liakhovetski a8397dec44 module: fix cache synchronisation
Buffers, where modules are stored originally, don't need their caches
to be synchronised - they're only used as a data storage and only
accessed via cached aliases. But when final buffers are allocated,
from which modules are actually run, those buffers do indeed need
cache synchronisation.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-01-26 17:56:14 +02:00
Guennadi Liakhovetski 70fa6f30a9 llext-manager: store segment sizes locally
Currently segment sizes are calculated from page counts, stored in
module manifests. This restricts us to only using page size-aligned
segment sizes. In case of not page size-aligned ELF sections this can
lead to wasted memory. To avoid this store segment sizes in full-size
per-module variables to access them at any time.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-01-26 17:56:14 +02:00
Guennadi Liakhovetski 15b32d02db llext-manager: remove instance-count handling
.bss splitting is specific to system-service module loading, LLEXT
uses a traditional shared .bss ELF section.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-01-26 17:56:14 +02:00
Guennadi Liakhovetski 22a4bdb8a1 llext-manager: handle unaligned .text and .data sections
Currently only page size-aligned .text and .rodata sections are
supported. Remove this limitation by prepadding the address to
restore the alignment.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-01-26 17:56:14 +02:00
Guennadi Liakhovetski bd5c24b282 lib-manager: fork a copy for LLEXT support
This forks a slightly earlier version of library loading code for
upcoming LLEXT support.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-01-26 17:56:14 +02:00
Guennadi Liakhovetski ab29f8db82 llext: add a new module type
We need to be able to distinguish LLEXT loadable dynamically linkable
modules at run-time. Add a new type for them. Compatibility is
preserved.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-01-26 17:56:14 +02:00
Guennadi Liakhovetski 88793e3288 chain DMA: remove redundant code
No need to re-calculate cdma_comp in ipc4_process_chain_dma(), keep
using the already calculated value.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-01-26 15:43:24 +00:00
Jaroslaw Stelter 17b3b01de9 lnl: conf: Enable Library authentication on LNL
This enables library authentication on LNL platforms.

Signed-off-by: Jaroslaw Stelter <Jaroslaw.Stelter@intel.com>
2024-01-26 14:08:58 +00:00
Jaroslaw Stelter 6bc4e9d444 mtl: conf: Enable library authentication on MTL
This enables library authentication on MTL platforms.

Signed-off-by: Jaroslaw Stelter <Jaroslaw.Stelter@intel.com>
2024-01-26 14:08:58 +00:00
Jaroslaw Stelter f9fda66821 library_manager: auth: Add library authentication mechanizm
This patch adds usage of authentication API to check
library signature. If feature enabled it will block loading of
library without valid signature.

Signed-off-by: Jaroslaw Stelter <Jaroslaw.Stelter@intel.com>
2024-01-26 14:08:58 +00:00
Jaroslaw Stelter 1819200cb8 platform: ace: Add authentication interface
For ACE platforms library authentication could be done using external
entity - rom_ext. This module reside in L3 memory space and provides
verification functionality. Following code expose that API to SOF.

Signed-off-by: Jaroslaw Stelter <Jaroslaw.Stelter@intel.com>
2024-01-26 14:08:58 +00:00
Seppo Ingalsuo 8209572a46 Audio: IGO_NR: Fix build fail variable size data structure
This change avoids error, seen with testbench build for
MTL platform with "scripts/rebuild-testbench.sh -p mtl":

sof/src/include/sof/audio/igo_nr/igo_nr_comp.h:29:27:
error: field 'config' with variable sized type
'struct sof_igo_nr_config' not at the end of a struct or class
is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-01-26 13:38:14 +00:00
Bard Liao 897cee1e18 fixup! topology2: Use SAMPLE_TYPE_MSB_INTEGER for ALH copier
Some ALH DAI copier missed SAMPLE_TYPE_MSB_INTEGER setting.

Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
2024-01-26 13:37:28 +00:00