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>
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>
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>
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>
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>
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>
Register and unregister pipelines CPS consumption on run/pause
Signed-off-by: Adrian Bonislawski <adrian.bonislawski@intel.com>
Signed-off-by: Krzysztof Frydryk <krzysztofx.frydryk@intel.com>
+Squashed commits:
924f0d26db pipeline: print warning if 0 KCPS received
Signed-off-by: Adrian Bonislawski <adrian.bonislawski@intel.com>
7bb6e7ef3b pipeline: register CPS consumption for a proper core
Signed-off-by: Adrian Bonislawski <adrian.bonislawski@intel.com>
5f0c4e4c31 pipeline: make CPC data "opt-in" with fallback
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Such notification currently is used only in non-zephyr code (ll sched)
so it is safe to remove for MTL because of some idc issues
Signed-off-by: Adrian Bonislawski <adrian.bonislawski@intel.com>