Pipeline registers are located in memory windows0. FW needs
to update it with current stream position.
Currently we don't change stream_end_addr since we don't support
EOS. Will add support later.
Signed-off-by: Rander Wang <rander.wang@intel.com>
The tdfb is sending the direction information via the ctrl_data->chanv[]
which is valid in case of SOF_CTRL_TYPE_VALUE_CHAN_GET type.
Correct the message initialization to make sure that the message is
correctly parsed by the receiver.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Tasks in the INIT state aren't on the queue, calling
schedule_task_free() for them causes a panic due to the task counter
underrun. Don't try to dequeue such tasks.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Default behavior is still to clone the default Zephyr branch (main) but
this could be changed with just one line.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
Zero functional change.
Rename clone() to west_init_update() and build_all() to
build_platforms(). Also expand description of the west_init_update()
feature in the usage message and add a direct SHA1 fetch example.
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
These flags are required to prevent unwanted bugs in the ctl tool. They
have been used to detect an undefined behaviour instance which occurred
due to lack of a return value in a non-void function.
Signed-off-by: Paul Olaru <paul.olaru@nxp.com>
Most of the errors are unused variables, plus an unused label. Those are
benign.
One of the errors was the following:
/work/repos/sof/tools/ctl/ctl.c: In function ‘ctl_set_get’:
/work/repos/sof/tools/ctl/ctl.c:497:1: error: control reaches end of
non-void function [-Werror=return-type]
497 | }
| ^
This error had caused an undefined-behaviour-driven bug internally (an
error being displayed with a return code of 0, when it shouldn't have
been possible to display that message if the return code was 0). At line
614 of the old code, the message "Error: could not Set control, ret:0"
was displayed.
The errors only show up when you add -Wall -Werror to the compile
options of ctl, which I will do in the next commit.
Signed-off-by: Paul Olaru <paul.olaru@nxp.com>
The data via cdata->chanv is only valid if:
cdata->type == SOF_CTRL_TYPE_VALUE_CHAN_*
Likewise, the data is only valid via cdata->compv if:
cdata->type == SOF_CTRL_TYPE_VALUE_COMP_*
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
This patch optimizes the buffer copying and output scaling to
other format than int32_t. The main saving is from not using
read/write frag buffer access functions for every sample.
The saving of processing cycles consumption varies per platform
but a second order IIR stereo EQ on TGL shows 43% improvement for
average copy() duration.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Fix the documentation to match actual topology definition. The comments
did not include addition of mixers nor the capture PCMs. Also many
comments reflect a fixed core id that is no longer accurate.
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Primary core during going to D0i3 state disables all another cores
in platform_pg_int_handler() function. Before it secondary cores
should be prepared (disable interrupts, perform writeback) in order
to make proper restore flow after D0i3->D0 transition.
This commit adds cpu_secondary_cores_prepare_d0ix() function in
ipc_pm_gate() handler, which sends idc to secondary cores
with information that they should perform preparation for power down
in the next platform_wait_for_interrupt() invocation. In
platform_wait_for_interrupt() there is cpu_power_down_core()
invocation with CPU_POWER_DOWN_MEMORY_ON (performs writeback/invalidate,
disables interrupts), when proper flag is set.
Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
This commit:
- adds flags argument into scheduler_free function pointer in
scheduler_ops struct;
- adds SOF_SCHEDULER_FREE_IRQ_ONLY flag, which indicates to disable
only interrupts in scheduler_free() functions.
Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
This commit:
- adds flags argument to idc_free() function;
- adds IDC_FREE_IRQ_ONLY flags, which allows
idc_free() to disable only interrupts.
Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
In some multicore scenarios dsp can try to restore secondary core state
if all memory is still powered up and there was no external request
for a core shutdown before
For example multicore case with d0ix sleep where secondary core will be
put to sleep along with primary core and after wakeup there will be
a possibility to restore it
Signed-off-by: Adrian Bonislawski <adrian.bonislawski@intel.com>
Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
This will add missing secondary cores restore on wake up,
simple pm_runtime_get(PM_RUNTIME_DSP, PLATFORM_PRIMARY_CORE_ID)
in lps is not enough in multicore scenario
Signed-off-by: Adrian Bonislawski <adrian.bonislawski@intel.com>
LPS functionality is limited to the primary core
Signed-off-by: Adrian Bonislawski <adrian.bonislawski@intel.com>
Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
Two different pipeline state setting in windows.
(1) init -> pause -> reset
(2) init -> reset
we should do nothing for (1) and skip stop operation
for (2).
Signed-off-by: Rander Wang <rander.wang@intel.com>
Ipc3 set sched_id in topology but it is set in FW
for ipc4. Now initialize it when pipeline is set up.
Signed-off-by: Rander Wang <rander.wang@intel.com>
For mixin + mixout case, we use mixer to replace mixout
and skip mixin component. In this case we need to connect
the buffer between mixin and mixout to mixin then it can
be free when mixin is free.
Signed-off-by: Rander Wang <rander.wang@intel.com>
Add two classes to be used with dmic for nhlt conformance. Mic extension
includes snr and sensitivity values. Mic vendor config has multiple
values for defining the mic array geometry and mic positions.
Do not add tokens as these values are used currently only with nhlt
generation. Defining these classes in dmic is optional.
Signed-off-by: Jaska Uimonen <jaska.uimonen@intel.com>
This patch adds for the IIR equalized component a test with
comparison 100 ms of Octave generated output to output of the
component. The test signal is a full scale chirp signal. The
IIR response is both amplifying and attenuating to trigger as
much as possible issues with internal overflows.
All test data was generated by Octave script
cmocka_data_eq_iir.m. Re-run of script updates the used header
files the in cmocka tests directory.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
NXP platforms do not use signed firmware image for now. Add imx8ulp
to the list of unsigned firmware to fix build.
With this we fix the following build error
make[3]: Entering directory
'~/sof_dir/sof/build_imx8ulp_gcc'
[100%] Creating reproducible.ri
0x2e0 error: CSE Manifest magic number NOT found, instead: (Reef)
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
When an older kernel is used, we use the immediate stop. On some
platforms, we see an -EBUSY error that prevents the trigger stop from
working.
This patch adds a check to be 'bug-compatible' with previous releases
and older kernels. An additional fix would be to insert a poll timeout
to make sure the BUSY bit is cleared.
BugLink: https://github.com/thesofproject/sof/issues/4919
Fixes: 7e54f456e ('drivers: Intel: hda-dma: ensure DMA channel is idle after stop')
Suggested-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Always use "!" with array definitions so that items do not get
duplicated when arrays are merged when the conf file is included
multiple times.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>