Commit Graph

11976 Commits

Author SHA1 Message Date
Laurentiu Mihalcea ca72c403a3 lib: dai: add entry for NXP's ESAI
Add entry for NXP's ESAI IP inside the "zephyr_dev" array.
What the entry does is it fetches all "struct device"s for
ESAI nodes marked as "okay".

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-04-23 12:20:31 +01:00
Laurentiu Mihalcea 43422abe02 audio: dai-zephyr: add entry for NXP'S ESAI
Add entry for NXP's ESAI IP in dai_set_config().

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-04-23 12:20:31 +01:00
Laurentiu Mihalcea 2cd630465b nxp: imx8/imx8x: add SAI, EDMA, ESAI and HOST_DMA nodes
Add nodes for the following IPs: SAI, EDMA and ESAI. Also,
add node for HOST_DMA. These are all required for switching
to Zephyr native drivers.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-04-23 12:20:31 +01:00
Laurentiu Mihalcea 4284556e9b nxp: imx8/imx8x: switch to Zephyr logging
Switch to using Zephyr logging on imx8 and imx8x to
prepare for using native Zephyr drivers.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-04-23 12:20:31 +01:00
Grzegorz Bernat db97b54939 Audio: basefw: Implement ipc4 pipeline info get
Added support for ipc4 query no 255 (10).
This make it possible to get information about
the current loaded pipelines.

Signed-off-by: Grzegorz Bernat <grzegorzx.bernat@intel.com>
2024-04-23 12:16:50 +01:00
Laurentiu Mihalcea ebe33ca38d .github/zephyr: disable disassembly with inline source code
By default, the disassembly file (.lst) generated
during the build process when enabling `CONFIG_OUTPUT_DISASSEMBLY`
will also contain inline source code. This is not ideal
for reproducible builds that compare the .lst files
obtained on different platforms (i.e: Windows and Linux)
because of the differences in the inline source code that
may appear.

One of the identified causes for such differences were
the ".." include paths, which resulted in the Windows
.lst omitting some bits of the inline source code that
were present in the Linux .lst file.

Because these issues are hard to debug and unintuitive,
the solution is to disable the inline source code. This way,
the CI can keep testing for reproductibility using just the
assembly and machine code from the .lst file, which are
more important than the inline source code.

This fixes thesofproject/sof/issues/9034.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-04-23 11:49:04 +03:00
Laurentiu Mihalcea ef674a274a west.yml: update Zephyr to fb7e9379e137
Pulls in the following patches relevant to SOF:

94d156c9c84c nxp: imx8ulp: enable serial interface
bc63835ba240 dts: xtensa: intel_adsp_cavs25_tgph: correct SSP definition
aecf19c3c1be dts: xtensa: intel_adsp_ace15: correct SSP definition
45205f865e18 dts: xtensa: intel_adsp_ace20: correct SSP definition
17081222e2e7 drivers: dai: intel: ssp: fix LOG_ERR level / false positive
fb7e9379e137 cmake: add control over inline source code disassembly

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-04-23 11:49:04 +03:00
Marc Herbert 665817fe84 xtensa-build-zephyr.py: add flexibility to generate `tools/` only
Installing most of the tools/ directory does not technically require
building any platform, so add that possibility.

This is useful because the Jenkins-based CI builds the (userspace) tools
separately. So far it has been picking hardcoded source paths but of
course the HWMv2 transition just broke that:
https://github.com/thesofproject/sof/pull/8913

While it's too late this time (we want to keep CI able to test stable
branches for some time), this commit prepares a future where all CIs can
stop hardcoding Zephyr source paths and pick the output of the
xtensa-build-zephyr.py installer and indirection layer instead.

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2024-04-22 18:26:09 +03:00
Serhiy Katsyuba 06869cb20d detect_test: Fix processing for 24in32 format
* Added sign extension to properly convert 24in32 sample to int32_t.

* To choose default threshold valid sample size should be used instead
of container size.

Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com>
2024-04-22 14:24:53 +01:00
Tobiasz Dryjanski 8a84d02bac volume: fix wrong volume ramp being chosen
Fade out was not working due to wrong order of operations. Ramp type was
set up before the correct type was set, so the default was always used.

Signed-off-by: Tobiasz Dryjanski <tobiaszx.dryjanski@intel.com>
2024-04-22 14:18:58 +01:00
Serhiy Katsyuba 30b3011bd8 ipc4: mixin: Add gain support (generic and HIFI3)
Restore gain support which was accidentally removed during previous
HIFI optimization/refactoring.

This commit only adds gain supports to "generic" and "HIFI3" mixin
implementation.

Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com>
2024-04-22 14:18:17 +01:00
Mac Chiang 4c1cd870e6 topology2: add rt1318 and rt714 support on LNL
This patch adds following hardware configuration on LNL product:

SDW link0: RT714 DMIC
SDW link1: RT1318 Left Speaker
SDW link2: RT1318 Right Speaker

Signed-off-by: Mac Chiang <mac.chiang@intel.com>
2024-04-22 13:44:29 +01:00
Johny Lin 58f141c19e module_adapter: return error if get_conf is not implemented
At present, if get_configuration is not implemented by internal module,
module_adapter will return 0 directly on config read commands. Under
the circumstances, the host will suppose the reading is succeeded, but
in fact the ata in IPC buffer is unwanted.

This commit changes the return code to non-zero for such cases, which
prevents the host getting the unwanted config data.

Signed-off-by: Johny Lin <johnylin@google.com>
2024-04-18 11:55:13 +03:00
Kai Vehmanen 14c4e86757 audio: base_fw: add platform layer to IPC4 hw_config data
Some of the IPC4 HW_CONFIG fields are platform specific and cannot be
filled with generic code.

Handle this functionality by separating platform specific parts of
base_fw to a new base_fw_platform.h interface. Move out existing code
for Intel cAVS and ACE platforms. Add a new stub implementation for
posix platform. This posix stub can be also used as a starting point
when adding IPC4 support to new platforms.

This platform construct can be later used to move out other
vendor and platform data out from base_fw.c.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-04-17 16:20:48 +01:00
Kai Vehmanen f1afff0c01 west.yml: update zephyr to 3614d4cb88f4
Update Zephyr to new baseline containing following patches
affecting SOF targets:

8a63a0a56339 intel_adsp: ipc: Fix policy state lock usage
e85226fd1a03 soc/intel_adsp: ipc: Remove fragile device state check
741bbaca6dd7 soc/intel_adsp: ipc: Remove unnecessary device state lock
a200dd88d878 dts: xtensa: intel_adsp: Set soft-off state as disabled
d5897a48aaab ipc: intel_adsp: Ensure IPC completion before runtime idle

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-04-17 16:53:27 +03:00
Peter Ujfalusi 3f7a589678 topology2: intel: hdmi-generic: Update rates and format support in pcm.caps
With ChainDMA the HDMI PCM can support IEC958_SUBFRAME_LE and the rate
is not limited to 48K only.

To be able to use bytestream passthrough (DD/DTS/etc).

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
2024-04-17 12:47:18 +01:00
Kai Vehmanen d0239c70da tools: plugin: ipc4: fix build error in switch-case
A label must be followed with a statement and declaration is
not a statement. Enclose the case in brackets to avoid compiler
error on this.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-04-17 14:35:17 +03:00
Adrian Warecki 902b1e5817 lib_manager: modules: move native lib support to lib_manager
Moved module type identification to lib_manager. Since llext modules place
the buildinfo structure in a separate section, API version verification has
been moved to llext_manager. Thanks to these changes, the Processing Module
Adapter is used only by IADK modules as intended. This commit also fixes an
issue with the modules_free function not being called for native modules.

Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-04-17 14:34:58 +03:00
Serhiy Katsyuba 784da5468e detect_test: Do not overwrite supplied threshold
Default threshold should be applied only if it was not already set
via IPC4_DETECT_TEST_SET_CONFIG call.

Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com>
2024-04-17 14:34:04 +03:00
Ranjani Sridharan c77a4feb2f topology2: pcm_caps: Remove defaults for rate_min/rate_max
Use 'rates' instead to specify that 48K is the default supported rate.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
2024-04-17 09:15:32 +03:00
Kai Vehmanen 918eff3dab platform: tigerlake: remove unused driver headers
Remove leftover driver headers that are no longer used.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-04-17 09:13:30 +03:00
Kai Vehmanen 7111ed266d platform: mtl: fix SSP DAI count
Fix the SSP DAI count to 3.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-04-17 09:12:03 +03:00
Guennadi Liakhovetski c5230a9f0d smart-amp-test: add support for the Cadence toolchain
The Cadence Xtensa cross-toolchain cannot build shared libraries,
when using it we build relocatable ELF objects instead. Update
smart-amp-test to support both formats.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-04-16 15:30:02 +01:00
Guennadi Liakhovetski 30b9470afa rimage: add support for relocatable objects
Relocatable ELF objects don't contain segments, update rimage to
prevent it from aborting in such cases.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-04-16 15:30:02 +01:00
Guennadi Liakhovetski ed33af4d33 llext: add support for building relocatable modules
Add support for relocatable objects to the llext module build system.
In such builds no ELF segments are created, so we need to process all
sections individually.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-04-16 15:30:02 +01:00
Guennadi Liakhovetski 132fdafbf4 llext: check whether the first instance is initialised
We need to tell Zephyr whether or not to perform local relocations.
Check persistent library data to distinguish the first instantiation
from the following ones.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-04-16 15:30:02 +01:00
Guennadi Liakhovetski 9dca9832d8 llext: use data size from Zephyr
Some image formats, notably relocatable objects, don't create ELF
segments. To work around this use the object data size, calculated by
Zephyr.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-04-16 15:30:02 +01:00
Guennadi Liakhovetski f9c22377a0 llext: avoid copying 32KiB of meaningless data
We're skipping unused 0x8000 bytes of data at the beginning of the
module, so we have to reduce the amount of data to be copied
accordingly.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
2024-04-16 15:30:02 +01:00
Tobiasz Dryjanski 821f961fba smart_amp_test: fix crash due to different source formats
Smart amp test chooses a process function based on the sink only. Because
of this, there's a possibility that one of the sources has a 16bit format,
which can't be safely processed by the 32bit process function. The crash
only happened when dai_copier sent one less sample than usual to the
smart_amp. This makes total sample count an odd number, making the data in
the audio_stream buffer misaligned.

This patch changes the prepare function of smart_amp_test to consider all
the sources and sinks while deciding which process function to use.

Signed-off-by: Tobiasz Dryjanski <tobiaszx.dryjanski@intel.com>
2024-04-16 12:42:44 +01:00
Seppo Ingalsuo a485f27757 Tools: Topology2: Add build of 96 kHz HDA topologies
The development topologies are with -/2ch/4ch DMIC for cavs25
and ace1 platforms for testing HDA with 96 kHz rate.

The build topologies names are:
	- sof-hda-generic-cavs25-4ch-48k-96k
	- sof-hda-generic-cavs25-2ch-48k-96k
	- sof-hda-generic-cavs25-4ch-96k
	- sof-hda-generic-cavs25-2ch-96k
	- sof-hda-generic-ace1-4ch-48k-96k
	- sof-hda-generic-ace1-2ch-48k-96k
	- sof-hda-generic-ace1-4ch-96k
	- sof-hda-generic-ace1-2ch-96k
	- sof-hda-generic-96k

The DMIC1 PCM ID with 96 kHz is set to 22 (capture ultrasonic).
PCM IDs definition is in:
https://github.com/thesofproject/sof/files/14021187/PCMDeviceList.txt

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-04-16 12:35:29 +01:00
Seppo Ingalsuo a22a3aa16b Tools: Topology2: Add other rates support for HDA generic
This patch modifies cavs-mixin-mixout-hda.conf with added input
and output format attributes for in_rate and out_rate. The bit_depth
attributes need to be added to as well to avoid corrupt audio.

The HDA_ANALOG_CAPTURE_RATE and HDA_ANALOG_PLAYBACK_RATE are by default
set to 48000. The topologies' characteristics are not changed with
this patch.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-04-16 12:35:29 +01:00
Seppo Ingalsuo dabb9b4fe9 Tools: Topology2: Add build of test topologies with DMIC1 enabled
Topologies with DMIC1 passthrough capture are added to development
directory with 16 and 96 kHz rates. Also a topology with DMIC0
changed to 96 kHz is added as example to test DMIC0 with other
than default rate.

The new topologies are:
	- sof-hda-generic-cavs25-4ch-48k-16k
	- sof-hda-generic-ace1-4ch-48k-16k
	- sof-mtl-sdw-cs42l42-l0-max98363-l2-4ch-48k-16k
	- sof-mtl-sdw-cs42l42-l0-max98363-l2-4ch-48k-96k
	- sof-mtl-sdw-cs42l42-l0-max98363-l2-4ch-96k
	- sof-mtl-max98360a-rt5682-4ch-48k-16k
	- sof-mtl-max98360a-rt5682-4ch-48k-96k

The DMIC1 PCM ID with 96 kHz is set to 22 (capture ultrasonic).
PCM IDs definition is in:
https://github.com/thesofproject/sof/files/14021187/PCMDeviceList.txt

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-04-16 12:35:29 +01:00
Seppo Ingalsuo 32050ba5aa Tools: Topology2: Add pass-through capture for DMIC1
This patch optionally includes dmic1-passthrough.conf if
DMIC1_ENABLE is set in topologies build to passthrough.

The sample rate of DMIC1 DAI can be set to 8 - 96 kHz with
macro DMIC1_RATE.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-04-16 12:35:29 +01:00
Seppo Ingalsuo ccf80dbdfc Tools: Topology2: Use rate definition in dmic-generic.conf
The added DMIC0_RATE allows to use the DAI, pipelines, and PCM with
any supported rate for DMIC in range 8 - 96 kHz. E.g. configure
DMIC0 to 96 kHz.

There is no change to existing functionality with default 48 kHz rate.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-04-16 12:35:29 +01:00
Seppo Ingalsuo bc7b29321e Tools: Topology2: Add format to all widgets in dmic-generic.conf
The input audio format and output audio format definitions are
missing for the copiers and IIR. The formats are added in
preparation to be able to set non-default sample rate for all
widgets.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-04-16 12:35:29 +01:00
Seppo Ingalsuo 20c7c7963f Tools: Topology2: Add DMIC1 defaults definitions
The needed defaults for DMIC1 for PCM ID and sample rate are added
similarly as for DMIC0 for later use. DMIC1 related pipelines are
not used by default so DMIC1_ENABLE is set to false.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-04-16 12:35:29 +01:00
Kai Vehmanen 537b0b321c platform: remove platform/drivers/idc.h for Intel platforms
For Zephyr builds, only definition needed from platform/drivers/idc.h
was prototype for idc_send_msg(). There's no need to keep the platform
layer just for this, so add the definition to rtos/idc.h for Zephyr
builds, and remove the platform/drivers/idc.h for all Intel platforms.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-04-16 14:12:34 +03:00
Kai Vehmanen fea70bd307 idc: zephyr_idc: implement idc_send_msg for non-multicore platforms
Ensure idc_send_msg() is implemented for all platforms linking
zephyr_idc. For non-multicore, idc_send_msg() will return -ENOTSUP
error.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-04-16 14:12:34 +03:00
Kai Vehmanen ef6e86a527 ipc: ipc4: remove use of platform/drivers/alh.h
Definitions of XTOS ALH driver interface are no longer used in
SOF tree. Remove the unnecessary inclusion in ipc4 dai.c, and all
instances of the platform alh.h header.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-04-16 09:02:33 +01:00
Kai Vehmanen 834f8cef7d ipc4: dai: drop code for XTOS ALH drivers
Drop support for XTOS drivers for Intel ALH DAI.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-04-16 09:02:33 +01:00
Kai Vehmanen 0db7caa7b1 platform: remove drivers/interrupt.h for Intel platforms
The interrupt.h interface is no longer used by any Intel platform
as all drivers have been replaced with native Zephyr drivers, so these
definitions are no longer needed.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-04-16 02:59:55 +03:00
Laurentiu Mihalcea c592f78e25 module: cadence: don't return on non-fatal error
Assuming the following pipeline:

   HOST ---> MA (CADENCE [MP3 DECODER]) ---> DAI

for native Zephyr SOF, data is first copied from the host
component to MA and then from Linux to the host component.
This means that the first chunk of data will be 0s (since
the host DMA buffer is zero'd via host_prepare()) instead
of useful data. Because of this, the `XA_CMD_TYPE_INIT_PROCESS`
command will return a non-fatal error (i.e:
`XA_MP3DEC_EXECUTE_NONFATAL_NEXT_SYNC_NOT_FOUND`). This
is not the case for non-native SOF since data is first copied
from Linux to host and then from host to MA so the aforementioned
command will get actual data instead of 0s.

Instead of having to alter the flow of data for native Zephyr
SOF (i.e: change the order in which data is copied), which
could impact other components and bits of the firmware, the
fix is to not return if the command returns a non-fatal error.
This way, the first chunk (i.e: the 0s) will be consumed and
the processing can start with the next chunk.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
2024-04-15 20:03:37 +03:00
Tomasz Leman d534df477f pipeline: graph: Use hex format for component IDs in graph logs
Update the logging statements in pipeline-graph.c to display component IDs
in hexadecimal format. This change ensures consistency with other logging
within the system and improves the clarity of the logs when tracking
component IDs during debugging sessions.

Signed-off-by: Tomasz Leman <tomasz.m.leman@intel.com>
2024-04-15 14:43:50 +01:00
Tomasz Leman 4a6ca60060 ipc4: helper: Convert component ID logs to hexadecimal format
Switch component ID logging to hexadecimal in ipc4/helper.c to align with
the rest of the system's logging conventions. This enhances consistency
and aids in debugging by matching the component ID format used in other
diagnostic tools.

Signed-off-by: Tomasz Leman <tomasz.m.leman@intel.com>
2024-04-15 14:43:50 +01:00
Tomasz Leman af131ae03f pipeline: params: Display component IDs in hex format in pipeline logs
Standardize component ID logging by displaying them in hexadecimal
format across all pipeline logs. This change aligns the component ID
representation with other parts of the firmware logs where hexadecimal
is used, facilitating quicker cross-referencing and searchability for
specific components during debugging.

Signed-off-by: Tomasz Leman <tomasz.m.leman@intel.com>
2024-04-15 14:43:50 +01:00
Tomasz Leman ff4daf1ae0 ipc4: helper: Use hex format for component IDs in ipc-helper logs
Unify the logging format for component IDs by converting them to
hexadecimal in ipc-helper.c. This change ensures consistency with other
log entries and improves the ease of identifying components when
cross-referencing with other debugging outputs that use hex notation for
component IDs.

Signed-off-by: Tomasz Leman <tomasz.m.leman@intel.com>
2024-04-15 14:43:50 +01:00
Seppo Ingalsuo 660e27809e Tools: Topology2: Add include of mtl.conf for LNL HDA generic
This quick fix avoids build of NHLT blob for the default (TGL)
for LNL HDA generic platform.

The DMIC part of NHLT from TGL is not suitable for LNL, while a
blob for MTL can be used. A proper lnl.conf will be added later.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
2024-04-15 14:09:04 +01:00
Kai Vehmanen e9b238f826 xtos: perf_cnt: use correct timing_counter_get()
Do not use arch_timing_counter() directly, but instead use
the public timing_counter_get().

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2024-04-15 13:54:01 +01:00
Adrian Bonislawski 031619c526 boards: mtl: enable KCPS dynamic clock control
This will enable dynamic clock control based on KCPS budget

Signed-off-by: Adrian Bonislawski <adrian.bonislawski@intel.com>
2024-04-15 13:48:33 +01:00
Krzysztof Frydryk 5f90a88dcb platform: register proper basefw CPS consumption on boot
On init, register consumption of 10MCPS for base fw
if CONFIG_KCPS_DYNAMIC_CLOCK_CONTROL enabled

Signed-off-by: Adrian Bonislawski <adrian.bonislawski@intel.com>
Signed-off-by: Krzysztof Frydryk <krzysztofx.frydryk@intel.com>
2024-04-15 13:48:33 +01:00