Add support to handle platform specific extensions with
platform_basefw_get_large_config() and
platform_basefw_set_large_config(). These functions are called when
get/set handled is called with a parameter type not handled
in generic code.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Some of the IPC4 FW_CONFIG fields are platform specific and cannot be
filled with generic code.
Handle this data by adding a call to platform_basefw_fw_config()
and add an implementation for all current platforms with IPC4
support.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Pulls in the following patches relevant to SOF:
799a456c2586 nxp: imx8ulp: add audio-related nodes
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Added support for ipc4 query no 16. This makes it possible to get
information about the current basefw library.
Signed-off-by: Grzegorz Bernat <grzegorzx.bernat@intel.com>
This commit includes all necessary changes for switching
to timer domain and Zephyr native drivers on imx8 and imx8x.
This consists of:
1) Switching all imx8 topologies to timer domain.
2) Disabling Zephyr DMA domain
3) Various interrupt-related fixes via Kconfig-related
ifdef logic.
This commit includes all necessary changes for switching
to native Zephyr drivers on imx8/imx8x.
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
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>
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>
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>
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>
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>
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>
* 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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>